#!/bin/bash # # Setup a new code project. # # TODO: should work for more use cases. # Parameters BASENAME="`basename $0`" CODE="$HOME/code" PROJECT="$1" REPO="$2" BOOTSTRAP="git://git.sarava.org/puppet-bootstrap.git" TEMPLATES="git://git.sarava.org/templates.git" # Syntax check if [ -z "$PROJECT" ]; then echo "usage: $BASENAME [url]" exit 1 fi # Clone or initialize if [ ! -z "$REPO" ]; then git clone $URL $CODE/$PROJECT else echo "Initializing $PROJECT..." mkdir -p $CODE/$PROJECT ( cd $CODE/$PROJECT touch .gitignore echo "$PROJECT" > README.md echo "=========`echo $PROJECT | sed -e 's|.|=|g'`" >> README.md echo "" >> README.md echo "This is the $PROJECT repository." >> README.md echo "TODO" > TODO.md echo "====" >> TODO.md echo "" >> TODO.md echo "* Nothing here? :P" >> TODO.md git init git add . git commit -m "Initial import" if which git-hooks &> /dev/null; then echo "" echo "Installing hooks..." git hooks --install fi git branch develop if [ -e "/usr/lib/git-core/git-flow" ]; then echo "" echo "Setting up git-flow..." git flow init -d fi ) fi # Ikiwiki integration ( if [ ! -d "$HOME/file/templates" ]; then echo "Please clone $TEMPLATES into $HOME/file/templates" else echo "" echo "Setting up ikiwiki integration..." cd $CODE/$PROJECT git checkout develop cat $HOME/file/templates/ikiwiki/.gitignore >> .gitignore if [ ! -e "index.mdwn" ]; then cp $HOME/file/templates/ikiwiki/index.mdwn . fi if [ ! -e "Makefile" ]; then cp $HOME/file/templates/ikiwiki/Makefile . elif ! grep -q ^wiki: Makefile; then grep -v '^#' $HOME/file/templates/ikiwiki/Makefile >> Makefile fi if [ ! -d "templates" ]; then cp r $HOME/file/templates/ikiwiki/templates . fi if [ ! -d "bootstrap" ]; then cp r $HOME/file/bootstrap/ikiwiki/bootstrap . fi git add . git commit -a -m "Static site generation support using ikiwiki" fi ) # Vagrant integration ( echo "" echo "Setting up vagrant integration..." cd $CODE/$PROJECT git checkout develop echo '.vagrant' >> .gitignore git commit -a -m "Adds vagrant support" # Use the best approach #git clone $BOOSTRAP $CODE/$PROJECT/puppet #git submodule add $BOOSTRAP puppet git remote add puppet $BOOTSTRAP git subtree add --prefix puppet $BOOTSTRAP master --squash ) # Teardown echo "Welcome to your new project :)"