On 25/09/2019 6:49 am, Michael Gmelin wrote:
Author: grembo (ports committer)
Date: Tue Sep 24 20:49:33 2019
New Revision: 352662
URL: https://svnweb.freebsd.org/changeset/base/352662

Log:
   freebsd-update: Add `updatesready' and `showconfig' commands
`freebsd-update updatesready' can be used to check if there are any pending
   fetched updates that can be installed.
`freebsd-update showconfig' writes freebsd-update's configuration to
   stdout.
This also changes the exit code of `freebsd-update install' to 2 in case
   there are no updates pending to be installed and there wasn't a fetch phase
   in the same invocation. This allows scripts to tell apart these error
   conditions without breaking existing jail managers.
See freebsd-update(8) for details. PR: 240757, 240177, 229346
   Reviewed by: manpages (bcr), sectam (emaste), yuripv
   Differential Revision:       https://reviews.freebsd.org/D21473

Would love to see these MFC'd. Consistency between freebsd-update on all our supported versions for one of our major user features would be awesome.

Modified:
   head/usr.sbin/freebsd-update/freebsd-update.8
   head/usr.sbin/freebsd-update/freebsd-update.sh

Modified: head/usr.sbin/freebsd-update/freebsd-update.8
==============================================================================
--- head/usr.sbin/freebsd-update/freebsd-update.8       Tue Sep 24 20:36:43 
2019        (r352661)
+++ head/usr.sbin/freebsd-update/freebsd-update.8       Tue Sep 24 20:49:33 
2019        (r352662)
@@ -25,7 +25,7 @@
  .\"
  .\" $FreeBSD$
  .\"
-.Dd June 14, 2017
+.Dd September 24, 2019
  .Dt FREEBSD-UPDATE 8
  .Os
  .Sh NAME
@@ -155,13 +155,24 @@ Note that this command may require up to 500 MB of spa
  depending on which components of the
  .Fx
  base system are installed.
+.It Cm updatesready
+Check if there are fetched updates ready to install.
+Returns exit code 2 if there are no updates to install.
  .It Cm install
  Install the most recently fetched updates or upgrade.
+Returns exit code 2 if there are no updates to install
+and the
+.Cm fetch
+command wasn't passed as an earlier argument in the same
+invocation.
  .It Cm rollback
  Uninstall the most recently installed updates.
  .It Cm IDS
  Compare the system against a "known good" index of the
  installed release.
+.It Cm showconfig
+Show configuration options after parsing conffile and command
+line options.
  .El
  .Sh TIPS
  .Bl -bullet

Modified: head/usr.sbin/freebsd-update/freebsd-update.sh
==============================================================================
--- head/usr.sbin/freebsd-update/freebsd-update.sh      Tue Sep 24 20:36:43 
2019        (r352661)
+++ head/usr.sbin/freebsd-update/freebsd-update.sh      Tue Sep 24 20:49:33 
2019        (r352662)
@@ -62,9 +62,11 @@ Commands:
    cron         -- Sleep rand(3600) seconds, fetch updates, and send an
                    email if updates were found
    upgrade      -- Fetch upgrades to FreeBSD version specified via -r option
+  updatesready -- Check if there are fetched updates ready to install
    install      -- Install downloaded updates or upgrades
    rollback     -- Uninstall most recently installed updates
    IDS          -- Compare the system against an index of "known good" files
+  showconfig   -- Show configuration
  EOF
        exit 0
  }
@@ -503,7 +505,8 @@ parse_cmdline () {
                        ;;
# Commands
-               cron | fetch | upgrade | install | rollback | IDS)
+               cron | fetch | upgrade | updatesready | install | rollback |\
+               IDS | showconfig)
                        COMMANDS="${COMMANDS} $1"
                        ;;
@@ -827,7 +830,7 @@ install_check_params () {
                echo "No updates are available to install."
                if [ $ISFETCHED -eq 0 ]; then
                        echo "Run '$0 fetch' first."
-                       exit 1
+                       exit 2
                fi
                exit 0
        fi
@@ -3333,6 +3336,21 @@ cmd_upgrade () {
        upgrade_run || exit 1
  }
+# Check if there are fetched updates ready to install
+cmd_updatesready () {
+       # Construct a unique name from ${BASEDIR}
+       BDHASH=`echo ${BASEDIR} | sha256 -q`
+
+       # Check that we have updates ready to install
+       if ! [ -L ${BDHASH}-install ]; then
+               echo "No updates are available to install."
+               exit 2
+       fi
+
+       echo "There are updates available to install."
+       echo "Run '$0 install' to proceed."
+}
+
  # Install downloaded updates.
  cmd_install () {
        install_check_params
@@ -3349,6 +3367,13 @@ cmd_rollback () {
  cmd_IDS () {
        IDS_check_params
        IDS_run || exit 1
+}
+
+# Output configuration.
+cmd_showconfig () {
+       for X in ${CONFIGOPTIONS}; do
+               echo $X=$(eval echo \$${X})
+       done
  }
#### Entry point
_______________________________________________
svn-src-h...@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"



_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to