Re: [PATCH] git-submodule.sh: Add Custom argument input support to git submodule recurse subcommand
From: Imran M Yousuf <hidden>
Date: 2016-06-15 22:44:34
Sorry for the inconvenience, but please ignore this patch as it was not generated with -n and version number :(. - best regards, Imran On Mon, May 5, 2008 at 2:44 PM, [off-list ref] wrote:
From: Imran M Yousuf <redacted>
There is a scenario which has been put forward several times in
discussion over the recurse subcommand and it is that commands chould have
different arguments for different modules.
For example, one module could want to checkout 'master', while another might want
to checkout 'work'. The [-a|--customized-argument] argument provides platform
just for that. Consider the following command and its followup for further info:
git submodule recurse -a checkout
Submodule b is not initialized and skipped
git submodule recurse a checkout
Please provide an argument: master
Press y to provide another arg...
git checkout master
Already on branch "master"
Submodule d is not initialized and skipped
git submodule recurse . checkout
Please provide an argument: master
Press y to provide another arg...
git checkout master
Already on branch "master"
This command would also come in handy for diffs and other commands.
Signed-off-by: Imran M Yousuf [off-list ref]
---
git-submodule.sh | 53 +++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 49 insertions(+), 4 deletions(-)
diff --git a/git-submodule.sh b/git-submodule.sh
index 8161d51..314652d 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -12,7 +12,7 @@ LONG_USAGE="$0 add [-q|--quiet] [-b|--branch branch] <repository> [<path>]
$0 [status] [-q|--quiet] [-c|--cached] [--] [<path>...]
$0 init|update [-q|--quiet] [--] [<path>...]
$0 summary [--cached] [-n|--summary-limit <n>] [<commit>]
-$0 recurse [-q|--quiet] [-e|--exit-after-error] [-d|--depth <recursion depth>] [-b|--breadth-first] <git command> [<args> ...]"
+$0 recurse [-q|--quiet] [-e|--exit-after-error] [-d|--depth <recursion depth>] [-b|--breadth-first] [-a|--customized-argument] <git command> [<args> ...]"
OPTIONS_SPEC=
. git-sh-setup
require_work_tree
@@ -25,6 +25,8 @@ depth=0
current_depth=0
depth_first=1
on_error=
+use_custom_args=
+custom_args=
#
# print stuff on stdout unless -q was specified
@@ -585,6 +587,40 @@ cmd_status()
done
}
+# Take arguments from user to pass as custom arguments and execute the command
+exec_with_custom_args()
+{
+ input=
+ arg_index=0
+ eval_str="set "
+ while test $# -gt 0
+ do
+ arg_index=$(($arg_index + 1))
+ var='$'"$arg_index"
+ input="$1"
+ eval_str="$eval_str $var \"$input\""
+ shift
+ done
+ while :
+ do
+ arg_index=$(($arg_index + 1))
+ printf "Please provide an argument: "
+ read input
+ var='$'"$arg_index"
+ eval_str="$eval_str $var \"$input\""
+ printf "Press y to provide another arg... "
+ read keypress
+ if test "$keypress" != "y" &&
+ test "$keypress" != "Y"
+ then
+ break
+ fi
+ done
+ eval $eval_str
+ say "$*"
+ "$@"
+}
+
# Check whether the submodule is initialized or not
initialize_sub_module()
{
@@ -637,10 +673,16 @@ 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 "$@"
- # pwd is mentioned in order to enable the ser to distinguish
- # between same name modules, e.g. a/lib and b/lib.
say "git submodule recurse $submod_path $*"
- git "$@"
+ if test -n "$use_custom_args"
+ then
+ # Execute the commands after taking the arguments
+ # Please note that one input is for one argument
+ # only.
+ exec_with_custom_args git "$@"
+ else
+ git "$@"
+ fi
# if exit on error is specifed than script will exit if any
# command fails. As there is no transaction there will be
# no rollback either
@@ -689,6 +731,9 @@ cmd_recurse() {
-e|--exit-after-error)
on_error=1
;;
+ -a|--customized-argument)
+ use_custom_args=1
+ ;;
-*)
usage
;;
--
1.5.4.2
-- Imran M Yousuf Entrepreneur & Software Engineer Smart IT Engineering Dhaka, Bangladesh Email: imran@smartitengineering.com Mobile: +880-1711402557