|
|
#!/bin/sh # --- SDE-COPYRIGHT-NOTE-BEGIN --- # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # # Filename: bin/sde-config-package # Copyright (C) 2009 The OpenSDE Project # # More information can be found in the files COPYING and README. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. A copy of the # GNU General Public License can be found in the file COPYING. # --- SDE-COPYRIGHT-NOTE-END ---
#Description: Alters the description of a package #Alias: pkg
[ -n "$SDEROOT" ] || export SDEROOT=$( cd "${0%/*}/.."; pwd -P )
. "$SDEROOT/lib/libsde.in" . "$SDEROOT/lib/sde-package.in"
config_usage() { local progname=$(echo ${0##*/} | tr '-' ' ')
[ $# -eq 0 ] || echo_error "$@" cat <<-EOT Usage: $progname <pkg>* <action> [<tag> [<value>]]*
Actions: get returns the content of a tag set sets a tag value, removing any previous value add appends a new value for a tag remove removes a tag, optionally matching a pattern show dumps the fully description lint cleans the description EOT
exit 1 }
# parse arguments shortopts='?' longopts='help' options=$( getopt -o "$shortopts" -l "$longopts" -- "$@" ) [ $? -eq 0 ] || config_usage
eval set -- "$options"
while [ $# -gt 0 ]; do case "$1" in --help) config_usage ;; --) shift; break ;; -*) config_usage "$1: Not implemented" ;; *) break esac shift done
# extract packages list # pkgs= while [ $# -gt 1 ]; do case "$1" in get|set|add|remove|show|list) # action break; esac
x=$(package_parse "$1" | tr '\n' ' ') if [ -n "$x" ]; then pkgs="$pkgs $x" shift else config_usage "$1: Invalid package" fi done pkgs=$(echo "$pkgs" | sed -e 's,^ \+,,' -e 's, \+$,,') [ -n "$pkgs" -a $# -gt 0 ] || config_usage
action="$1"; shift
tag2pattern() { local tag=$(echo "$tag" | tr 'a-z' 'A-Z') local pattern=$(grep -e '^\[' "$SDEROOT/etc/desc_format" | grep -e "\[$tag\]" | sed -e 's, *(\*) *$,,' -e 's, \+,\\|,g' | tr -d '[]') if [ -z "$pattern" ]; then return; elif expr "$pattern" : '.*|' > /dev/null; then pattern="\\($pattern\\)" fi
echo "^\[$pattern\]" }
case "$action" in get) # extract given tags pattern= for tag; do x=$(tag2pattern "$tag") if [ -n "$x" ]; then pattern="$pattern -e '$x'" else echo_error "$tag: Invalid tag" fi done
files= for x in $pkgs; do files="$files $x/${x#*/}.desc" done
cd "$SDEROOT/package" eval "grep $pattern $files" ;; *) echo_error "$action: Not yet implemented." esac
|