]> pd.if.org Git - zpackage/commitdiff
improve default local database
authorNathan Wagner <nw@hydaspes.if.org>
Sun, 30 Sep 2018 12:36:13 +0000 (12:36 +0000)
committerNathan Wagner <nw@hydaspes.if.org>
Sun, 30 Sep 2018 12:36:13 +0000 (12:36 +0000)
Where a local database is not specified on the command line, and a root
directory is, zpm-install will now use var/lib/zpm/local.db inside the
root directory for the local database.

install is now smarter about finding a package to install within
the package file.

t/install.t
zpm-install

index 8f6d642ffe775454f5902b8b3beda61d5ce9f29f..f31ec6774bb994b263421f83a2b96a83f9033f34 100755 (executable)
@@ -142,7 +142,7 @@ newpkg $pkgid bin/sh
 okexit setup package $pkgid
 require rm bin/sh
 PF=$pkgid.zpm
-zpm install -v -R. -d local.db -f $PF $pkgid | diagstdin
+zpm install -R. -d local.db -f $PF $pkgid | diagstdin
 okexit installed $pkgid
 oktest -f bin/sh
 
index 9ab9fcd6c6720cdd7e0e31f0110eb6f93f67d778..3ce6e156dcfcabc306efd72646db4b07b8b1b595 100755 (executable)
@@ -9,7 +9,6 @@ dryrun=0
 verbose=0
 runscripts=1
 runconfigure=1
-localdb=/var/lib/zpm/local.db
 
 # zpm-install [-SCn] [ -d localdb ] [ -f pkgfile ] [ -R installroot ] pkgstr ...
 while getopts f:d:R:nSCv opt; do
@@ -38,38 +37,38 @@ if [ -z "$pkgfile" ]; then
        pkgfile=$ZPM_PACKAGE_FILE
 fi
 
-# cases C = create ok, R = full package id, F = specified package file
+# cases R = full package id, F = specified package file
 
 # immediate error
-# C-- 100 error, must specify something
-# --- 000 error, must specify something
+# -- 00 error, must specify something
 if [ -z "$release" ] && [ -z "$pkgfile" ]; then
        die must specify package file or complete package id
 fi
 
 # TODO look in package file
-# --F 001 error, wouldn't know which pkgid to create, could derive from file?
-# C-F 101 error, since package wouldn't exist in file to find
+# -F 01 error, wouldn't know which pkgid to create, could derive from file?
 if [ -z "$release" ]; then
-       die must specify complete package id
+       # must have package file, or would have died above
+       pkgid=$(zpm findpkg -f $pkgfile $pkgid)
+       if [ -n "$pkgid" ]; then
+               eval "$(zpm parse -E $pkgid)"
+       fi
+fi
+
+if [ -z "$pkgid" ]; then
+       die "$0 can't figure out a package id"
 fi
 
 # set file from pkgid
-# CR- 110 set file from pkgid, create if needed
-# -R- 010 set file from pkgid, create in file, error if no file
+# R- 10 set file from pkgid, create in file, error if no file
 if [ -z "$pkgfile" ]; then
        pkgfile="$pkgid.zpm"
 fi
 
 # will now be one of these
-# CRF 111 create package in file given, create file if needed
-# -RF 011 create package in file, error if file doesn't exist
+# RF 11 create package in file, error if file doesn't exist
 if [ ! -f "$pkgfile" ]; then
-       if [ $create -eq 1 ]; then
-               zpm init $pkgfile
-       else
-               die $pkgfile does not exist
-       fi
+       die $pkgfile does not exist
 fi
 
 if [ "$idempotent" = 1 ]; then
@@ -80,6 +79,11 @@ package=$(zpm quote "$name")
 pkgver=$(zpm quote "$version")
 pkgrel=$(zpm quote "$release")
 
+if [ -z "$localdb" ]; then
+       : rootdir=${rootdir%%/}
+       localdb=${rootdir:-/}/var/lib/zpm/local.db
+fi
+
 ZPMDB=$localdb
 export ZPMDB