aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Kicinski <kuba@kernel.org>2021-02-08 18:42:14 -0800
committerDaniel Borkmann <daniel@iogearbox.net>2021-02-24 17:55:29 +0100
commitd86efe83aa64efb8ef0aa08bbf33dd1bdd82df99 (patch)
tree1c5348db593e8a17bac88d3222f3f596daeb40e0
parent69867baf9da11fece0a6b3568fb626214a95634c (diff)
downloadpw-d86efe83aa64efb8ef0aa08bbf33dd1bdd82df99.tar.gz
pw-apply: export ADD_TAGS based on replies to cover letter
Patchwork does not automatically propagate tags from cover letter. With a few simple REST calls we can get all the comments and grep them for tags. We export those tags to a env var called ADD_TAGS. User is expected to add to their applypatch-msg hook something like: while IFS= read -r tag; do echo -e Adding tag: '\e[35m'$tag'\e[0m' git interpret-trailers --in-place \ --if-exists=addIfDifferent \ --trailer "$tag" \ "$1" done <<< "$ADD_TAGS" Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
-rwxr-xr-xpw-apply30
1 files changed, 29 insertions, 1 deletions
diff --git a/pw-apply b/pw-apply
index a1c155e..97a41eb 100755
--- a/pw-apply
+++ b/pw-apply
@@ -9,7 +9,7 @@ usage()
{
cat <<-EOF
usage: pw-apply [-h] [-s SERIES] [-b MBOX] [-m BRANCHNAME] [-M]
- [-a] [-3] [-N] [-e]
+ [-a] [-3] [-N] [-e] [-T]
-- [-C] [-a ACKEDBY] [-r REVIEWEDBY] [-t TESTEDBY]
EOF
exit
@@ -43,6 +43,29 @@ get_cover()
cover_msgid=$(echo "$cover_json" | jq -r '.msgid' | tr -d '<>')
}
+set_cover_tags()
+{
+ [ -z "$cover_tags" ] && return
+
+ cover_json=$(echo "$series_json" | jq '.cover_letter')
+ [ "$cover_json" == "null" ] && return
+
+ clink=$(echo "$cover_json" | jq -r '.url')
+ link=$(curl -s "$clink" | jq -r '.comments')
+ [ "$link" == "null" ] && return
+
+ tags=$(echo -e "$(curl -s $link | jq -r '.[].content')" |
+ sed -n '/\(Ack\|Review\)ed-[Bb]y:/p')
+ export ADD_TAGS="$tags"
+}
+
+clear_cover_tags()
+{
+ [ -z "$cover_tags" ] && return
+
+ [ -n "$ADD_TAGS" ] && export ADD_TAGS=
+}
+
accept_series()
{
for patch in $(git pw series show $1 -f simple 2> /dev/null | \
@@ -77,6 +100,7 @@ accept=""
merge=""
mbox=""
cover=""
+cover_tags="y"
mb2q_normalize="y"
head_old=$(git rev-parse --verify HEAD)
while true; do
@@ -90,6 +114,7 @@ while true; do
-M | --auto-merge) merge="1"; auto_branch="1"; shift ;;
-b | --mbox ) mbox="$2"; shift 2 ;;
-c | --cover) branch="tmp"; cover="$2"; shift 2 ;;
+ -T | --no-cover-tags) cover_tags=""; shift ;;
-h | --help ) usage; break ;;
-- ) shift; break ;;
* ) break ;;
@@ -108,6 +133,7 @@ body=
author=XYZ
if [ ! -z "$auto_branch" ]; then
get_cover
+ set_cover_tags
[ -z "$cover_msgid" ] && merge=
fi
@@ -192,3 +218,5 @@ if [ ! -z "$merge" ]; then
git commit --amend
fi
fi
+
+clear_cover_tags