Handle --nofoo like --no-foo in parse_options.sh and update the Bash tools.

This commit is contained in:
Daniel Nichter
2012-07-21 11:57:53 -06:00
parent e1b39b3d5f
commit 487d14228b
6 changed files with 80 additions and 27 deletions
+13 -5
View File
@@ -351,12 +351,20 @@ _parse_command_line() {
real_opt="$opt" real_opt="$opt"
if $(echo $opt | grep '^--no-' >/dev/null); then if $(echo $opt | grep '^--no[^-]' >/dev/null); then
opt_is_negated=1 local base_opt=$(echo $opt | sed 's/^--no//')
opt=$(echo $opt | sed 's/^--no-//') if [ -f "$PT_TMPDIR/po/$base_opt" ]; then
opt_is_negated=1
opt="$base_opt"
fi
else else
opt_is_negated="" if $(echo $opt | grep '^--no-' >/dev/null); then
opt=$(echo $opt | sed 's/^-*//') opt_is_negated=1
opt=$(echo $opt | sed 's/^--no-//')
else
opt_is_negated=""
opt=$(echo $opt | sed 's/^-*//')
fi
fi fi
if $(echo $opt | grep '^[a-z-][a-z-]*=' >/dev/null 2>&1); then if $(echo $opt | grep '^[a-z-][a-z-]*=' >/dev/null 2>&1); then
+13 -5
View File
@@ -353,12 +353,20 @@ _parse_command_line() {
real_opt="$opt" real_opt="$opt"
if $(echo $opt | grep '^--no-' >/dev/null); then if $(echo $opt | grep '^--no[^-]' >/dev/null); then
opt_is_negated=1 local base_opt=$(echo $opt | sed 's/^--no//')
opt=$(echo $opt | sed 's/^--no-//') if [ -f "$PT_TMPDIR/po/$base_opt" ]; then
opt_is_negated=1
opt="$base_opt"
fi
else else
opt_is_negated="" if $(echo $opt | grep '^--no-' >/dev/null); then
opt=$(echo $opt | sed 's/^-*//') opt_is_negated=1
opt=$(echo $opt | sed 's/^--no-//')
else
opt_is_negated=""
opt=$(echo $opt | sed 's/^-*//')
fi
fi fi
if $(echo $opt | grep '^[a-z-][a-z-]*=' >/dev/null 2>&1); then if $(echo $opt | grep '^[a-z-][a-z-]*=' >/dev/null 2>&1); then
+13 -5
View File
@@ -353,12 +353,20 @@ _parse_command_line() {
real_opt="$opt" real_opt="$opt"
if $(echo $opt | grep '^--no-' >/dev/null); then if $(echo $opt | grep '^--no[^-]' >/dev/null); then
opt_is_negated=1 local base_opt=$(echo $opt | sed 's/^--no//')
opt=$(echo $opt | sed 's/^--no-//') if [ -f "$PT_TMPDIR/po/$base_opt" ]; then
opt_is_negated=1
opt="$base_opt"
fi
else else
opt_is_negated="" if $(echo $opt | grep '^--no-' >/dev/null); then
opt=$(echo $opt | sed 's/^-*//') opt_is_negated=1
opt=$(echo $opt | sed 's/^--no-//')
else
opt_is_negated=""
opt=$(echo $opt | sed 's/^-*//')
fi
fi fi
if $(echo $opt | grep '^[a-z-][a-z-]*=' >/dev/null 2>&1); then if $(echo $opt | grep '^[a-z-][a-z-]*=' >/dev/null 2>&1); then
+13 -5
View File
@@ -360,12 +360,20 @@ _parse_command_line() {
real_opt="$opt" real_opt="$opt"
if $(echo $opt | grep '^--no-' >/dev/null); then if $(echo $opt | grep '^--no[^-]' >/dev/null); then
opt_is_negated=1 local base_opt=$(echo $opt | sed 's/^--no//')
opt=$(echo $opt | sed 's/^--no-//') if [ -f "$PT_TMPDIR/po/$base_opt" ]; then
opt_is_negated=1
opt="$base_opt"
fi
else else
opt_is_negated="" if $(echo $opt | grep '^--no-' >/dev/null); then
opt=$(echo $opt | sed 's/^-*//') opt_is_negated=1
opt=$(echo $opt | sed 's/^--no-//')
else
opt_is_negated=""
opt=$(echo $opt | sed 's/^-*//')
fi
fi fi
if $(echo $opt | grep '^[a-z-][a-z-]*=' >/dev/null 2>&1); then if $(echo $opt | grep '^[a-z-][a-z-]*=' >/dev/null 2>&1); then
+18 -6
View File
@@ -415,13 +415,25 @@ _parse_command_line() {
# Save real opt from cmd line for error messages. # Save real opt from cmd line for error messages.
real_opt="$opt" real_opt="$opt"
# Strip leading -- or --no- from option. # Handle the --nofoo variant of --no-foo.
if $(echo $opt | grep '^--no-' >/dev/null); then if $(echo $opt | grep '^--no[^-]' >/dev/null); then
opt_is_negated=1 local base_opt=$(echo $opt | sed 's/^--no//')
opt=$(echo $opt | sed 's/^--no-//') # Only long options can be negated, so if there's no spec file
# for the base option name, then we've been fooled: the leading
# --no is actually part of the option's real name, like --north.
if [ -f "$PT_TMPDIR/po/$base_opt" ]; then
opt_is_negated=1
opt="$base_opt"
fi
else else
opt_is_negated="" # Handle normal cases: --option and --no-option.
opt=$(echo $opt | sed 's/^-*//') if $(echo $opt | grep '^--no-' >/dev/null); then
opt_is_negated=1
opt=$(echo $opt | sed 's/^--no-//')
else
opt_is_negated=""
opt=$(echo $opt | sed 's/^-*//')
fi
fi fi
# Split opt=val pair. # Split opt=val pair.
+10 -1
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
plan 80 plan 81
TMPFILE="$TEST_PT_TMPDIR/parse-opts-output" TMPFILE="$TEST_PT_TMPDIR/parse-opts-output"
TOOL="pt-stalk" TOOL="pt-stalk"
@@ -67,6 +67,15 @@ is "$OPT_INT_OPT" "" "Default int option (neg)"
is "$OPT_INT_OPT2" "42" "Default int option with default (neg)" is "$OPT_INT_OPT2" "42" "Default int option with default (neg)"
is "$OPT_VERSION" "" "--version (neg)" is "$OPT_VERSION" "" "--version (neg)"
# ############################################################################
# Negate an option like --nooption.
# https://bugs.launchpad.net/percona-toolkit/+bug/954990
# ############################################################################
parse_options "$T_LIB_DIR/samples/bash/po001.sh" --nonoption
is "$OPT_NOPTION" "" "--nooption negates option like --no-option"
# ############################################################################ # ############################################################################
# Short form. # Short form.
# ############################################################################ # ############################################################################