diff options
author | Jakub Kicinski <kuba@kernel.org> | 2021-02-08 18:42:14 -0800 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2021-02-24 17:55:29 +0100 |
commit | d86efe83aa64efb8ef0aa08bbf33dd1bdd82df99 (patch) | |
tree | 1c5348db593e8a17bac88d3222f3f596daeb40e0 | |
parent | 69867baf9da11fece0a6b3568fb626214a95634c (diff) | |
download | pw-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-x | pw-apply | 30 |
1 files changed, 29 insertions, 1 deletions
@@ -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 |