#
# Parameters
+PROGRAM="$0"
BASENAME="`basename $0`"
PROJECT="$1"
-REPO="$2"
+shift
+MODULES="$*"
BOOTSTRAP="https://git.fluxo.info/puppet-bootstrap.git"
TEMPLATES="https://git.fluxo.info/templates.git"
# Read a parameter from user
-function sandbox_ask {
+function __project_ask {
local input
local function="$1"
local default="n"
read -rep "Setup $function? (defaults to $default): " input
if [ "$input" == "y" ]; then
- sandbox_$function
+ project_$function
fi
}
# Checkout to develop branch if available
-function sandbox_checkout_develop {
+function __project_checkout_develop {
(
cd $PROJECT
}
# Initialize project
-function sandbox_init {
+function __project_init {
if [ ! -d "$PROJECT" ]; then
echo "Initializing $PROJECT..."
mkdir -p $PROJECT
}
# Git integration
-function sandbox_git {
+function project_git {
+ if [ ! -d "$PROJECT/.git" ]; then
(
cd $PROJECT
touch .gitignore
git hooks --install
fi
)
+ fi
}
# Setup git-flow integration
-function sandbox_git_flow {
+function project_gitflow {
+ if ! grep -q '^\[gitflow' $PROJECT/.git/config; then
(
cd $PROJECT
fi
fi
)
+ fi
}
# Ikiwiki integration
-function sandbox_ikiwiki {
+function project_ikiwiki {
(
if [ ! -d "$HOME/file/templates" ]; then
echo "Please clone $TEMPLATES into $HOME/file/templates"
echo ""
echo "Setting up ikiwiki integration..."
cd $PROJECT
- sandbox_checkout_develop
+ __project_checkout_develop
if [ ! -e ".gitignore" ]; then
cp $HOME/file/templates/ikiwiki/.gitignore .
}
# Vagrant integration
-function sandbox_vagrant {
+function project_vagrant {
+ if [ ! -e "$PROJECT/Vagrantfile" ]; then
(
echo ""
echo "Setting up vagrant integration..."
cd $PROJECT
- sandbox_checkout_develop
+ __project_checkout_develop
+ vagrant init
echo '.vagrant' >> .gitignore
git commit -a -m "Adds vagrant support"
+ )
+ fi
+}
+
+# KVMX integration
+function project_kvmx {
+ if [ ! -e "$PROJECT/kvmxfile" ]; then
+ (
+ echo ""
+ echo "Setting up vagrant integration..."
+ cd $PROJECT
+ kvmx init
+ git commit -a -m "Adds kvmx support"
+ )
+ fi
+}
+
+# Puppet integration
+function project_puppet {
+ if [ ! -d "$PROJECT/puppet" ]; then
+ (
+ echo ""
+ echo "Setting up puppet integration..."
+ cd $PROJECT
# Use the best approach
#git clone $BOOSTRAP $PROJECT/puppet
git remote add puppet $BOOTSTRAP
git subtree add --prefix puppet $BOOTSTRAP master --squash
)
+ fi
}
# Syntax check
if [ -z "$PROJECT" ]; then
- echo "usage: $BASENAME <path> [url]"
+ echo "$BASENAME: create a new project folder and setup helper utilities"
+ echo ""
+ echo "usage: $BASENAME <path> [<module1> ... <moduleN>]"
+ echo "available modules:"
+ echo ""
+ grep "^function project_" $PROGRAM | cut -d ' ' -f 2 | sed -e 's/project_//' | sort | xargs -L 6 | column -t -c 6 | sed -e 's/^/\t/'
+ echo ""
exit 1
fi
-# Clone or initialize
-if [ ! -z "$REPO" ]; then
- git clone $URL $PROJECT
+# Initialize
+__project_init
+
+# Setup modules
+if [ ! -z "$MODULES" ]; then
+ __project_ask git
+ __project_ask gitflow
+ __project_ask ikiwiki
+ __project_ask kvmx
+ __project_ask puppet
+ __project_ask vagrant
else
- sandbox_init
- sandbox_ask git
- sandbox_ask git_flow
- sandbox_ask ikiwiki
- sandbox_ask vagrant
+ for module in $MODULES; do
+ project_$module
+ done
fi
# Teardown
-echo "Done sandboxing :)"
+echo "Done processing the project :)"