Modify switch handling to centralize parse and validation for --{foo}-is-empty
Signed-off-by: Joey Armstrong <jarmstrong@linuxfoundation.org>
Change-Id: Ia8b955f5451b5b7938d48abdea681e5c8396b376
diff --git a/jira/jira-search/getopt/detect-modifiers.sh b/jira/jira-search/getopt/detect-modifiers.sh
index 84a1afd..22c1cae 100644
--- a/jira/jira-search/getopt/detect-modifiers.sh
+++ b/jira/jira-search/getopt/detect-modifiers.sh
@@ -87,7 +87,17 @@
[[ -v getopt_argv_NOT ]] && { declare -p getopt_argv_NOT; }
[[ -v getopt_argv_OR ]] && { declare -p getopt_argv_OR; }
fi
-
+
+ ## Persistent flags
+ [[ -v getopt_argv_AND ]] && { declare -g -i getopt_argv_any_AND=1; }
+ [[ -v getopt_argv_OR ]] && { declare -g -i getopt_argv_any_OR=1; }
+
+ if false; then
+ [[ -v getopt_argv_any_AND ]] && { declare -g -i getopt_argv_any_AND; }
+ [[ -v getopt_argv_any_OR ]] && { declare -g -i getopt_argv_any_OR; }
+ fi
+
+
: # return $?==0
return
}
diff --git a/jira/jira-search/include.sh b/jira/jira-search/include.sh
index 57405c9..8f81512 100644
--- a/jira/jira-search/include.sh
+++ b/jira/jira-search/include.sh
@@ -44,6 +44,7 @@
#source "$pgmlib/fixversion.sh"
#source "$pgmlib/resolved.sh"
source "${pgm_lib}/fixversion.sh"
+source "${pgm_lib}/is_empty.sh"
source "${pgm_lib}/resolved.sh"
source "${pgm_lib}/help/utils.sh"
diff --git a/jira/jira-search/is_empty.sh b/jira/jira-search/is_empty.sh
new file mode 100644
index 0000000..fe6e9d1
--- /dev/null
+++ b/jira/jira-search/is_empty.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+
+## -----------------------------------------------------------------------
+## Intent: Detect if the --{labels,required}-is-empty switch is valid
+## -----------------------------------------------------------------------
+function is_switch_valid__is_empty()
+{
+ local raw="$1"; shift # --{foo}-is-empty
+
+ declare -a valid=()
+ valid+=('label')
+ valid+=('resolved')
+
+ # --required-is-empty => required
+ local val="$raw"
+ val="${val:2}" # remove prefix --
+ val="${val%-is-empty}" # remove suffix token-name
+
+ if [[ " ${valid[@]} " =~ " ${val} " ]]; then
+ is_empty+=("$val")
+ else
+ error "Detected invalid --is-empty switch [$arg]"
+ fi
+
+ return
+}
+
+: # ($?=0) for source $include
+
+# [EOF]
diff --git a/jira/jira-search/resolved.sh b/jira/jira-search/resolved.sh
index 9d2d563..88b6835 100644
--- a/jira/jira-search/resolved.sh
+++ b/jira/jira-search/resolved.sh
@@ -1,4 +1,25 @@
#!/bin/bash
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+
+[[ ! -v JCL_resovled ]] && { declare -g -a JCL_resolved=(); }
+
+## --------------------------------------------------------------------
+## Intent: Retrieve a list of reason query strings
+## --------------------------------------------------------------------
+function get_jcl_resolved()
+{
+ local -n ref=$1; shift
+
+ local -a tmp=()
+ do_resolved tmp
+ ref+=("$tmp")
+
+ local query="$(join_by 'OR' "${tmp[0]}")"
+ ref+=("($query)")
+
+ return
+}
## --------------------------------------------------------------------
## Intent: Retrieve a list of reason query strings
@@ -22,7 +43,6 @@
function do_resolved()
{
declare -n ans=$1; shift
- # declare -g resolved
[[ -v resolved_start ]] && { ans+=("(Resolved >= $resolved_start)"); }
[[ -v resolved_end ]] && { ans+=("(Resolved <= $resolved_end)"); }
@@ -38,7 +58,10 @@
ans+=( "(resolution IN ($filter))" )
fi
- [[ -v resolved_not_empty ]] && { ans+=('(resolved IS NOT EMPTY)'); }
+ [[ -v resolved_not_empty ]] \
+ && { ans+=('(resolved IS NOT EMPTY)'); } \
+ || { true; }
+
[[ -v resolved_is_empty ]] \
&& { ans+=('(resolved IS EMPTY)'); } \
|| { true; }