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 == ##
 

Reply via email to