Add gitignore usage information, fix empty api calls

Added general usage information. Made sure gitignore api is never called
without any arguments.

Made script fzf aware -- if it finds fzf it can be invoked without
arguments, if it does not it will display usage information instead.
This commit is contained in:
Marty Oehme 2020-02-06 15:07:55 +01:00
parent 84aae314f5
commit d411be708e
1 changed files with 40 additions and 7 deletions

View File

@ -9,11 +9,18 @@
# Will *overwrite* any previous .gitignore file that exists in
# current directory.
#
# When called without arguments will load all possible arguments
# as fzf searchable list if fzf is in path.
#
# Enables completion for zsh in git/.config/shell/zshrc.d/_gitignore_completions.zsh
__get_items() {
if [ "$1" = "" ]; then
echo "gitignore definition generation needs at least one argument."
exit 1
fi
if [ "$savetofile" = "true" ]; then
__call_url "$@" | tee .gitignore
__call_url "$@" >>.gitignore
else
__call_url "$@"
fi
@ -25,22 +32,48 @@ __call_url() {
}
gitignore() {
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
usage
exit 0
# just print to stdout or save locally?
if [ "$1" = "-f" ]; then
elif [ "$1" = "-f" ] || [ "$1" = "--file" ]; then
savetofile=true
shift
fi
IFS=","
if [ "$#" -eq 0 ]; then
for item in $(__get_items list); do
echo "$item"
done | fzf --multi --ansi | paste -s -d "," - |
{ read -r result && __get_items "$result"; }
cat
if type fzf >/dev/null 2>&1; then
for item in $(__get_items list); do
echo "$item"
done | fzf --multi --ansi | paste -s -d "," - |
{ read -r result && __get_items "$result"; }
else
usage
fi
else
__get_items "$@"
fi
}
usage() {
printf "%s\n" \
"" \
" gitignore Quickly generate a gitignore definition." \
"" \
" Usage: gitignore [-h] [vim] [linux] [javascript] [...]" \
"" \
" Arguments:" \
"" \
" -h | --help Print out this help." \
"" \
" -f | --file Append gitignore definition to .gitignore file" \
" instead of stdout." \
"" \
" Arguments will be passed along to gitignore.io for parsing and " \
" gitignore definition generation. By default only prints to stdout." \
"" \
""
}
gitignore "$@"