summaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorivan-boikov <ik.boikov.public@protonmail.com>2022-06-06 21:26:07 +0200
committerivan-boikov <ik.boikov.public@protonmail.com>2022-06-06 21:26:07 +0200
commitf6875e732fb87ba27db92c52723aa9a2fd730f5e (patch)
tree4bbc355ff9238396d0fa90e553e9fcf464984f30 /shell
parent60cf45cc0851ba591107ba6be722964c4531efd0 (diff)
1
Diffstat (limited to 'shell')
-rwxr-xr-xshell/.config/shell/profile164
1 files changed, 158 insertions, 6 deletions
diff --git a/shell/.config/shell/profile b/shell/.config/shell/profile
index 887aaa2..aaa039f 100755
--- a/shell/.config/shell/profile
+++ b/shell/.config/shell/profile
@@ -11,12 +11,16 @@
#umask 022
# if running bash
-if [ -n "$BASH_VERSION" ]; then
- # include .bashrc if it exists
- if [ -f "$HOME/.bashrc" ]; then
- . "$HOME/.bashrc"
- fi
-fi
+#if [ -n "$BASH_VERSION" ]; then
+# # include .bashrc if it exists
+# if [ -f "$HOME/.bashrc" ]; then
+# . "$HOME/.bashrc"
+# fi
+#fi
+
+[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc"
+[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc"
+[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc"
export PATH="$PATH:$(du -L "$HOME/.local/bin" | cut -f2 | paste -sd ':')"
#export PATH="$PATH:$HOME/.local/bin"
@@ -127,3 +131,151 @@ fi
# start graphical server on user's current tty if not already running.
#[ "$(tty)" = "/dev/tty1" ] && ! pidof -s Xorg >/dev/null 2>&1 && exec startx "$XINITRC"
+
+
+# TODO MOVE SOMEWHERE ELSE
+
+# completion file for bash
+
+# Copyright (C) 2012 - 2014 Jason A. Donenfeld <Jason@zx2c4.com> and
+# Brian Mattern <rephorm@rephorm.com>. All Rights Reserved.
+# This file is licensed under the GPLv2+. Please see COPYING for more information.
+
+_pass_complete_entries () {
+ local prefix="${PASSWORD_STORE_DIR:-$HOME/.password-store/}"
+ prefix="${prefix%/}/"
+ local suffix=".gpg"
+ local autoexpand=${1:-0}
+
+ local IFS=$'\n'
+ local items=($(compgen -f $prefix$cur))
+
+ # Remember the value of the first item, to see if it is a directory. If
+ # it is a directory, then don't add a space to the completion
+ local firstitem=""
+ # Use counter, can't use ${#items[@]} as we skip hidden directories
+ local i=0 item
+
+ for item in ${items[@]}; do
+ [[ $item =~ /\.[^/]*$ ]] && continue
+
+ # if there is a unique match, and it is a directory with one entry
+ # autocomplete the subentry as well (recursively)
+ if [[ ${#items[@]} -eq 1 && $autoexpand -eq 1 ]]; then
+ while [[ -d $item ]]; do
+ local subitems=($(compgen -f "$item/"))
+ local filtereditems=( ) item2
+ for item2 in "${subitems[@]}"; do
+ [[ $item2 =~ /\.[^/]*$ ]] && continue
+ filtereditems+=( "$item2" )
+ done
+ if [[ ${#filtereditems[@]} -eq 1 ]]; then
+ item="${filtereditems[0]}"
+ else
+ break
+ fi
+ done
+ fi
+
+ # append / to directories
+ [[ -d $item ]] && item="$item/"
+
+ item="${item%$suffix}"
+ COMPREPLY+=("${item#$prefix}")
+ if [[ $i -eq 0 ]]; then
+ firstitem=$item
+ fi
+ let i+=1
+ done
+
+ # The only time we want to add a space to the end is if there is only
+ # one match, and it is not a directory
+ if [[ $i -gt 1 || ( $i -eq 1 && -d $firstitem ) ]]; then
+ compopt -o nospace
+ fi
+}
+
+_pass_complete_folders () {
+ local prefix="${PASSWORD_STORE_DIR:-$HOME/.password-store/}"
+ prefix="${prefix%/}/"
+
+ local IFS=$'\n'
+ local items=($(compgen -d $prefix$cur))
+ for item in ${items[@]}; do
+ [[ $item == $prefix.* ]] && continue
+ COMPREPLY+=("${item#$prefix}/")
+ done
+}
+
+_pass_complete_keys () {
+ local GPG="gpg"
+ command -v gpg2 &>/dev/null && GPG="gpg2"
+
+ local IFS=$'\n'
+ # Extract names and email addresses from gpg --list-keys
+ local keys="$($GPG --list-secret-keys --with-colons | cut -d : -f 10 | sort -u | sed '/^$/d')"
+ COMPREPLY+=($(compgen -W "${keys}" -- ${cur}))
+}
+
+_pass()
+{
+ COMPREPLY=()
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+ local commands="init ls find grep show insert generate edit rm mv cp git help version ${PASSWORD_STORE_EXTENSION_COMMANDS[*]}"
+ if [[ $COMP_CWORD -gt 1 ]]; then
+ local lastarg="${COMP_WORDS[$COMP_CWORD-1]}"
+ case "${COMP_WORDS[1]}" in
+ init)
+ if [[ $lastarg == "-p" || $lastarg == "--path" ]]; then
+ _pass_complete_folders
+ compopt -o nospace
+ else
+ COMPREPLY+=($(compgen -W "-p --path" -- ${cur}))
+ _pass_complete_keys
+ fi
+ ;;
+ ls|list|edit)
+ _pass_complete_entries
+ ;;
+ show|-*)
+ COMPREPLY+=($(compgen -W "-c --clip" -- ${cur}))
+ _pass_complete_entries 1
+ ;;
+ insert)
+ COMPREPLY+=($(compgen -W "-e --echo -m --multiline -f --force" -- ${cur}))
+ _pass_complete_entries
+ ;;
+ generate)
+ COMPREPLY+=($(compgen -W "-n --no-symbols -c --clip -f --force -i --in-place" -- ${cur}))
+ _pass_complete_entries
+ ;;
+ cp|copy|mv|rename)
+ COMPREPLY+=($(compgen -W "-f --force" -- ${cur}))
+ _pass_complete_entries
+ ;;
+ rm|remove|delete)
+ COMPREPLY+=($(compgen -W "-r --recursive -f --force" -- ${cur}))
+ _pass_complete_entries
+ ;;
+ git)
+ COMPREPLY+=($(compgen -W "init push pull config log reflog rebase" -- ${cur}))
+ ;;
+ esac
+
+ # To add completion for an extension command define a function like this:
+ # __password_store_extension_complete_<COMMAND>() {
+ # COMPREPLY+=($(compgen -W "-o --option" -- ${cur}))
+ # _pass_complete_entries 1
+ # }
+ #
+ # and add the command to the $PASSWORD_STORE_EXTENSION_COMMANDS array
+ if [[ " ${PASSWORD_STORE_EXTENSION_COMMANDS[*]} " == *" ${COMP_WORDS[1]} "* ]] && type "__password_store_extension_complete_${COMP_WORDS[1]}" &> /dev/null; then
+ "__password_store_extension_complete_${COMP_WORDS[1]}"
+ fi
+ else
+ COMPREPLY+=($(compgen -W "${commands}" -- ${cur}))
+ _pass_complete_entries 1
+ fi
+}
+
+complete -o filenames -F _pass pass