Merge pull request #2001 from gaelicWizard/plugin-dirs

Plugin/dirs: use `$XDG_STATE_HOME`
pull/2007/head
Noah Gorny 2022-01-07 08:42:24 +02:00 committed by GitHub
commit c060eb46ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 64 additions and 49 deletions

View File

@ -88,6 +88,7 @@ plugins/available/basher.plugin.bash
plugins/available/blesh.plugin.bash plugins/available/blesh.plugin.bash
plugins/available/cmd-returned-notify.plugin.bash plugins/available/cmd-returned-notify.plugin.bash
plugins/available/direnv.plugin.bash plugins/available/direnv.plugin.bash
plugins/available/dirs.plugin.bash
plugins/available/docker-machine.plugin.bash plugins/available/docker-machine.plugin.bash
plugins/available/git-subrepo.plugin.bash plugins/available/git-subrepo.plugin.bash
plugins/available/git.plugin.bash plugins/available/git.plugin.bash

View File

@ -1,3 +1,4 @@
# shellcheck shell=bash
# Directory stack navigation: # Directory stack navigation:
# #
# Add to stack with: pu /path/to/directory # Add to stack with: pu /path/to/directory
@ -32,74 +33,87 @@ alias pu="pushd"
alias po="popd" alias po="popd"
function dirs-help() { function dirs-help() {
about 'directory navigation alias usage' about 'directory navigation alias usage'
group 'dirs' group 'dirs'
echo "Directory Navigation Alias Usage" echo "Directory Navigation Alias Usage"
echo echo
echo "Use the power of directory stacking to move" echo "Use the power of directory stacking to move"
echo "between several locations with ease." echo "between several locations with ease."
echo echo
echo "d : Show directory stack." echo "d : Show directory stack."
echo "po : Remove current location from stack." echo "po : Remove current location from stack."
echo "pc : Adds current location to stack." echo "pc : Adds current location to stack."
echo "pu <dir>: Adds given location to stack." echo "pu <dir>: Adds given location to stack."
echo "1 : Change to stack location 1." echo "1 : Change to stack location 1."
echo "2 : Change to stack location 2." echo "2 : Change to stack location 2."
echo "3 : Change to stack location 3." echo "3 : Change to stack location 3."
echo "4 : Change to stack location 4." echo "4 : Change to stack location 4."
echo "5 : Change to stack location 5." echo "5 : Change to stack location 5."
echo "6 : Change to stack location 6." echo "6 : Change to stack location 6."
echo "7 : Change to stack location 7." echo "7 : Change to stack location 7."
echo "8 : Change to stack location 8." echo "8 : Change to stack location 8."
echo "9 : Change to stack location 9." echo "9 : Change to stack location 9."
} }
# Add bookmarking functionality # Add bookmarking functionality
# Usage: # Usage:
if [ ! -f ~/.dirs ]; then # if doesn't exist, create it : "${BASH_IT_DIRS_BKS:=${XDG_STATE_HOME:-~/.local/state}/bash_it/dirs}"
touch ~/.dirs if [[ -f "${BASH_IT_DIRS_BKS?}" ]]; then
# shellcheck disable=SC1090
source "${BASH_IT_DIRS_BKS?}"
elif [[ -f ~/.dirs ]]; then
mv -vn ~/.dirs "${BASH_IT_DIRS_BKS?}"
# shellcheck disable=SC1090
source "${BASH_IT_DIRS_BKS?}"
else else
source ~/.dirs touch "${BASH_IT_DIRS_BKS?}"
fi fi
alias L='cat ~/.dirs' alias L='cat "${BASH_IT_DIRS_BKS?}"'
# Goes to destination dir, otherwise stay in the dir # Goes to destination dir, otherwise stay in the dir
G () { function G() {
about 'goes to destination dir' about 'goes to destination dir'
param '1: directory' param '1: directory'
example '$ G ..' example '$ G ..'
group 'dirs' group 'dirs'
cd "${1:-${PWD}}" ; cd "${1:-${PWD}}" || return
} }
S () { function S() {
about 'save a bookmark' about 'save a bookmark'
param '1: bookmark name' param '1: bookmark name'
example '$ S mybkmrk' example '$ S mybkmrk'
group 'dirs' group 'dirs'
[[ $# -eq 1 ]] || { echo "${FUNCNAME[0]} function requires 1 argument"; return 1; } [[ $# -eq 1 ]] || {
echo "${FUNCNAME[0]} function requires 1 argument"
return 1
}
sed "/$@/d" ~/.dirs > ~/.dirs1; sed "/$1/d" "${BASH_IT_DIRS_BKS?}" > "${BASH_IT_DIRS_BKS?}.new"
\mv ~/.dirs1 ~/.dirs; command mv "${BASH_IT_DIRS_BKS?}.new" "${BASH_IT_DIRS_BKS?}"
echo "$@"=\""${PWD}"\" >> ~/.dirs; echo "$1"=\""${PWD}"\" >> "${BASH_IT_DIRS_BKS?}"
source ~/.dirs ; # shellcheck disable=SC1090
source "${BASH_IT_DIRS_BKS?}"
} }
R () { function R() {
about 'remove a bookmark' about 'remove a bookmark'
param '1: bookmark name' param '1: bookmark name'
example '$ R mybkmrk' example '$ R mybkmrk'
group 'dirs' group 'dirs'
[[ $# -eq 1 ]] || { echo "${FUNCNAME[0]} function requires 1 argument"; return 1; } [[ $# -eq 1 ]] || {
echo "${FUNCNAME[0]} function requires 1 argument"
return 1
}
sed "/$@/d" ~/.dirs > ~/.dirs1; sed "/$1/d" "${BASH_IT_DIRS_BKS?}" > "${BASH_IT_DIRS_BKS?}.new"
\mv ~/.dirs1 ~/.dirs; command mv "${BASH_IT_DIRS_BKS?}.new" "${BASH_IT_DIRS_BKS?}"
} }
alias U='source ~/.dirs' # Update bookmark stack alias U='source "${BASH_IT_DIRS_BKS?}"' # Update bookmark stack