#!/bin/bash abort() { echo $1 exit 1 } cmd="$1" shift zit_setup() { ZIT_FILE="$1" shift test -f $ZIT_FILE || abort "No such file $ZIT_FILE" test $ZIT_FILE = "`basename $ZIT_FILE`" || abort "Sorry, Zit only works on files in the current directory" ZIT_DIR=".zit.$ZIT_FILE" } zit_init() { zit_setup $1 test -e $ZIT_DIR && abort "$ZIT_DIR exists, is $ZIT_FILE tracked already?" mkdir $ZIT_DIR && echo "Initializing Zit repository in $ZIT_DIR" test -d $ZIT_DIR || abort "Failed to create $ZIT_DIR" cd $ZIT_DIR git init || abort "Failed to initialize Git repository in $ZIT_DIR" ln ../$ZIT_FILE $ZIT_FILE || abort "Failed to link $ZIT_FILE into $ZIT_DIR" git add $ZIT_FILE || abort "Failed to add $ZIT_FILE" git commit "$@" || abort "Failed to make first commit for $ZIT_FILE" } case $cmd in init) zit_init $1 ;; esac