X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-add;h=91c7b189610834679c3af386b7449d9a3a696e4d;hb=ada8405d470a7b13eba173bcacfd660e13dfed0d;hp=1b7bff4d3296d34e15cb08544709f98d7646569b;hpb=c20db3d43f58abb15e22fca0fe12e23ffb21d0d5;p=zpackage diff --git a/zpm-add b/zpm-add index 1b7bff4..91c7b18 100755 --- a/zpm-add +++ b/zpm-add @@ -1,7 +1,10 @@ #!/bin/sh -pkgver=${ZPMPKGVER:-1.0} -pkgrel=${ZPMPKGREL:-1} +# zpm add -f pkgfile pkgid [ files ] + +# no package file? take from ZPM_PACKAGE_FILE +# no pkgid ? take from ZPM_PACKAGE_ID +# no id impossible die() { echo $* 1>&2 @@ -26,52 +29,86 @@ cleanpath() { printf "%s" "$clean" } +verbose=0 tags= -create=0 +isconfig=0 +addcontent=1 # option for "multipackage" just to let the system know that's what you meant # option to take filenames from stdin # parse package, version, release from file if not given -while getopts :f:v:r:l:P:S:Ccu:g: opt; do +# TODO -l follow symlinks, -L follow symlinks, adding all, links and targets +while getopts :f:vr:l:P:S:cu:g:N opt; do case $opt in + N) addcontent=0 ;; f) pkgfile="$OPTARG" ;; - v) pkgver="$OPTARG" ;; - r) pkgrel="$OPTARG" ;; - l) licenses="$OPTARG" ;; P) prefix="$OPTARG" ;; S) strip=$(cleanpath "$OPTARG"); ;; t) tags="$tags $OPTARG" ;; - c) tags="$tags configuration" ;; - C) create=1 ;; + c) isconfig=1 ;; u) username="$OPTARG" ;; g) groupname="$OPTARG" ;; - *) echo 'unknown option' $opt; exit 1 ;; + v) verbose=1 ;; + *) echo 'unknown option' $OPTARG; exit 1 ;; esac done shift $((OPTIND - 1)) -package="$1" +if [ $isconfig -eq 1 ]; then + tags="$tags configuration" +fi + +if [ $verbose -gt 1 ]; then + set -x +fi + +pkgid="$1" shift -if [ -z "$package" ]; then - die "must specify package" +eval $(zpm parse -E $pkgid) + +if [ -z "$pkgfile" ]; then + pkgfile=$ZPM_PACKAGE_FILE +fi + +if [ -z "$release" ]; then + if [ -z "$pkgfile" ]; then + die "cannot determine package file" + else + pkgstr=$(zpm findpkg -f $pkgfile $pkgid) + if [ -z "$pkgstr" ]; then + die "unable to find package id for $pkgid in $pkgfile" + fi + pkgid=$pkgstr + # need to reparse the new package id + eval $(zpm parse -E $pkgid) + fi +fi + +# look for a .zpm file here +if [ -z "$pkgfile" ] && [ -f "$pkgid.zpm" ]; then + pkgfile="$pkgid.zpm" fi -set -e if [ -z "$pkgfile" ]; then - pkgfile="$package-$pkgver-$pkgrel.zpm" + die "cannot determine package file" fi # check for package file if [ ! -f "$pkgfile" ]; then - if [ $create -eq 1 ]; then - echo creating $pkgfile - zpm newpackage -I -f $pkgfile -v $pkgver -r $pkgrel $package || exit 1 - else - echo $pkgfile does not exist - exit 1 - fi + echo $pkgfile does not exist + exit 1 fi +set -e zpm test -v $pkgfile +set +e + +if [ $verbose -gt 0 ]; then + echo adding to $pkgfile $pkgid +fi + +package=$(zpm quote "$name") +pkgver=$(zpm quote "$version") +pkgrel=$(zpm quote "$release") #strip=$(cleanpath "$strip") for path in $*; do @@ -108,15 +145,19 @@ for path in $*; do rpath="$prefix/$rpath" fi - filetype=$(zpm stat -f '%t' "$path") + filetype=$(zpm stat -l -f '%t' "$path") hash='NULL' target='NULL' case "$filetype" in regular) filetype=r - hash=$(zpm addfile $pkgfile "$path") - if [ $? -ne 0 ]; then - die "zpm addfile failed ($?): $pkgfile $path" + if [ $addcontent -eq 1 ]; then + hash=$(zpm addfile $pkgfile "$path") + if [ $? -ne 0 ]; then + die "zpm addfile failed ($?): $pkgfile $path" + fi + else + hash=$(zpm hash "$path") fi hash="'$hash'" ;; @@ -131,6 +172,7 @@ for path in $*; do esac # TODO check that we have such a package,version,release + #cat < $target"} -printf "%s\n" $path +if [ $verbose -gt 0 ]; then + printf "%s\n" $path +fi + done