Skip to content

Commit

Permalink
Give all subcommands an optional setup() function that will be called…
Browse files Browse the repository at this point in the history
… by git-flow in order to let the subcommand initialize its environment.

Give all the branch-type subcommands a default explicit "list" action, too.

Order the functions inside each of the subcommands in a specific order, for consistency:
- usage()
- setup()
- cmd_default()
- cmd_list()
- cmd_help()
- parse_args()
- other commands
  • Loading branch information
nvie committed Jan 28, 2010
1 parent fb238a2 commit b866b01
Show file tree
Hide file tree
Showing 7 changed files with 87 additions and 58 deletions.
4 changes: 4 additions & 0 deletions git-flow
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,10 @@ sub_main() {
fi

# run the specified action
# if the subcommand declares a setup() function, call that first
if typeset -f setup >/dev/null; then
setup
fi
cmd_$SUBACTION "$@"
}

Expand Down
31 changes: 19 additions & 12 deletions git-flow-feature
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
#

usage() {
echo "usage: git flow feature"
echo "usage: git flow feature [list]"
echo " git flow feature start <name> [<base>]"
echo " git flow feature finish <name> [<base>]"
echo " git flow feature publish <name>"
Expand All @@ -34,21 +34,16 @@ usage() {
#echo "--push Push to the origin repo when finished"
}

parse_args() {
NAME="$1"
BASE="${2:-$DEVELOP_BRANCH}"
if [ "$NAME" = "" ]; then
echo "Missing argument <name>."
usage
exit 1
fi
# setup will always be called before the actual cmd_* functions
setup() {
PREFIX=$(git config --get gitflow.prefix.feature || echo feature/)
BRANCH=$PREFIX$NAME
}

cmd_default() {
# TODO: Refactor getting this prefix into a general function
PREFIX=$(git config --get gitflow.prefix.feature || echo feature/)
cmd_list "$@"
}

cmd_list() {
FEATURE_BRANCHES="$(echo "$LOCAL_BRANCHES" | grep "^$PREFIX")"
if [ -z "$FEATURE_BRANCHES" ]; then
warn "No feature branches exist."
Expand All @@ -62,6 +57,18 @@ cmd_help() {
exit 0
}

parse_args() {
NAME="$1"
BASE="${2:-$DEVELOP_BRANCH}"
if [ "$NAME" = "" ]; then
echo "Missing argument <name>."
usage
exit 1
fi
PREFIX=$(git config --get gitflow.prefix.feature || echo feature/)
BRANCH=$PREFIX$NAME
}

cmd_start() {
parse_args "$@"

Expand Down
31 changes: 19 additions & 12 deletions git-flow-hotfix
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
#

usage() {
echo "usage: git flow hotfix"
echo "usage: git flow hotfix [list]"
echo " git flow hotfix start <version> [<base>]"
echo " git flow hotfix finish <version> [<base>]"
# TODO
Expand All @@ -28,21 +28,16 @@ usage() {
#echo "--push Push to the origin repo when finished"
}

parse_args() {
VERSION="$1"
BASE="${2:-$MASTER_BRANCH}"
if [ "$VERSION" = "" ]; then
echo "Missing argument <version>."
usage
exit 1
fi
# setup will always be called before the actual cmd_* functions
setup() {
PREFIX=$(git config --get gitflow.prefix.hotfix || echo hotfix/)
BRANCH=$PREFIX$VERSION
}

cmd_default() {
# TODO: Refactor getting this prefix into a general function
PREFIX=$(git config --get gitflow.prefix.hotfix || echo hotfix/)
cmd_list "$@"
}

cmd_list() {
HOTFIX_BRANCHES="$(echo "$LOCAL_BRANCHES" | grep "^$PREFIX")"
if [ -z "$HOTFIX_BRANCHES" ]; then
warn "No hotfix branches exist."
Expand All @@ -56,6 +51,18 @@ cmd_help() {
exit 0
}

parse_args() {
VERSION="$1"
BASE="${2:-$MASTER_BRANCH}"
if [ "$VERSION" = "" ]; then
echo "Missing argument <version>."
usage
exit 1
fi
PREFIX=$(git config --get gitflow.prefix.hotfix || echo hotfix/)
BRANCH=$PREFIX$VERSION
}

cmd_start() {
parse_args "$@"

Expand Down
9 changes: 4 additions & 5 deletions git-flow-init
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,6 @@ usage() {
echo "usage: git flow init"
}

cmd_help() {
usage
exit 0
}

# Default entry when no SUBACTION is given
cmd_default() {
echo
Expand Down Expand Up @@ -76,3 +71,7 @@ cmd_default() {
fi
}

cmd_help() {
usage
exit 0
}
30 changes: 18 additions & 12 deletions git-flow-release
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
#

usage() {
echo "usage: git flow release"
echo "usage: git flow release [list]"
echo " git flow release start <version>"
echo " git flow release finish <version>"
# TODO
Expand All @@ -29,21 +29,17 @@ usage() {
#echo "--push Push to the origin repo when finished"
}

parse_args() {
VERSION_PREFIX=$(git config --get gitflow.prefix.versiontag)
VERSION="$1"
if [ "$VERSION" = "" ]; then
echo "Missing argument <version>."
usage
exit 1
fi
# setup will always be called before the actual cmd_* functions
setup() {
PREFIX=$(git config --get gitflow.prefix.release || echo release/)
BRANCH=$PREFIX$VERSION
VERSION_PREFIX=$(git config --get gitflow.prefix.versiontag)
}

cmd_default() {
# TODO: Refactor getting this prefix into a general function
PREFIX=$(git config --get gitflow.prefix.release || echo release/)
cmd_list "$@"
}

cmd_list() {
RELEASE_BRANCHES="$(echo "$LOCAL_BRANCHES" | grep "^$PREFIX")"
if [ -z "$RELEASE_BRANCHES" ]; then
warn "No release branches exist."
Expand All @@ -57,6 +53,16 @@ cmd_help() {
exit 0
}

parse_args() {
VERSION="$1"
if [ "$VERSION" = "" ]; then
echo "Missing argument <version>."
usage
exit 1
fi
BRANCH=$PREFIX$VERSION
}

cmd_start() {
parse_args "$@"

Expand Down
32 changes: 19 additions & 13 deletions git-flow-support
Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,19 @@
#

usage() {
echo "usage: git flow support"
echo "usage: git flow support [list]"
echo " git flow support start <version> [<base>]"
}

parse_args() {
VERSION_PREFIX=$(git config --get gitflow.prefix.versiontag)
VERSION="$1"
BASE="${2:-${VERSION_PREFIX}${VERSION}}"
if [ "$VERSION" = "" ]; then
echo "Missing argument <version>."
usage
exit 1
fi
setup() {
PREFIX=$(git config --get gitflow.prefix.support || echo support/)
BRANCH=$PREFIX$VERSION
}

cmd_default() {
# TODO: Refactor getting this prefix into a general function
PREFIX=$(git config --get gitflow.prefix.support || echo support/)
cmd_list "$@"
}

cmd_list() {
SUPPORT_BRANCHES="$(echo "$LOCAL_BRANCHES" | grep "^$PREFIX")"
if [ -z "$SUPPORT_BRANCHES" ]; then
warn "No support branches exist."
Expand All @@ -46,6 +39,19 @@ cmd_help() {
exit 0
}

parse_args() {
VERSION_PREFIX=$(git config --get gitflow.prefix.versiontag)
VERSION="$1"
BASE="${2:-${VERSION_PREFIX}${VERSION}}"
if [ "$VERSION" = "" ]; then
echo "Missing argument <version>."
usage
exit 1
fi
PREFIX=$(git config --get gitflow.prefix.support || echo support/)
BRANCH=$PREFIX$VERSION
}

cmd_start() {
parse_args "$@"

Expand Down
8 changes: 4 additions & 4 deletions git-flow-version
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ usage() {
echo "usage: git flow version"
}

cmd_default() {
echo "$GITFLOW_VERSION"
}

cmd_help() {
usage
exit 0
}

cmd_default() {
echo "$GITFLOW_VERSION"
}

0 comments on commit b866b01

Please sign in to comment.