#!/usr/bin/env bash

exec >"$HOME/tmp/backup.log" 2>&1

source .bashrc

set -ex

BUCKET="${1?GCS bucket name is required}"

mkdir -p "$HOME/tmp"

ROUND="$(($(date +%_j) % 10))"

/bin/tar -cp \
	--exclude="$HOME/pkg" \
	--exclude="$HOME/tmp" \
	--exclude="$HOME/Android/Sdk" \
	--exclude="$HOME/Downloads" \
	--exclude="$HOME/.android/avd" \
	--exclude="$HOME/.cache" \
	--exclude="$HOME/.wine" \
	--exclude="$HOME/.gvfs" \
	--exclude="$HOME/.npm" \
	--exclude="$HOME/.gem" \
	--exclude="$HOME/.pub-cache" \
	--exclude="$HOME/.bundle" \
	--exclude="$HOME/.dartServer" \
	--exclude="$HOME/.local/share/Trash" \
	--exclude="$HOME/.config/google-chrome" \
	--exclude="$HOME/.config/chrome-remote-desktop" \
	--exclude="$HOME/.config/Code" \
	--exclude="$HOME/.vscode" \
	--exclude="$HOME/.AndroidStudio*" \
	--exclude="$HOME/.config/gzdoom" \
	--exclude="$HOME/VirtualBox VMs" \
	--exclude="$HOME/.vagrant.d" \
	--exclude=build \
	--exclude=.gradle \
	--exclude=node_modules \
	--exclude=bower_components \
	"$HOME" |
gsutil cp - \
	"gs://$BUCKET/$(hostname)/$(whoami)/backup-$ROUND.tar"

if [ $# -eq 2 ]; then
	PROJECT="$2"
	# Also backup Firebase Database.
	firebase --project="$PROJECT" database:get / | \
		gzip | \
		gsutil cp - \
		"gs://$BUCKET/$PROJECT/firebase-database-$ROUND.gz"
fi
