]> pd.if.org Git - zpackage/blob - zpm-pkginfo
cleanup atree
[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 -f $pkgfile)
38
39 #.mode line
40 {
41 zpm shell $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 zpm shell $pkgfile <<-EOS
66 .header off
67 select
68         printf('%s %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         when F.filetype = 'd' then
73                 'directory'
74         else
75                 F.hash
76         end 
77         ,strftime('%Y-%m-%dT%H:%M:%S', F.mtime, 'unixepoch')
78         , coalesce(T.tags, '-')
79         ,F.path)
80 from packagefiles as F
81 left join (
82         select TG.package, TG.version, TG.release, TG.path
83         ,group_concat(tag) as tags
84         from pathtags TG
85         group by package, version, release, path
86 ) T
87 on T.package = F.package and T.version = F.version and T.release = F.release
88 and T.path = F.path
89 -- apparently going to have to do this in C because there's
90 -- no way to order the aggregated tags
91 where 
92 '$pkg' = F.package||'-'||F.version||'-'||F.release
93 ;
94 EOS
95 }
96
97 exit 0
98
99         path    text, -- filesystem path
100         mode    text, -- perms, use text for octal rep?
101         username        text, -- name of owner
102         groupname       text, -- group of owner
103         uid     integer, -- numeric uid, generally ignored
104         gid     integer, -- numeric gid, generally ignored
105         filetype varchar default 'r',
106         -- r regular file
107         -- d directory
108         -- s symlink
109         -- h hard link -- not supported
110         -- c character special and b device special files add dev number column
111         -- b block special
112         -- p fifos (i.e. pipe)
113         target  text, -- link target for links
114         -- device file dev numbers, should probably be a separate table
115         devmajor        integer,
116         devminor        integer,
117         hash    text, -- null if no actual content, i.e. anything but a regular file
118         mtime   integer,
119
120 Package:
121 Version:
122 Release:
123 URL:
124 License:
125 Packager:
126 Description:
127 Buildtime:
128 Content-Checksum:
129
130 mode user group hash mtime csvtags path
131 following order by path