#!/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.
#
# Enables completion for zsh in git/.config/shell/zshrc.d/_gitignore_completions.zsh

__get_items() {
  if [ "$savetofile" = "true" ]; then
    __call_url "$@" | tee .gitignore
  else
    __call_url "$@"
  fi
}

__call_url() {
  IFS=","
  curl -L -s https://www.gitignore.io/api/"$*"
}

gitignore() {
  # just print to stdout or save locally?
  if [ "$1" = "-f" ]; 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
  else
    __get_items "$@"
  fi
}

gitignore "$@"