[pacman-contrib] [PATCH v2] checkupdates: add option to download updates using -Swu

Johannes Löthberg johannes at kyriasis.com
Wed Apr 24 19:27:07 UTC 2019


LGTM, thanks.

Excerpts from Eli Schwartz's message of April 24, 2019 19:44:
> This is safer than -Sywu, and should be included here for the same
> reason we wish to encourage people not to use -Sy && -Qu.
> 
> Since an option was added, we now need option parsing, so I converted
> over to using parseopts.
> 
> Signed-off-by: Eli Schwartz <eschwartz at archlinux.org>
> ---
> 
> v2: do not rely on libmakepkg, yet -- cf. discussion re: datarootdir vs.
> getting libmakepkgdir from pkg-config.
> 
>  src/checkupdates.sh.in | 61 ++++++++++++++++++++++++++++++++++--------
>  1 file changed, 50 insertions(+), 11 deletions(-)
> 
> diff --git a/src/checkupdates.sh.in b/src/checkupdates.sh.in
> index 1d01fda..8eb6e21 100644
> --- a/src/checkupdates.sh.in
> +++ b/src/checkupdates.sh.in
> @@ -21,19 +21,51 @@
>  declare -r myname='checkupdates'
>  declare -r myver='@PACKAGE_VERSION@'
>  
> +DOWNLOAD_CACHE=0
> +
>  m4_include(../lib/output_format.sh)
>  m4_include(../lib/term_colors.sh)
> +m4_include(../lib/parseopts.sh)
> +
> +usage() {
> +	cat << __EOF__
> +${myname} v${myver}
> +
> +Safely print a list of pending updates
> +
> +Usage: ${myname} [options]
> +
> +  Options:
> +    -d, --download        download pending updates to the pacman cache.
> +    -h, --help            display this help message and exit.
> +
> +Note: Export the "CHECKUPDATES_DB" variable to change the path of the temporary database.
>  
> -if (( $# > 0 )); then
> -	echo "${myname} v${myver}"
> -	echo
> -	echo "Safely print a list of pending updates"
> -	echo
> -	echo "Usage: ${myname}"
> -	echo
> -	echo 'Note: Export the "CHECKUPDATES_DB" variable to change the path of the temporary database.'
> -	exit 0
> +__EOF__
> +}
> +
> +OPT_SHORT='dh'
> +OPT_LONG=('download' 'help')
> +
> +if ! parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@"; then
> +	exit 1
>  fi
> +set -- "${OPTRET[@]}"
> +unset OPT_SHORT OPT_LONG OPTRET
> +
> +while :; do
> +	case $1 in
> +		-d|--download)
> +			DOWNLOAD_CACHE=1 ;;
> +		-h|--help)
> +			usage
> +			exit 0 ;;
> +		--)
> +			shift
> +			break ;;
> +	esac
> +	shift
> +done
>  
>  if ! type -P fakeroot >/dev/null; then
>  	error 'Cannot find the fakeroot binary.'
> @@ -57,8 +89,15 @@ if ! fakeroot -- pacman -Sy --dbpath "$CHECKUPDATES_DB" --logfile /dev/null &> /
>         error 'Cannot fetch updates'
>         exit 1
>  fi
> -pacman -Qu --dbpath "$CHECKUPDATES_DB" 2> /dev/null | grep -v '\[.*\]'
> +mapfile -t updates < <(pacman -Qu --dbpath "$CHECKUPDATES_DB" 2> /dev/null | grep -v '\[.*\]')
>  
> -exit 0
> +if (( ${#updates[@]} )); then
> +	printf '%s\n' "${updates[@]}"
> +	if (( DOWNLOAD_CACHE )); then
> +		sudo pacman -Sw --noconfirm "${updates[@]%% *}" --dbpath "$CHECKUPDATES_DB" --logfile /dev/null
> +	fi
> +else
> +	exit 1
> +fi
>  
>  # vim: set noet:
> -- 
> 2.21.0
> 
-- 
Sincerely,
  Johannes Löthberg :: SA0DEM
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 1727 bytes
Desc: not available
URL: <https://lists.archlinux.org/pipermail/pacman-contrib/attachments/20190424/b44b535e/attachment.sig>


More information about the pacman-contrib mailing list