[dpdk-ci] [PATCH v3 09/10] tools: filter new patchwork IDs by project name
Ali Alnubani
alialnu at oss.nvidia.com
Mon Oct 18 09:44:59 CEST 2021
If the script doesn't filter by project, it would be fetching patches
from all projects, which we don't want as different projects
require different checks usually. This patch modifies the script so
that it requires a project's name to fetch IDs for.
Example usage:
$ export MAINTAINERS_FILE_PATH=/path/to/dpdk/MAINTAINERS
$ ./tools/poll-pw series DPDK /path/to/last.txt \
'/path/to/pw_maintainers_cli.py --type series set_pw_delegate $1'
Signed-off-by: Ali Alnubani <alialnu at nvidia.com>
---
Changes in v3:
- Filter by project using jq, since the events API doesn't have a
'project' parameter.
- Redirect error messages to stderr.
tools/poll-pw | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/tools/poll-pw b/tools/poll-pw
index 77f6b79..1f8db9c 100755
--- a/tools/poll-pw
+++ b/tools/poll-pw
@@ -9,7 +9,7 @@ PAUSE_SECONDS=100
print_usage () {
cat <<- END_OF_HELP
- usage: $(basename $0) [OPTIONS] <patch|series> </path/to/last.txt> <command>
+ usage: $(basename $0) [OPTIONS] <patch|series> <project> </path/to/last.txt> <command>
Poll patchwork and call a command for each new patch/series id.
The first date to filter with is read from the specified file.
@@ -31,15 +31,16 @@ while getopts h arg ; do
esac
done
-if [ $# -lt 3 ] ; then
+if [ $# -lt 4 ] ; then
printf 'missing argument(s)\n\n' >&2
print_usage >&2
exit 1
fi
shift $(($OPTIND - 1))
resource_type=$1
-since_file=$2
-shift 2
+project=$2
+since_file=$3
+shift 3
cmd=$*
if [ ! -f "$since_file" ] ; then
@@ -59,6 +60,12 @@ if [ "$resource_type" != "patch" ] & [ "$resource_type" != "series" ] ; then
exit 1
fi
+curl -s $URL/projects/ | jq '.[].name' | grep -qi "^\"${project}\"$"
+if [ ! $? -eq 0 ] ; then
+ printf "The project '$project' doesn't exist.\n\n" >&2
+ exit 1
+fi
+
URL="${URL}/events/?category=${resource_type}-completed"
callcmd () # <patchwork id>
@@ -73,7 +80,8 @@ while true ; do
page=1
while true ; do
ids=$(curl -s "${URL}&page=${page}&since=${since}" \
- | jq "try ( .[].payload.${resource_type}.id )")
+ | jq "try ( .[] | select( .project.name == \"$project\" ) )" \
+ | jq "try ( .payload.${resource_type}.id )")
[ -z "$(echo $ids | tr -d '\n')" ] && break
for id in $ids ; do
callcmd $id
--
2.25.1
More information about the ci
mailing list