#!/bin/bash
# A wrapper for system git that prevents commands such as `clone` or `fetch` to be
# executed in testing. It logs commands to "~/.history" so afterwards it can be
# asserted that they ran.

command="$1"
[ "$command" = "config" ] || echo git "$@" >> "$HOME"/.history

case "$command" in
  "--list-cmds="* )
    echo add
    echo branch
    echo commit
    ;;
  "clone" | "fetch" | "pull" | "push" )
    # don't actually execute these commands
    exit
    ;;
  * )
    # note: `submodule add` also initiates a clone, but we work around it
    if [ "$command $2 $3" = "remote add -f" ]; then
      subcommand=$2
      shift 3
      exec "$HUB_SYSTEM_GIT" $command $subcommand "$@"
    else
      exec "$HUB_SYSTEM_GIT" "$@"
    fi
    ;;
  esac
