Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package rfc-read for openSUSE:Factory checked in at 2026-08-14 22:09:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rfc-read (Old) and /work/SRC/openSUSE:Factory/.rfc-read.new.1258 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rfc-read" Fri Aug 14 22:09:52 2026 rev:4 rq:1371215 version:2.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/rfc-read/rfc-read.changes 2024-10-29 14:37:19.046912210 +0100 +++ /work/SRC/openSUSE:Factory/.rfc-read.new.1258/rfc-read.changes 2026-08-14 22:10:18.872237632 +0200 @@ -1,0 +2,34 @@ +Fri Aug 14 10:39:03 UTC 2026 - Michael Vetter <[email protected]> + +- Update to 2.0.1: + * More robust listing of titles + * Improved bash completion + +------------------------------------------------------------------- +Fri Aug 14 10:37:41 UTC 2026 - Michael Vetter <[email protected]> + +- Update to 2.0.0: + * This release contains breaking changes on the rfc sync command only. If you + don’t use this command, nothing changes for you. + rfc sync now uses rsync, because the RFC Editor website removed the + tarballs the previous implementation relied on. It exits with code 5 if + rsync is not installed. + * Remove the week, month, and all arguments of rfc sync; the command doesn’t take any argument anymore. + * Fix a regression in 1.0.0 that broke the fallback on wget if curl wasn’t available + +------------------------------------------------------------------- +Fri Aug 14 10:36:56 UTC 2026 - Michael Vetter <[email protected]> + +- Update to 1.0.3: + * Numeric sort cached RFCs (fixes a regression in the previous version) + * Right align numeric RFCs + * List drafts + +------------------------------------------------------------------- +Fri Aug 14 10:36:30 UTC 2026 - Michael Vetter <[email protected]> + +- Update to 1.0.2: + * Show titles when listing RFCs + * Add a Bash completion script in rfc.bash + +------------------------------------------------------------------- Old: ---- v1.0.1.tar.gz New: ---- v2.0.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rfc-read.spec ++++++ --- /var/tmp/diff_new_pack.SaKnHd/_old 2026-08-14 22:10:19.426257166 +0200 +++ /var/tmp/diff_new_pack.SaKnHd/_new 2026-08-14 22:10:19.430257307 +0200 @@ -1,7 +1,7 @@ # # spec file for package rfc-read # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: rfc-read -Version: 1.0.1 +Version: 2.0.1 Release: 0 Summary: Read RFCs from the command-line License: MIT @@ -26,20 +26,31 @@ Requires: bash Requires: curl Requires: less +Recommends: rsync BuildArch: noarch %description A tool written in Bash to read RFCs from the command-line. It fetches RFCs and drafts from the Web and caches them locally. +%package bash-completion +Summary: Bash completion for %{name} +Requires: bash-completion +Supplements: (%{name} and bash-completion) +BuildArch: noarch + +%description bash-completion +Bash completion for %{name}. + %prep %setup -q -n rfc-%{version} %build -sed -i "s|/env bash|/bash|g" rfc +sed -i '1s|^#! */usr/bin/env bash|#!/bin/bash|' rfc %install install -D -m755 rfc %{buildroot}%{_bindir}/rfc install -D -m644 man/rfc.1 %{buildroot}%{_mandir}/man1/rfc.1 +install -D -m644 rfc.bash %{buildroot}%{_datadir}/bash-completion/completions/rfc %files %license LICENSE @@ -47,3 +58,6 @@ %{_bindir}/rfc %{_mandir}/man1/rfc.1%{?ext_man} +%files bash-completion +%{_datadir}/bash-completion/completions/rfc + ++++++ v1.0.1.tar.gz -> v2.0.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rfc-1.0.1/.github/workflows/test.yml new/rfc-2.0.1/.github/workflows/test.yml --- old/rfc-1.0.1/.github/workflows/test.yml 2024-10-28 12:13:14.000000000 +0100 +++ new/rfc-2.0.1/.github/workflows/test.yml 2026-08-04 13:31:48.000000000 +0200 @@ -7,18 +7,24 @@ branches: [ master ] jobs: - build: + test: + name: Test (Bash ${{ matrix.bash }}) runs-on: ubuntu-latest timeout-minutes: 3 + strategy: + fail-fast: false + matrix: + bash: [ "3.2", "4", "5" ] + + container: bash:${{ matrix.bash }} + steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v6 - - name: Install bc - uses: awalsh128/cache-apt-pkgs-action@latest - with: - packages: bc + - name: Install dependencies + run: apk add --no-cache bc curl make - name: Tests run: | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rfc-1.0.1/CHANGELOG.md new/rfc-2.0.1/CHANGELOG.md --- old/rfc-1.0.1/CHANGELOG.md 2024-10-28 12:13:14.000000000 +0100 +++ new/rfc-2.0.1/CHANGELOG.md 2026-08-04 13:31:48.000000000 +0200 @@ -1,10 +1,49 @@ # rfc Changelog +## v2.0.1 (2026/08/04) + +All the changes in this release have been implemented by @baumea. + +* more robust listing of titles +* improved bash completion + +## v2.0.0 (2026/06/10) + +This release contains breaking changes on the `rfc sync` command only. +If you don’t use this command, nothing changes for you. + +* `rfc sync` now uses `rsync`, because the RFC Editor website removed the tarballs + the previous implementation relied on. It exits with code `5` if `rsync` is not + installed. +* Remove the `week`, `month`, and `all` arguments of `rfc sync`; the command + doesn’t take any argument anymore. + +Other changes: + +* Fix a regression in 1.0.0 that broke the fallback on `wget` if `curl` wasn’t available + +## v1.0.3 (2026/06/10) + +All the changes in this release have been implemented by @baumea. + +* numeric sort cached RFCs (fixes a regression in the previous version) +* right align numeric RFCs +* list drafts + +## v1.0.2 (2026/06/10) + +All the changes in this release have been implemented by @baumea. + +* Show titles when listing RFCs +* Add a Bash completion script in `rfc.bash` + ## v1.0.1 (2024/10/28) -* Fix formatting in the manpage (#22) +* Fix formatting in the manpage ([#22][i22]) * Fix a missing space in the `--help` text +[i22]: https://github.com/bfontaine/rfc/issues/22 + ## v1.0.0 (2024/03/26) * Change the default cache directory location from `~/.RFCs` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rfc-1.0.1/LICENSE new/rfc-2.0.1/LICENSE --- old/rfc-1.0.1/LICENSE 2024-10-28 12:13:14.000000000 +0100 +++ new/rfc-2.0.1/LICENSE 2026-08-04 13:31:48.000000000 +0200 @@ -1,4 +1,4 @@ -Copyright © 2013-2024 – Baptiste Fontaine +Copyright © 2013-2026 – Baptiste Fontaine Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rfc-1.0.1/README.md new/rfc-2.0.1/README.md --- old/rfc-1.0.1/README.md 2024-10-28 12:13:14.000000000 +0100 +++ new/rfc-2.0.1/README.md 2026-08-04 13:31:48.000000000 +0200 @@ -36,6 +36,7 @@ - `2`: unrecognized option/subcommand - `3`: unable to connect to the network - `4`: can't find `curl` nor `wget` +- `5`: `rfc sync` can’t find `rsync` ## Install @@ -43,7 +44,7 @@ ```sh mkdir -p ~/bin -curl -sL https://raw.githubusercontent.com/bfontaine/rfc/v1.0.1/rfc > ~/bin/rfc +curl -sL https://raw.githubusercontent.com/bfontaine/rfc/v2.0.1/rfc > ~/bin/rfc chmod u+x ~/bin/rfc ``` @@ -79,8 +80,10 @@ ### Requirements +- Bash 3.2+ - `curl` or `wget`. It uses `$CURL` if it’s set, and fallback on `curl` and then `wget`. - `less` or another pager. It uses `$PAGER` if it’s set. +- `rsync` only if you want to use `rfc sync` ## Customization diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rfc-1.0.1/man/rfc.1 new/rfc-2.0.1/man/rfc.1 --- old/rfc-1.0.1/man/rfc.1 2024-10-28 12:13:14.000000000 +0100 +++ new/rfc-2.0.1/man/rfc.1 2026-08-04 13:31:48.000000000 +0200 @@ -1,6 +1,6 @@ .\" generated with Ronn-NG/v0.9.1 .\" http://github.com/apjanke/ronn-ng/tree/0.9.1 -.TH "RFC" "1" "October 2024" "" +.TH "RFC" "1" "June 2026" "" .SH "NAME" \fBrfc\fR \- Read RFCs in your terminal .SH "SYNOPSIS" @@ -15,8 +15,8 @@ \fBlist\fR List locally\-available RFCs\. .TP -\fBsync\fR [week|month|all] -Batch download RFCs\. \fBweek\fR and \fBmonth\fR respectively download only RFCs that were added or updated during the last week/month\. \fBall\fR (default) downloads all RFCs\. It might take some time; be patient\. +\fBsync\fR +Batch download all RFCs using \fBrsync\fR\. It might take some time; be patient\. .TP \fBclear\fR Clear the local cache\. @@ -40,6 +40,8 @@ 3 Network error\. .P 4 Neither \fBcurl\fR nor \fBwget\fR are installed\. +.P +5 \fBrsync\fR is not installed\. .SH "ENVIRONMENT" .TP \fBRFC_DIR\fR diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rfc-1.0.1/man/rfc.md new/rfc-2.0.1/man/rfc.md --- old/rfc-1.0.1/man/rfc.md 2024-10-28 12:13:14.000000000 +0100 +++ new/rfc-2.0.1/man/rfc.md 2026-08-04 13:31:48.000000000 +0200 @@ -17,10 +17,9 @@ * `list`: List locally-available RFCs. - * `sync` [week\|month\|all]: - Batch download RFCs. `week` and `month` respectively download only RFCs - that were added or updated during the last week/month. - `all` (default) downloads all RFCs. It might take some time; be patient. + * `sync`: + Batch download all RFCs using `rsync`. It might take some time; be + patient. * `clear`: Clear the local cache. @@ -49,6 +48,8 @@ 4 Neither `curl` nor `wget` are installed. + 5 `rsync` is not installed. + ## ENVIRONMENT * `RFC_DIR`: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rfc-1.0.1/rfc new/rfc-2.0.1/rfc --- old/rfc-1.0.1/rfc 2024-10-28 12:13:14.000000000 +0100 +++ new/rfc-2.0.1/rfc 2026-08-04 13:31:48.000000000 +0200 @@ -3,15 +3,16 @@ # rfc # # Author: Baptiste Fontaine +# Co-Authors: see https://github.com/bfontaine/rfc/graphs/contributors?all=1 # License: MIT -# Version: 1.0.1 (2024/10/28) +# Version: 2.0.1 (2026/08/04) # # URL: https://github.com/bfontaine/rfc # __rfc() { - local VERSION='1.0.1' + local VERSION='2.0.1' local PAGER=${PAGER:-less} local fetch_cmd=${CURL:-curl} local rfc_dir @@ -23,14 +24,15 @@ local UNRECOGNIZED_CMD=2 local NETWORK_ERROR=3 local NO_CURL_WGET=4 + local NO_RSYNC=5 # URLs local REPO_HOME='https://github.com/bfontaine/rfc' local ISSUES_URL='https://github.com/bfontaine/rfc/issues' - local RFCS_TGZ_BASEURL='https://www.rfc-editor.org/in-notes/tar/' - local RFCS_BASEURL='https://www.rfc-editor.org/rfc/' - local DRAFTS_BASEURL='https://www.ietf.org/id/' + local RFCS_RSYNC_URL='rsync.rfc-editor.org::rfcs-text-only' + local RFCS_BASEURL='https://www.rfc-editor.org/rfc' + local DRAFTS_BASEURL='https://www.ietf.org/id' if [ -n "$RFC_DIR" ]; then rfc_dir="$RFC_DIR" @@ -67,26 +69,6 @@ esac } - get_ftp_url() { - local tmp - tmp=$(mktemp) - # $1 = pattern of the file we're looking for - local pattern="$1" - local fetch_exit_code= - - fetch_url "$RFCS_TGZ_BASEURL" "$tmp" - fetch_exit_code=$? - - if [ "$fetch_exit_code" -ne 0 ]; then - return $fetch_exit_code - fi - - # Lines have the following format: - # <li><a href="RFCs0001-0500.tar.gz"> RFCs0001-0500.tar.gz</a></li> - # We want this __^^^^^^^^^^^^^^^^^^^^ - < "$tmp" grep "$pattern" | cut -d'"' -f2 - } - get_rfc() { fetch_url "$RFCS_BASEURL/rfc$1.txt" "$rfc_dir/$1" return $? @@ -132,7 +114,23 @@ # rfc list list() { - \ls -1 "$rfc_dir" | grep '^[0-9]\{1,\}$' | sort -n | sed 's/^/RFC /' + ( + cd "$rfc_dir" + \ls -1 | grep -v '^_' | sort -n | xargs awk ' + /[A-Za-z]/ && !prev { i++ } + /[A-Za-z]/ && i == 2 { title = title " " $0 } + /[A-Za-z]/ && i > 2 { n = split(FILENAME, a, "/") + gsub(" +", " ", title) + gsub("^ *", "", title) + if (int(a[n])) + printf "RFC %5d: %s\n", a[n], title + else + printf "RFC %s: %s\n", a[n], title + i = 0 + title = "" + nextfile } + { prev = $0 }' + ) } # rfc search <pattern> @@ -145,52 +143,43 @@ return 0 } - # rfc sync [week|month|all] + # rfc sync # shellcheck disable=SC2164 sync_rfcs() { - local name=RFC-all.tar.gz - case "$1" in - month|30|30days) name=$(get_ftp_url "30daysTo.*gz") ;; - week|7|7days) name=$(get_ftp_url "7daysTo.*gz") ;; - all) ;; - *) - # Support 'sync' without any argument as an alias to 'sync all' - if [ ! -z "$1" ]; then - echo "Unrecognized 'sync' target: $1" - return $UNRECOGNIZED_CMD - fi ;; - esac - # shellcheck disable=SC2181 - if [ $? -ne 0 ]; then - return $? + if [ -n "$1" ]; then + echo "'sync' doesn't take any argument." >&2 + return $UNRECOGNIZED_CMD fi - # This shouldn't happen. - if [ -z "$name" ]; then - echo "I couldn't find the requested archive." >&2 - echo "Please report this: $ISSUES_URL" >&2 - return $NOT_FOUND + if ! which rsync > /dev/null 2>&1; then + echo "Error: 'rfc sync' needs rsync!" >&2 + return $NO_RSYNC + fi + + # --info=progress2 (rsync >= 3.1) shows a single overall progress + # line; older rsyncs fall back to listing the transferred files. + local progress='-v' + if rsync --info=help > /dev/null 2>&1; then + progress='--info=progress2' fi mkdir -p "$rfc_dir/_tmp" - if fetch_url "$RFCS_TGZ_BASEURL$name" "$rfc_dir/_tmp/$name"; then - : - else - exit $NETWORK_ERROR + if ! rsync -az "$progress" --include='rfc[0-9]*.txt' --exclude='*' \ + "$RFCS_RSYNC_URL/" "$rfc_dir/_tmp/"; then + rm -rf "$rfc_dir/_tmp" + return $NETWORK_ERROR fi + echo "Moving the RFCs into the cache; this can take a minute..." cd "$rfc_dir/_tmp" - tar -xzf "$name" - rm -f "$name" - [ -d in-notes ] && cd in-notes + # The regex must be in a variable: bash < 3.2 can't parse it inline. + local rfc_txt_re='^rfc([0-9]+)\.txt$' for f in rfc*.txt; do - echo "$f" | grep -q '^rfc[0-9]\{1,\}\.txt$' - if [ "$?" -eq "0" ]; then - n=${f##rfc}; - n=${n%%.txt}; - mv -f "$f" "$rfc_dir/$n" + if [[ "$f" =~ $rfc_txt_re ]]; then + mv -f "$f" "$rfc_dir/${BASH_REMATCH[1]}" fi done rm -rf "$rfc_dir/_tmp" + echo "Done." } # rfc help @@ -204,10 +193,7 @@ rfc search [OPTS] X # Search for X in local RFCs using grep with OPTS passed through rfc list # List locally available RFCs - rfc sync [week|month|all] # batch download RFCs. `week` and `month` - respectively download only RFCs that were - added/updated during the last week/month. - `all` (default) downloads all RFCs. It might + rfc sync # batch download all RFCs using rsync. It might take some time, be patient. rfc clear # clear the cache @@ -234,7 +220,7 @@ set -x ; fi - if which curl > /dev/null 2>&1; then + if ! which curl > /dev/null 2>&1; then if which wget > /dev/null 2>&1; then fetch_cmd='wget' else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rfc-1.0.1/rfc.bash new/rfc-2.0.1/rfc.bash --- old/rfc-1.0.1/rfc.bash 1970-01-01 01:00:00.000000000 +0100 +++ new/rfc-2.0.1/rfc.bash 2026-08-04 13:31:48.000000000 +0200 @@ -0,0 +1,7 @@ +__rfc_complete() { + local cur=$2 + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $(compgen -W "--version --help search list sync clear $(rfc list | grep -oP '(?<=^RFC )[^:]*')" -- $cur) ) + fi +} && +complete -F __rfc_complete rfc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rfc-1.0.1/test/tests.sh new/rfc-2.0.1/test/tests.sh --- old/rfc-1.0.1/test/tests.sh 2024-10-28 12:13:14.000000000 +0100 +++ new/rfc-2.0.1/test/tests.sh 2026-08-04 13:31:48.000000000 +0200 @@ -45,7 +45,7 @@ assert_raises "[ -f '$RFC_DIR/42' ]" assert_raises "[ ! -f '$XDG_CACHE_HOME/RFCs/42' ]" - assert "$rfc list" 'RFC 42' + assert "$rfc list" 'RFC 42: Message Data Types' ## == teardown == ##
