]> pd.if.org Git - zpackage/blob - zpm-newpackage
let newpackage set additional fields
[zpackage] / zpm-newpackage
1 #!/bin/sh
2
3 builddate=$(date '+%s')
4
5 # the repo implied by the arguments
6
7 create=0
8
9 # newpackage -f pkgfile $pkgid
10 while getopts :Cf:r:d:a:u:l:p:b:In: opt; do
11         case $opt in
12                 f) pkgfile="$OPTARG" ;;
13                 d) description="$OPTARG" ;;
14                 a) arch="$OPTARG" ;;
15                 u) url="$OPTARG" ;;
16                 l) licenses="$OPTARG" ;;
17                 C) create=1 ;;
18                 p) packager="$OPTARG" ;;
19                 b) builddate="$OPTARG" ;;
20                 I) idempotent=1
21         esac
22 done
23 shift $(( OPTIND - 1))
24
25 die() {
26         echo $* 1>&2
27         exit 1
28 }
29
30 pkgid=$1
31 shift
32
33 if [ -z "$pkgid" ]; then
34         die "must specify pkgid"
35 fi
36
37 eval "$(zpm parse -E $pkgid)"
38
39 if [ -z "$pkgfile" ]; then
40         pkgfile=$ZPM_PACKAGE_FILE
41 fi
42
43 # cases C = create ok, R = full package id, F = specified package file
44
45 # immediate error
46 # C-- 100 error, must specify something
47 # --- 000 error, must specify something
48 if [ -z "$release" ] && [ -z "$pkgfile" ]; then
49         die must specify package file or complete package id
50 fi
51
52 # --F 001 error, wouldn't know which pkgid to create, could derive from file?
53 # C-F 101 error, since package wouldn't exist in file to find
54 if [ -z "$release" ]; then
55         die must specify complete package id
56 fi
57
58 # set file from pkgid
59 # CR- 110 set file from pkgid, create if needed
60 # -R- 010 set file from pkgid, create in file, error if no file
61 if [ -z "$pkgfile" ]; then
62         pkgfile="$pkgid.zpm"
63 fi
64
65 # will now be one of these
66 # CRF 111 create package in file given, create file if needed
67 # -RF 011 create package in file, error if file doesn't exist
68 if [ ! -f "$pkgfile" ]; then
69         if [ $create -eq 1 ]; then
70                 zpm init $pkgfile
71         else
72                 die $pkgfile does not exist
73         fi
74 fi
75
76 set -e
77
78 if [ "$idempotent" = 1 ]; then
79         idempotent='or ignore'
80 fi
81
82 package=$(zpm quote "$name")
83 pkgver=$(zpm quote "$version")
84 pkgrel=$(zpm quote "$release")
85 if [ -n "$description" ]; then
86         description=$(zpm quote -q "$description")
87 else
88         description=NULL
89 fi
90
91 if [ -n "$licenses" ]; then
92         licenses=$(zpm quote -q "$licenses")
93 else
94         licenses=NULL
95 fi
96
97 if [ -n "$packager" ]; then
98         packager=$(zpm quote -q "$packager")
99 else
100         packager=NULL
101 fi
102 if [ -n "$url" ]; then
103         url=$(zpm quote -q "$url")
104 else
105         url=NULL
106 fi
107
108 zpm shell $pkgfile <<EOS
109 insert $idempotent into packages ("package", "version", "release",
110 "build_time", licenses, description, url, packager)
111 values ('$package', '$pkgver', $pkgrel, $builddate, $licenses, $description,
112 $url, $packager
113 )
114 ;
115 EOS