Import gerrit and jira search scripts

Change-Id: I3f52a37d1b875835a521a89a1a58d7e16966483f
diff --git a/jira/jira-search/fixversion.sh b/jira/jira-search/fixversion.sh
new file mode 100644
index 0000000..46058af
--- /dev/null
+++ b/jira/jira-search/fixversion.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+## --------------------------------------------------------------------
+## Intent: Retrieve a list of reason query strings
+## --------------------------------------------------------------------
+function get_jql_fixversion()
+{
+    local -n ref=$1; shift
+
+    ref+=('VOLTHA-v2.12')
+    return
+}
+
+## --------------------------------------------------------------------
+## Intent: Modify search query by release fix version string
+## --------------------------------------------------------------------
+function do_fixversion()
+{
+    declare -n ans=$1; shift
+    declare -g fixversion
+
+    if [[ -v fixversion_excl ]]; then
+        filter="$(join_by ',' "${fixversion_excl[@]}")"
+        ans+=("(fixVersion NOT IN ($filter))")
+    fi
+    
+    if [[ -v fixversion_incl ]]; then
+        filter="$(join_by ',' "${fixversion_incl[@]}")"
+        ans+=("(fixVersion IN ($filter))")
+    fi
+
+    [[ -v fixversion_not_empty ]] && { ans+=('(fixVersion IS NOT EMPTY)'); }
+    [[ -v fixversion_is_empty ]] \
+        && { ans+=('(fixversion IS EMPTY)'); } \
+        || { true; }
+
+    return
+}
+
+: # ($?=0) for source $include
+
+# [EOF]
diff --git a/jira/jira-search/resolved.sh b/jira/jira-search/resolved.sh
new file mode 100644
index 0000000..9d2d563
--- /dev/null
+++ b/jira/jira-search/resolved.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+## --------------------------------------------------------------------
+## Intent: Retrieve a list of reason query strings
+## --------------------------------------------------------------------
+function get_jql_reasons()
+{
+    local -n ref=$1; shift
+
+    ref+=('Cannot Reproduce')
+    ref+=('Duplicate')
+    ref+=('Fixed')
+    ref+=('Incomplete')
+    ref+=("Won't Do")
+    ref+=("Won't Fix")
+    return
+}
+
+## --------------------------------------------------------------------
+## Intent: Modify search query by ticket resolution
+## --------------------------------------------------------------------
+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)"); }
+
+    if [[ -v resolved_excl ]]; then
+        filter="$(join_by ',' "${resolved_excl[@]}")"
+        declare -p filter
+        ans+=( "(resolution NOT IN ($filter))" )
+    fi
+
+    if [[ -v resolved_incl ]]; then
+        filter="$(join_by ',' "${resolved_incl[@]}")"
+        ans+=( "(resolution IN ($filter))" )
+    fi
+
+    [[ -v resolved_not_empty ]] && { ans+=('(resolved IS NOT EMPTY)'); }
+    [[ -v resolved_is_empty ]] \
+        && { ans+=('(resolved IS EMPTY)'); } \
+        || { true; }
+
+    return
+}
+
+: # ($?=0) for source $include
+
+# [EOF]
diff --git a/jira/jira-search/utils.sh b/jira/jira-search/utils.sh
new file mode 100644
index 0000000..8936a45
--- /dev/null
+++ b/jira/jira-search/utils.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+## -----------------------------------------------------------------------
+## Intent: Parse command line paths
+## -----------------------------------------------------------------------
+function program_paths()
+{
+    declare -g pgm="$(readlink --canonicalize-existing "$0")"
+    declare -g pgmbin="${pgm%/*}"
+    declare -g pgmlib="${pgmbin}/jira-search"
+
+    readonly pgm
+    readonly pgmbin
+    readonly pgmlib
+    return
+}
+program_paths
+           
+: # ($?=0) for source $include
+
+# [EOF]