From: Nathan Wagner Date: Sun, 30 Sep 2018 12:36:13 +0000 (+0000) Subject: improve default local database X-Git-Tag: v0.1.7~5 X-Git-Url: https://pd.if.org/git/?p=zpackage;a=commitdiff_plain;h=9ca986a5c5facbc18e141f0cfab17c704a2cd998 improve default local database 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. --- diff --git a/t/install.t b/t/install.t index 8f6d642..f31ec67 100755 --- a/t/install.t +++ b/t/install.t @@ -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 diff --git a/zpm-install b/zpm-install index 9ab9fcd..3ce6e15 100755 --- a/zpm-install +++ b/zpm-install @@ -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