From: imyousuf@gmail.com Date: Mon, 05 May 2008 09:09:41 GMT Subject: [PATCH v2 4/5] git-submodule.sh: Add pre command argument to git submodule recurse subcommand Message-ID: <1209978582-5785-4-git-send-email-imyousuf@gmail.com> In-Reply-To: <1209978582-5785-3-git-send-email-imyousuf@gmail.com> From: Imran M Yousuf I usually feel that when typing a command, being able to see some options come in handy. For example if I can see the available branches before checking out a branch that would be useful, IOW, if I could do 'git branch' before git checkout it would be helpful. It is now possible using the [-p|--pre-command] option. Using this subcommand command argument one can actually execute another command before specifying the arguments or the original command getting executed. git submodule recurse -a -p checkout it will prompt the user for the pre command until one is satisfied and later the original command with the custom argument will get executed. Signed-off-by: Imran M Yousuf --- git-submodule.sh | 29 ++++++++++++++++++++++++++++- 1 files changed, 28 insertions(+), 1 deletions(-) diff --git a/git-submodule.sh b/git-submodule.sh index 314652d..dd80850 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -12,7 +12,7 @@ LONG_USAGE="$0 add [-q|--quiet] [-b|--branch branch] [] $0 [status] [-q|--quiet] [-c|--cached] [--] [...] $0 init|update [-q|--quiet] [--] [...] $0 summary [--cached] [-n|--summary-limit ] [] -$0 recurse [-q|--quiet] [-e|--exit-after-error] [-d|--depth ] [-b|--breadth-first] [-a|--customized-argument] [ ...]" +$0 recurse [-q|--quiet] [-e|--exit-after-error] [-d|--depth ] [-b|--breadth-first] [-a|--customized-argument] [-p|--pre-command] [ ...]" OPTIONS_SPEC= . git-sh-setup require_work_tree @@ -27,6 +27,7 @@ depth_first=1 on_error= use_custom_args= custom_args= +pre_cmd= # # print stuff on stdout unless -q was specified @@ -587,6 +588,28 @@ cmd_status() done } +# Take command from user and execute it until user wants to discontinue +do_pre_command() +{ + say "Starting pre-comamnd execution!" + while : + do + ( + printf "Please provide a command: " + read pre_command + test -z "$pre_command" || + eval "$pre_command" + ) + printf "Press y to continue with another shell command... " + read keypress + if test "$keypress" != "y" && + test "$keypress" != "Y" + then + break + fi + done +} + # Take arguments from user to pass as custom arguments and execute the command exec_with_custom_args() { @@ -673,6 +696,7 @@ traverse_module() # If depth-first is specified in that case submodules are # are traversed before executing the command on this submodule test -n "$depth_first" && traverse_submodules "$@" + test -n "$pre_cmd" && do_pre_command say "git submodule recurse $submod_path $*" if test -n "$use_custom_args" then @@ -734,6 +758,9 @@ cmd_recurse() { -a|--customized-argument) use_custom_args=1 ;; + -p|--pre-command) + pre_cmd=1 + ;; -*) usage ;; -- 1.5.4.2