diff --git a/git/.local/bin/gitignore b/git/.local/bin/gitignore index 26cf5ce..655f08c 100755 --- a/git/.local/bin/gitignore +++ b/git/.local/bin/gitignore @@ -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 "$@"