gerrit: add age query args
Signed-off-by: Joey Armstrong <jarmstrong@linuxfoundation.org>
Change-Id: I4c01d5c40d427506de9b6c45b9392ffeb5dacc37
diff --git a/gerrit/bin/gerrit.sh b/gerrit/bin/gerrit.sh
index 4e51869..b12d0bf 100755
--- a/gerrit/bin/gerrit.sh
+++ b/gerrit/bin/gerrit.sh
@@ -55,52 +55,6 @@
}
## -----------------------------------------------------------------------
-## Usage: $0 --repo voltha-go --search --wip
-## -----------------------------------------------------------------------
-function do_gerrit_search_orig()
-{
- local -n ref_urls=$1 ; shift
- local -n ref_repos=$1 ; shift
- local -n ref_status=$1 ; shift
-
- ref_urls=()
-
- # local stem='https://gerrit.opencord.org/q/project:voltha-go+status:open'
- local stem='https://gerrit.opencord.org/q/'
-
- local -a common=()
- [[ -v me ]] && { common+=("${me[@]}"); }
- common+=("${ref_status[@]}")
-
- local repo
- for repo in "${ref_repos[@]}";
- do
- local -a args=()
- args+=("project:${repo}")
- args+=("${common[@]}")
-
- local url="$stem"
- url+="$(join_by '+' "${args[@]}")"
- ref_urls+=("$url")
- done
-
- if [[ ${#ref_urls[@]} -eq 0 ]]; then
- local -a args=()
- args=("${common[@]}")
-
- local url="$stem"
- url+="$(join_by '+' "${args[@]}")"
- ref_urls+=("$url")
- fi
-
- # --debug) declare -g -i debug=1 ;;
- # --search) declare -g -i search=1 ;;
- # --wip) declare -g -i status_is_open=1 ;;
-
- return
-}
-
-## -----------------------------------------------------------------------
## Intent: Iterate over --admin values and generate repositories
## -----------------------------------------------------------------------
function gen_admin_urls()
@@ -294,11 +248,30 @@
;;
## Modes
+ --age) # https://gerrit-review.googlesource.com/Documentation/user-search.html
+ arg="$1"; shift
+ add_filter_age "$arg"
+ ;;
+
+ ## FMT: 2006-01-02[ 15:04:05[.890][ -0700]];
+ --after|--since) # https://gerrit-review.googlesource.com/Documentation/user-search.html
+ arg="$1"; shift
+ add_filter_after "$arg"
+ ;;
+
+ ## FMT: 2006-01-02[ 15:04:05[.890][ -0700]];
+ --before) # https://gerrit-review.googlesource.com/Documentation/user-search.html
+ arg="$1"; shift
+ add_filter_before "$arg"
+ ;;
+
+ ## Modes
--debug)
# shellcheck disable=SC2034
declare -g -i argv_debug=1
declare -g -i debug=1
;;
+
--search) declare -g -i argv_search=1 ;;
--me)
diff --git a/gerrit/gerrit/do/search.sh b/gerrit/gerrit/do/search.sh
index d2fbf28..0c92574 100644
--- a/gerrit/gerrit/do/search.sh
+++ b/gerrit/gerrit/do/search.sh
@@ -43,15 +43,20 @@
args+=("project:${repo}")
args+=("${common[@]}")
+ apply_filter_age args
+
local url="$stem"
url+="$(join_by '+' "${args[@]}")"
ref_urls+=("$url")
done
+ # https://gerrit.opencord.org/q/status:open+after:%222024-04-24%22
if [[ ${#ref_urls[@]} -eq 0 ]]; then
local -a args=()
args=("${common[@]}")
+ apply_filter_age args
+
local url="$stem"
url+="$(join_by '+' "${args[@]}")"
ref_urls+=("$url")
diff --git a/gerrit/gerrit/filters/age.sh b/gerrit/gerrit/filters/age.sh
new file mode 100644
index 0000000..d8376a7
--- /dev/null
+++ b/gerrit/gerrit/filters/age.sh
@@ -0,0 +1,85 @@
+#!/bin/bash
+# -----------------------------------------------------------------------
+# Copyright 2024 Open Networking Foundation Contributors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http:#www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------
+# SPDX-FileCopyrightText: 2024 Open Networking Foundation Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+
+## -----------------------------------------------------------------------
+## Intent: Update gerrit query to filter based on age
+## -----------------------------------------------------------------------
+function add_filter_age()
+{
+ local val="$1"; shift
+
+ case "$val" in
+ *y|*year*) ;; # 1 y[ear(s)]
+ *m|*mon*) ;; # 1 m[onth(s)]
+ *d|*day*) ;; # 1 d[ay(s)]
+ *h|*hour*) ;; # 1 h[our(s)]
+ *) error "--age [$val] is invalid" ;;
+ esac
+
+ [[ -v argv_age ]] && { error '--age: detected multiple switches'; }
+ declare -g -a argv_age=("$age")
+ return
+}
+
+## -----------------------------------------------------------------------
+## Intent: Update gerrit query to filter based on created after date
+## FMT: 2006-01-02[ 15:04:05[.890][ -0700]];
+## -----------------------------------------------------------------------
+function add_filter_after()
+{
+ local val="$1"; shift
+
+ [[ -v argv_after ]] && { error '--after: detected multiple switches'; }
+ declare -g -a argv_after=("$arg")
+ return
+}
+
+## -----------------------------------------------------------------------
+## Intent: Update gerrit query to filter based on created before date
+## FMT: 2006-01-02[ 15:04:05[.890][ -0700]];
+## -----------------------------------------------------------------------
+function add_filter_before()
+{
+ local val="$1"; shift
+
+ [[ -v argv_before ]] && { error '--before: detected multiple switches'; }
+ declare -g -a argv_before=("$arg")
+ return
+}
+
+## -----------------------------------------------------------------------
+## Intent: Merge status attributes into a URL query
+## -----------------------------------------------------------------------
+function apply_filter_age()
+{
+ local -n ref=$1; shift
+
+ [[ -v argv_age ]] && { ref+=("age:\"${argv_age[@]}\""); }
+
+ [[ -v argv_after ]] && { ref+=("after:\"${argv_after}\""); }
+ [[ -v argv_before ]] && { ref+=("before:\"${argv_before}\""); }
+
+ :
+ return
+}
+
+: # ($?==0) for source script
+
+# [EOF]
diff --git a/gerrit/gerrit/filters/include.sh b/gerrit/gerrit/filters/include.sh
index 34c84ea..ca67f2c 100644
--- a/gerrit/gerrit/filters/include.sh
+++ b/gerrit/gerrit/filters/include.sh
@@ -21,6 +21,7 @@
##--------------------##
##---] INCLUDES [---##
##--------------------##
+source "${libdir}/filters/age.sh"
source "${libdir}/filters/status.sh"
source "${libdir}/filters/reviewers.sh"
diff --git a/gerrit/gerrit/usage/main.sh b/gerrit/gerrit/usage/main.sh
index 7a9f4ed..caceadc 100644
--- a/gerrit/gerrit/usage/main.sh
+++ b/gerrit/gerrit/usage/main.sh
@@ -66,11 +66,14 @@
v2.3.3 View a tag
[REVIEW]
- --review Load pending code review requests
- --review --me Load only my pending requests
- --reviewer Load reviews by user
+ --review Load pending code review requests
+ --review --me Load only my pending requests
+ --reviewer Load reviews by user
[FILTER(s)]
+ --age
+ --before Change time modified before (alias: --until)
+ --after Change time modified after (alias: --since)
--status [s] Filter query results by status={open,merged,closed}
s=open (is:open)
s=merged
@@ -82,16 +85,20 @@
[USAGE]
- % gerrit.sh --wip
- Display unmerged patches
- % gerrit.sh --wip --me
- Display my unmerged patches
+ # Display my unmerged patches
+ % gerrit.sh --wip
+
+ # Display my unmerged patches
+ % gerrit.sh --wip --me
% gerrit.sh --repo voltha-go --admin tags --admin branches
- ## Search for umerged patches in repo:voltha-go
- % gerrit.sh --repo voltha-go --search --wip
+ # Search for umerged patches in repo:voltha-go
+ % gerrit.sh --repo voltha-go --search --wip
+
+ # Display new patches created since 'yesterday'
+ % gerrit.sh --wip --since '2024-04-24'
[HELP: Extended]
--help-status