aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Kicinski <kuba@kernel.org>2020-11-11 15:22:03 -0800
committerDaniel Borkmann <daniel@iogearbox.net>2020-11-13 17:48:22 +0100
commit99babde7dab06d67e8c64d882f63c07c2cc5143a (patch)
tree5c39a63484286d5e4f700008c4cb400726944df8
parent7d4c8853661a71e8fcc3205a009335bc0c0bf41e (diff)
downloadpw-99babde7dab06d67e8c64d882f63c07c2cc5143a.tar.gz
pw-apply: don't use git-pw
There are multiple reasons to steer clear of git pw: 1. The fewer external dependencies the better (although we still need to replace the git pw use in -a to get rid of the dependency completely). 2. Speed - git-pw takes 1.8s per request, we do a show and a download. curl requests take 1s to complete, moreover for auto-merge we need to download series json anyway. All in all with auto-merge we save 2.6s. 3. Output format of show is cluttered and useless IMHO, we can do better. Example output, before: Property Value ---------- -------------------------------------------------------------------------- ID 212566 Date 2020-11-06T03:52:08 Name [v4,net-next,1/3] ptp: idt82p33: add adjphase support URL https://patchwork.ozlabs.org/project/netdev/list/?series=212566 Submitter Min Li (min.li.xe@renesas.com) Project Linux network development Version 4 Received 3 of 3 Complete True Cover Patches 1395475 [v4,net-next,1/3] ptp: idt82p33: add adjphase support 1395450 [v4,net-next,2/3] ptp: idt82p33: use i2c_master_send for bus write 1395474 [v4,net-next,3/3] ptp: idt82p33: optimize _idt82p33_adjfine After: By: Min Li Age: 1d 17h Tree: net-next Version: 4 Patches: 3 ----- ptp: idt82p33: add adjphase support ptp: idt82p33: use i2c_master_send for bus write ptp: idt82p33: optimize _idt82p33_adjfine Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
-rw-r--r--lib.sh102
-rwxr-xr-xpw-apply14
2 files changed, 110 insertions, 6 deletions
diff --git a/lib.sh b/lib.sh
new file mode 100644
index 0000000..0612701
--- /dev/null
+++ b/lib.sh
@@ -0,0 +1,102 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+#
+# Copyright (C) 2020 Jakub Kicinski <kuba@kernel.org>
+
+bold()
+{
+ echo -n -e "\e[1m$@"
+ [ ! -z "$@" ] && echo -n -e "\e[0m"
+}
+
+normal()
+{
+ echo -n -e "\e[0m$@"
+}
+
+pr_trunc_n()
+{
+ local len=$1
+ local str="$2"
+
+ if [ ${#str} -le $len ]; then
+ echo -n "$str"
+ else
+ echo -n ${str::len - 3}...
+ fi
+}
+
+date_to_age()
+{
+ local past="$1"
+
+ now=$(date +%s)
+ was=$(date -d "$past" +%s)
+
+ hours=$(( (now - was) / (60 * 60) ))
+
+ echo "$((hours / 24))d $((hours % 24))h"
+}
+
+subject_remove_tag()
+{
+ echo "$@" | sed -e 's/\[.*\] *//'
+}
+
+subject_get_tree()
+{
+ tree=$(echo "$@" |
+ sed -n 's/\[\(.*\)\].*/\1/p' |
+ tr , '\n' |
+ sed -n '/[a-z]$/p')
+ echo ${tree:--}
+}
+
+pw_series_download_mbox()
+{
+ local series_json="$1"
+ local out_file=${2:-mbox}
+
+ mbox_url=$(echo "$series_json" | jq -r '.mbox')
+ curl -s "$mbox_url" > $out_file
+}
+
+pw_series_print_short()
+{
+ local series_json="$1"
+
+ series_subj=$(echo "$series_json" | jq -r '.name')
+ patch_subj=$(echo "$series_json" | jq -r '.patches[0].name')
+ cover_letter=$(echo "$series_json" | jq -r '.cover_letter')
+ cnt=$(echo "$series_json" | jq -r '.patches | length')
+ author=$(echo "$series_json" | jq -r '.submitter.name')
+ ver=$(echo "$series_json" | jq -r '.version')
+ date=$(echo "$series_json" | jq -r '.date')
+
+ date="$date UTC"
+
+ name=$(subject_remove_tag "$series_subj")
+ tree=$(subject_get_tree "$patch_subj")
+ age=$(date_to_age "$date")
+ resend=$(echo "$patch_subj" | sed -n 's/.*resend.*/r/Ip')
+
+ bold "By: $author Age: $age Tree: $tree Version: $ver$resend Patches: $cnt\n"
+ echo "-----"
+
+ if [ "$cover_letter" != "null" ]; then
+ bold
+ pr_trunc_n 78 "$name"
+ normal "\n"
+ fi
+
+ echo "$series_json" |
+ jq -r '.patches[].name' |
+ while read -r patch_subj; do
+ patch_name=$(subject_remove_tag "$patch_subj")
+ echo -n " "
+ pr_trunc_n 77 "$patch_name"
+ echo
+ done
+
+ echo
+}
diff --git a/pw-apply b/pw-apply
index dafa36d..66a581e 100755
--- a/pw-apply
+++ b/pw-apply
@@ -3,6 +3,8 @@
#
# Copyright (C) 2019 Daniel Borkmann <daniel@iogearbox.net>
+source $(dirname $0)/lib.sh
+
usage()
{
cat <<-EOF
@@ -20,15 +22,15 @@ mbox_from_url()
mbox_from_series()
{
- git pw series show $1 -f simple 2> /dev/null | \
- sed ''/Complete/s//$(printf "\033[1mComplete\033[0m")/''
- git pw series download $1 mbox.i 2> /dev/null
+ srv=$(git config --get pw.server)
+ series_json=$(curl -s $srv/series/$1/)
+
+ pw_series_print_short "$series_json"
+ pw_series_download_mbox "$series_json" mbox.i
}
get_cover()
{
- srv=$(git config --get pw.server)
- series_json=$(curl -s $srv/series/$1/)
cover_json=$(echo "$series_json" | jq '.cover_letter')
link=$(echo "$cover_json" | jq -r '.mbox' )
@@ -114,7 +116,7 @@ done
body=
author=XYZ
if [ ! -z "$auto_branch" ]; then
- get_cover $series
+ get_cover
[ -z "$cover_msgid" ] && merge=
fi