Marty Oehme
d411be708e
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.
80 lines
2.0 KiB
Bash
Executable File
80 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
#
|
|
# Adds call to gitignore.sh api to automatically
|
|
# generate a .gitignore file with the individual arguments
|
|
# passed in included as ignored packages.
|
|
#
|
|
# Pass in -f as first argument to save the file as .gitignore
|
|
# in the current directory in addition to printing to stdout.
|
|
# 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 "$@" >>.gitignore
|
|
else
|
|
__call_url "$@"
|
|
fi
|
|
}
|
|
|
|
__call_url() {
|
|
IFS=","
|
|
curl -L -s https://www.gitignore.io/api/"$*"
|
|
}
|
|
|
|
gitignore() {
|
|
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
|
usage
|
|
exit 0
|
|
# just print to stdout or save locally?
|
|
elif [ "$1" = "-f" ] || [ "$1" = "--file" ]; then
|
|
savetofile=true
|
|
shift
|
|
fi
|
|
|
|
IFS=","
|
|
if [ "$#" -eq 0 ]; then
|
|
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 "$@"
|