From e30f581817fd4907aed913833e3848b4fc4eec61 Mon Sep 17 00:00:00 2001 From: Taeyeon Mori Date: Sun, 4 Nov 2018 22:20:22 +0100 Subject: [PATCH] aur.sh: Add --python-update option --- bin/aur.sh | 58 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 15 deletions(-) diff --git a/bin/aur.sh b/bin/aur.sh index 01e53b1..2dc6685 100755 --- a/bin/aur.sh +++ b/bin/aur.sh @@ -1,5 +1,5 @@ #!/bin/zsh -# (c) 2014-2016 Taeyeon Mori +# (c) 2014-2018 Taeyeon Mori # vim: ft=sh:ts=2:sw=2:et AUR_DEFAULT_HOST="https://aur.archlinux.org/" @@ -51,6 +51,8 @@ function check_bool { # ------------------------------------------------------------------------------ # Parse commandline: anything prefixed with - is a makepkg option, others are package names +PROG="$0" + packages=() makepkg_args=() @@ -60,6 +62,7 @@ ASK=false AUR_HOST="$AUR_DEFAULT_HOST" ADD_UPDATES=false ADD_SCMPKGS=false +ADD_PYTHON=false RECURSE_DEPS=false NEED_COWER=false NEED_ROOT=false @@ -131,6 +134,10 @@ process_arg() { ADD_UPDATES=true;; -g|--scm-packages|--scm-update) ADD_SCMPKGS=true;; + --python-update) + ADD_PYTHON=true + NEEDED=false + add_makepkg_arg -f;; -S|--recurse-deps) NEED_COWER=true RECURSE_DEPS=true @@ -141,7 +148,7 @@ process_arg() { -E|--ignore-errors) IGNORE_ERRORS=true;; -h|--help) - echo "Usage $0 [-h|-u] [-S] [-L|-X] [makepkg options] " + echo "Usage $PROG [options] " echo "Taeyeon's aur.sh (c) 2014-2016 Taeyeon Mori (not related to http://aur.sh)" echo echo "A simple AUR client realized in zsh" @@ -151,6 +158,10 @@ process_arg() { echo " -u, --update Build all updated AUR packages [c]" echo " -g, --scm-update, --scm-packages" echo " Try to rebuild all *-git packages" + echo " --python-update" + echo " Rebuild all python-* packages after new python release" + echo " Equivalent to: $PROG -f \`pacman -Qm | grep 'python-.\\+'\`" + echo " Note: Doesn't honor AURSH_IGNORE_UPDATES" echo " -S, --recurse-deps" echo " Recursively build & install all dependencies [c]" echo " Implies -i (Auto-install built packages)" @@ -167,7 +178,7 @@ process_arg() { echo " -1 Short for '--threads -1'" echo " -a, --ask Review changes before building packages" echo " --exclude " - echo " Exclude packages from -u" + echo " Exclude packages (Useful with -u, -g, --python-update)" echo " --no-custom Don't use custom packages from $CUSTOMDIR" echo " --noclean Don't clean up temporary build directory when done." echo @@ -191,7 +202,7 @@ process_arg() { echo " -f, --force Force rebuilding of built packages. Implies --reinstall" echo " --no- Negate options: --no-asdeps --no-noconfirm" echo - echo "NOTE: options marked [c] require cower to be installed (\$ aur.sh -is cower)" + echo "NOTE: options marked [c] require cower to be installed (\$ $PROG -is cower)" echo " However, certain cower-only features are automatically enabled when cower is found." exit 0 ;; @@ -498,7 +509,7 @@ if $ADD_UPDATES; then declare -a updates for update in "${(f)$(cower -u)}"; do - updates=("${updates[@]}" "${${(s: :)update}[2]}") + updates+=("${${(s: :)update}[2]}") done msg "[AUR] Updates available for: ${updates[*]}" @@ -507,23 +518,40 @@ if $ADD_UPDATES; then updates=(${updates:|ignore}) fi - packages=("${updates[@]}" "${packages[@]}") + packages+=("${packages[@]}") fi -if $ADD_SCMPKGS; then - declare -a scmpkgs +packages_from_filter() { + zparseopts -D i=o_ignore a=o_add p:=o_print g:=o_global - for update in "${(f)$(pacman -Q | grep '.\+-git')}"; do - scmpkgs=("${scmpkgs[@]}" "${${(s: :)update}[1]}") - done + local -a pkgs - msg "[AUR] Installed scm packages: ${scmpkgs[*]}" + pkgs=("${(@f)$(pacman -Qqm | grep "$1")}") - if (( ${#ignore} )); then - updates=(${scmpkgs:|ignore}) + if [ -n "$o_print" ]; then + color 34 printf "${o_print[2]}" "${pkgs[*]}" + fi + + if [ -n "$o_ignore" ] && (( ${#ignore} )); then + pkgs=(${pkgs:|ignore}) + fi + + if [ -n "$o_add" ]; then + packages+=("${pkgs[@]}") + fi + + if [ -n "$o_global" ]; then + declare -ga ${o_global[2]} + eval "${o_global[2]}=(\"\${(@)pkg}\")" fi +} + +if $ADD_SCMPKGS; then + packages_from_filter -ai -p "[AUR] Adding installed scm packages: %s\n" '.\+-git' +fi - packages=("${packages[@]}" "${scmpkgs[@]}") +if $ADD_PYTHON; then + packages_from_filter -a -p "[AUR] Adding installed python packages: %s\n" 'python-.\+' fi exclude=($(echo $EXCLUDE | tr , " "))