#!/usr/bin/env bash

REMOTE=$(pwd)/demo_repo

unset GIT_DIR

# Helper functions
set_user() {
  export GIT_AUTHOR_EMAIL="$1@chromium.org"
  export GIT_AUTHOR_NAME="$1"
  export GIT_COMMITTER_EMAIL="$1@chromium.org"
  export GIT_COMMITTER_NAME="$1"
}
set_user 'local'


# increment time by X seconds
TIME=1397119976
tick() {
  TIME=$[$TIME + $1]
  export GIT_COMMITTER_DATE="$TIME +0000"
  export GIT_AUTHOR_DATE="$TIME +0000"
}
tick 0

# a commit
c() {
  silent git commit --allow-empty -m "$1"
  tick 10
}

praw() {
  echo -e "\x1B[37;1m$ $@\x1B[m"
}

# print a visible command (but don't run it)
pcommand() {
  praw "$(python -c '\
    import sys, pipes; \
    print " ".join(map(pipes.quote, sys.argv[1:]))' "$@")"
}

# run a visible command
run() {
  pcommand "$@"
  "$@"
}

comment() {
  echo "###COMMENT### $@"
}

# run a silent command
silent() {
  if [[ $DEBUG ]]
  then
    "$@"
  else
    "$@" > /dev/null 2> /dev/null
  fi
}

# add a file with optionally content
add() {
  local CONTENT=$2
  if [[ ! $CONTENT ]]
  then
    CONTENT=$(python -c 'import random, string; \
      print "".join(random.sample(string.lowercase, 16))')
  fi
  echo "$CONTENT" > $1
  silent git add $1
}

# Add a special callout marker at the given line offset to indicate to
# filter_demo_output.py to add a callout at that offset.
callout() {
  echo -e "\x1b[${1}c"
}
