#!/usr/bin/env bash

set -euo pipefail

root="$(git rev-parse --show-toplevel)"

base_url="https://git.alecodes.page/api/v1/gitignore/templates"

query="$*"

list_available() {
  curl -Ssl $base_url | jq -r '.[]'
}

if [[ -z $query ]]; then
  list_available
  exit 0
fi

tmp_file="$(mktemp)"

for template in $query; do
  # Capitalize the string
  template=${template,,}
  template=${template^}

  response="$(curl -Ssl "$base_url/$template")"
  name="$(echo "$response" | jq -r '.name')"
  content="$(echo "$response" | jq -r '.source')"

  if [[ "$content" == "null" ]]; then
    echo "Template not found, available options:"
    list_available
    exit 1
  fi

  printf "\n### %s\n\n%s\n\n" "$name" "$content" >>"$tmp_file"
done

sed -i -ne "/#### -- TEMPLATES BEGIN -- ####/ {p; r $tmp_file" -e ':a; n; /#### -- TEMPLATES END -- ####/ {p; b}; ba}; p' "$root/.gitignore"

rm "$tmp_file"
