]> pd.if.org Git - zpackage/blob - zpm-pkginfo
integrate previous work
[zpackage] / zpm-pkginfo
1 #!/bin/sh
2
3 package=${1:-$ZPMPACKAGE}
4 pkgver=${ZPMPACKAGEVER:-1.0}
5 pkgrel=${ZPMPACKAGEREL:-1}
6
7 pkgroot=/
8
9 # option for "multipackage" just to let the system know that's what you meant
10 # option to take filenames from stdin
11 # parse package, version, release from file if not given
12 while getopts :f:v:r:d:a:u:l:p:b:P: opt; do
13         case $opt in
14                 R) pkgroot="$OPTARG" ;;
15                 S) format=shell ;;
16                 f) pkgfile="$OPTARG" ;;
17                 v) pkgver="$OPTARG" ;;
18                 r) pkgrel="$OPTARG" ;;
19                 d) description="$OPTARG" ;;
20                 a) arch="$OPTARG" ;;
21                 u) url="$OPTARG" ;;
22                 l) licenses="$OPTARG" ;;
23                 p) packager="$OPTARG" ;;
24                 b) builddate="$OPTARG" ;;
25                 P) prefix="$OPTARG" ;;
26         esac
27 done
28
29 pkgfile=$1
30
31 set -e
32 if [ -z "$pkgfile" ]; then
33         pkgfile="$package-$pkgver-$pkgrel.zpm"
34 fi
35
36 zpm-test -v $pkgfile
37 pkg=$(zpm-findpkg $pkgfile)
38
39 #.mode line
40 {
41 sqlite3 $pkgfile <<-EOS
42 select 
43         printf('Package: %s
44         Version: %s
45         Release: %s
46         URL: %s
47         License: %s
48         Packager: %s
49         Description: %s
50         Buildtime: %s
51         Content-Checksum: %s
52         ',
53         package, version, release, url, licenses, packager,description,
54         strftime('%Y-%m-%dT%H:%M:%S', build_time, 'unixepoch'),
55         NULL
56         )
57 from packages
58 where 
59 '$pkg' = package||'-'||version||'-'||release
60 ;
61 EOS
62
63 #mode user group hash mtime csvtags path
64
65 sqlite3 $pkgfile <<-EOS
66 .header on
67 select
68         printf('%s %s %s %s %s %s',
69         F.mode, F.username, F.groupname,
70         case when F.filetype = 'c' then
71                 F.devmajor || ',' || F.devminor
72         else
73                 F.hash
74         end 
75         ,strftime('%Y-%m-%dT%H:%M:%S', F.mtime, 'unixepoch')
76         , T.tags
77         ,F.path)
78 from packagefiles as F
79 left join (
80         select TG.package, TG.version, TG.release, TG.path
81         ,coalesce(group_concat(tag), '-') as tags
82         from packagefiletags TG
83         group by package, version, release, path
84 ) T
85 on T.package = F.package and T.version = F.version and T.release = F.release
86 and T.path = F.path
87 -- apparently going to have to do this in C because there's
88 -- no way to order the aggregated tags
89 where 
90 '$pkg' = F.package||'-'||F.version||'-'||F.release
91 ;
92 EOS
93 }
94
95 exit 0
96
97         path    text, -- filesystem path
98         mode    text, -- perms, use text for octal rep?
99         username        text, -- name of owner
100         groupname       text, -- group of owner
101         uid     integer, -- numeric uid, generally ignored
102         gid     integer, -- numeric gid, generally ignored
103         filetype varchar default 'r',
104         -- r regular file
105         -- d directory
106         -- s symlink
107         -- h hard link -- not supported
108         -- c character special and b device special files add dev number column
109         -- b block special
110         -- p fifos (i.e. pipe)
111         target  text, -- link target for links
112         -- device file dev numbers, should probably be a separate table
113         devmajor        integer,
114         devminor        integer,
115         hash    text, -- null if no actual content, i.e. anything but a regular file
116         mtime   integer,
117
118 Package:
119 Version:
120 Release:
121 URL:
122 License:
123 Packager:
124 Description:
125 Buildtime:
126 Content-Checksum:
127
128 mode user group hash mtime csvtags path
129 following order by path