#!/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 "$@"