]> git.sev.monster Git - dotfiles.git/blobdiff - bin/apkv
zsh: dfu updates submodules too
[dotfiles.git] / bin / apkv
index 012d8e2b74de4d6153c167a144eae1865eb126bd..2a4d342e72b320a71fa917d8b7adc9f10a5ae88f 100755 (executable)
--- a/bin/apkv
+++ b/bin/apkv
@@ -1,5 +1,5 @@
 #!/bin/sh
 #!/bin/sh
-# TODO: add duplicate checker to seeif a pkg is in multiple virtual pkgs
+# TODO: add duplicate checker to see if a pkg is in multiple virtual pkgs
 
 prog=$(basename $0)
 usage() {
 
 prog=$(basename $0)
 usage() {
@@ -13,8 +13,9 @@ Usage:
 
     $prog del <packages> <virtual>
         Remove <packages> from virtual package <virtual>. Empty virtual
 
     $prog del <packages> <virtual>
         Remove <packages> from virtual package <virtual>. Empty virtual
-        packages are removed from world. The shorthand '$prog del * <virtual>' can
-        be used to empty <virtual>.
+        packages are removed from world. The shorthand '$prog del * <virtual>'
+        can be used to empty <virtual>, which is equivalent to
+        'apk del <virtual>', though with special handling of leading dots.
 
     $prog list [-o | packages]
         List virtual packages and their contents.
 
     $prog list [-o | packages]
         List virtual packages and their contents.
@@ -84,7 +85,7 @@ if [ "$method" = list ]; then
         # ignore getopt's --, we don't care if an arg begins with - anyway
         [ "$1" = '--' ] && switch >/dev/null
 
         # ignore getopt's --, we don't care if an arg begins with - anyway
         [ "$1" = '--' ] && switch >/dev/null
 
-        all=$(apk info)
+        all=$(apk info | sort)
         # show packages if no args
         if [ $# -eq 0 ]; then
             for x in $(echo "$all" | grep '^\.'); do
         # show packages if no args
         if [ $# -eq 0 ]; then
             for x in $(echo "$all" | grep '^\.'); do
@@ -103,7 +104,7 @@ if [ "$method" = list ]; then
                 #      replacing chars may result in variable collision—but
                 #      official apk repos do not have any package names that
                 #      would cause issues
                 #      replacing chars may result in variable collision—but
                 #      official apk repos do not have any package names that
                 #      would cause issues
-                eval "__$(echo $c | tr -s '.:-' _)=1"
+                eval "__$(echo $c | tr -s '.:+-' _ | tr -s '<=~>@' "\n" | head -1)=1"
             done
         done
         # check world against owned packages
             done
         done
         # check world against owned packages
@@ -111,7 +112,7 @@ if [ "$method" = list ]; then
         orphans=$(
             for x in $(cat /etc/apk/world | grep -v '^\.'); do
                 eval "[ \${__$(
         orphans=$(
             for x in $(cat /etc/apk/world | grep -v '^\.'); do
                 eval "[ \${__$(
-                         echo $x | tr -s '.:-' _ | tr -s '<=~>@' "\n" | head -1
+                         echo $x | tr -s '.:+-' _ | tr -s '<=~>@' "\n" | head -1
                      )-0} -eq 0 ]" && echo $x
             done
         )
                      )-0} -eq 0 ]" && echo $x
             done
         )
This page took 0.046757 seconds and 4 git commands to generate.