#!/bin/sh # # Copyright 2010 Vincent Driessen. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY VINCENT DRIESSEN ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL VINCENT DRIESSEN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # The views and conclusions contained in the software and documentation are # those of the authors and should not be interpreted as representing official # policies, either expressed or implied, of Vincent Driessen. # # enable debug mode if [ "$DEBUG" = "yes" ]; then set -x fi export GITFLOW_DIR="$HOME/.gityaflow" export GITFLOW_REPO=${GITFLOW_REPO:-"git://github.com/innsand/git-yaflow.git"} _git_wrapper() { cd $GITFLOW_DIR git $* cd $OLDPWD return $? } _install() { echo "Initing home in $GITFLOW_DIR" git clone --recursive -q "$GITFLOW_REPO" "$GITFLOW_DIR" _git_wrapper config --local --int gityaflow.updateInterval 86400 _git_wrapper config --global alias.fl "yaflow" . $GITFLOW_DIR/gityaflow-bootstrap _make_update echo "Mkay" } usage() { echo "usage: git yaflow " echo echo "Available subcommands are:" bootstrap_usage_subcommands echo echo "Try 'git yaflow help' for details." } main() { # installing or update check if [ ! -d "$GITFLOW_DIR" ] ; then _install else . $GITFLOW_DIR/gityaflow-bootstrap _check_update fi # args check if [ $# -lt 1 ]; then usage exit 1 fi # before loading parsers and main code. bootstrap_preinit # load common functionality . "$GITFLOW_DIR/gitflow-common" # This environmental variable fixes non-POSIX getopt style argument # parsing, effectively breaking git-flow subcommand parsing on several # Linux platforms. export POSIXLY_CORRECT=1 # use the shFlags project to parse the command line arguments . "$GITFLOW_DIR/shFlags/src/shflags" FLAGS_PARENT="git yaflow" FLAGS "$@" || exit $? eval set -- "${FLAGS_ARGV}" # sanity checks SUBCOMMAND="$1"; shift if [ ! -e "$GITFLOW_DIR/git-flow-$SUBCOMMAND" ]; then usage exit 1 fi # run command . "$GITFLOW_DIR/git-flow-$SUBCOMMAND" FLAGS_PARENT="git yaflow $SUBCOMMAND" # test if the first argument is a flag (i.e. starts with '-') # in that case, we interpret this arg as a flag for the default # command SUBACTION="default" if [ "$1" != "" ] && ! echo "$1" | grep -q "^-"; then SUBACTION="$1"; shift fi if ! type "cmd_$SUBACTION" >/dev/null 2>&1; then warn "Unknown subcommand: '$SUBACTION'" usage exit 1 fi bootstrap_preaction # run the specified action cmd_$SUBACTION "$@" bootstrap_postaction } main "$@"