diff --git a/bin/sde-list-pkg b/bin/sde-list-pkg index 7f1a219..bcb6b94 100755 --- a/bin/sde-list-pkg +++ b/bin/sde-list-pkg @@ -51,22 +51,28 @@ list_arch() { } list_desc_extenders() { + local config="$1" local repo= pkg= pattern= confdir= + shift + + [ $# -gt 0 ] || return + + if [ -z "$config" ]; then + if [ $# -eq 1 ]; then + pattern=$1 + else + pattern="{$( echo $* | tr ' ' ',' )}" + fi - if [ $# -eq 0 ]; then - return - elif [ $# -eq 1 ]; then - pattern=$1 + for repo in $( cd "$SDEROOT/package"; ls -1d * 2> /dev/null ); do + ( cd "$SDEROOT"; eval ls -1d package/$repo/*/pkg_${pattern}_{pre,post}.conf 2> /dev/null | cut -d/ -f-3 | sort -u ) + done | while read confdir; do + pkg=${confdir##*/} + echo $confdir/$pkg.desc + done else - pattern="{$( echo $* | tr ' ' ',' )}" + echo_abort 1 "Not yet implemented" fi - - for repo in $( cd "$SDEROOT/package"; ls -1d * 2> /dev/null ); do - ( cd "$SDEROOT"; eval ls -1d package/$repo/*/pkg_${pattern}_{pre,post}.conf 2> /dev/null | cut -d/ -f-3 | sort -u ) - done | while read confdir; do - pkg=${confdir##*/} - echo $confdir/$pkg.desc - done } list_desc_repo() { @@ -85,7 +91,7 @@ list_desc_repo() { if [ -n "$extenders" ]; then # get desc of extenders of those packages - list_desc_extenders "$@" + list_desc_extenders '' "$@" fi fi } @@ -114,7 +120,7 @@ list_desc() { if [ -n "$extenders" ]; then # get desc of extenders of those packages - list_desc_extenders "$@" + list_desc_extenders '' "$@" fi else for repo; do @@ -145,6 +151,11 @@ list_desc() { echo "$desc" fi done + + if [ -n "$extenders" ]; then + # get desc of extenders of those packages + list_desc_extenders "$config" "$@" + fi elif [ $# -gt 0 ]; then if [ $# -eq 1 ]; then pattern=$1 @@ -159,6 +170,12 @@ list_desc() { echo "$desc" fi done + + if [ -n "$extenders" ]; then + # get desc of extenders of those packages + list_desc_extenders "$config" $( grep "^X [^ ]\+ [^ ]\+ $pattern " "$SDEROOT/config/$config/packages" | + cut -d' ' -f 5 ) + fi fi else echo_abort -1 "$config: config not found."