Added licensing information (GPLv2) and began importing completion code
from pass.
This commit is contained in:
94
src/bash-completion/sns
Normal file
94
src/bash-completion/sns
Normal file
@@ -0,0 +1,94 @@
|
||||
#!/bin/bash
|
||||
# Simple Note System, bash completion file
|
||||
# ========================================
|
||||
# Copyright (C) 2016, Jon Lewis <jon.lewis@xenami.net>
|
||||
# Simple Note System is licensed under the GPLv2. Please see LICENSE for more
|
||||
# information.
|
||||
#
|
||||
# **Notice**
|
||||
# This file was adapted from pass, the standard unix password manager under the
|
||||
# terms of the GPLv2 license. Pass may be found at https://passwordstore.org.
|
||||
#
|
||||
# The original file bore the following copyright notice:
|
||||
#
|
||||
# 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.
|
||||
|
||||
_sns_complete_entries () {
|
||||
prefix="${SNS_STORE_DIR:-$HOME/.config/sns/notes/}"
|
||||
suffix=".note"
|
||||
autoexpand=${1:-0}
|
||||
|
||||
local IFS=$'\n'
|
||||
local items=($(compgen -f $prefix$cur))
|
||||
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=( )
|
||||
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}")
|
||||
done
|
||||
}
|
||||
|
||||
_sns_complete_folders () {
|
||||
prefix="${SNS_STORE_DIR:-$HOME/.config/sns/notes/}"
|
||||
|
||||
local IFS=$'\n'
|
||||
local items=($(compgen -d $prefix$cur))
|
||||
for item in ${items[@]}; do
|
||||
[[ $item == $prefix.* ]] && continue
|
||||
COMPREPLY+=("${item#$prefix}/")
|
||||
done
|
||||
}
|
||||
|
||||
_sns_complete_keys () {
|
||||
local IFS=$'\n'
|
||||
# Extract names and email addresses from gpg --list-keys
|
||||
local keys="$(gpg2 --list-secret-keys --with-colons | cut -d : -f 10 | sort -u | sed '/^$/d')"
|
||||
COMPREPLY+=($(compgen -W "${keys}" -- ${cur}))
|
||||
}
|
||||
|
||||
_sns()
|
||||
{
|
||||
COMPREPLY=()
|
||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
local commands="--create --delete --edit --help --print --list --init"
|
||||
if [[ $COMP_CWORD -gt 1 ]]; then
|
||||
local lastarg="${COMP_WORDS[$COMP_CWORD-1]}"
|
||||
case "${COMP_WORDS[1]}" in
|
||||
--list)
|
||||
_sns_complete_folders
|
||||
--edit|--print)
|
||||
_sns_complete_entries
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
else
|
||||
COMPREPLY+=($(compgen -W "${commands}" -- ${cur}))
|
||||
|
||||
fi
|
||||
}
|
||||
|
||||
complete -o filenames -o nospace -F _sns sns
|
||||
Reference in New Issue
Block a user