sup view sup @ rev 6

Add sup and libsup.sh (for beta testing/playing)
author Christophe Lincoln <pankso@slitaz.org>
date Fri Feb 24 07:10:28 2017 +0100 (2017-02-24)
parents
children ea32afc2e4da
line source
1 #!/bin/sh
2 #
3 # SliTaz Users Package - Minimal cmdline tools - README for devel info
4 #
5 # Copyright (C) 2017 SliTaz GNU/Linux - BSD License
6 # Author: Christophe Lincoln <pankso@slitaz.org>
7 #
8 if [ -f "/usr/lib/slitaz/libsup.sh" ]; then
9 . /usr/lib/slitaz/libsup.sh
10 else
11 . ./libsup.sh
12 fi
14 # Sanity check
15 if [ ! "/home/$USER" ]; then
16 gettext "Not a valid user: "; echo "id $(id -u)" && exit 1
17 fi
18 mkdir -p ${cache} ${installed}
20 #
21 # Functions
22 #
24 help() {
25 cat << EOT
27 $(boldify $(gettext "Usage:")) $(basename $0) [command] [package]
29 $(boldify $(gettext "Commands:"))
30 -c cook
31 -e extract
32 -i install
33 -l list
35 $(boldify $(gettext "Options:"))
36 --init cook $(gettext "Initialize sup build environment")
37 --verbose all $(gettext "Display more output message")
39 EOT
40 exit 0
41 }
43 cook_init() {
44 mkdir -p ${wok} ${cooked}
45 if [ ! -d "$supcook/wok" ]; then
46 ln -s ${wok} ${supcook}/wok
47 fi
48 }
50 #
51 # Commands
52 #
54 case "$1" in
56 -c|cook)
57 # Cook in $cache/cook amd mv pkg to a visible dir
58 pkg="$2"
59 receip="$wok/$pkg/receip"
60 cache="$cache/cook"
62 # Handle --init
63 if [ "$init" ]; then
64 gettext "Initializing sup cook environment..."
65 cook_init
66 status && exit 0
67 fi
69 # Sanity check
70 if [ ! "$pkg" ]; then
71 gettext "You must specify a package to cook:"
72 boldify " sup cook [package]" && exit 1
73 fi
74 if [ ! -f "$receip" ]; then
75 gettext "Can't find receip in wok for:"
76 colorize 31 " $pkg" && exit 1
77 fi
79 newline
80 gettext "Building package:"; colorize 36 " $pkg"
81 separator
82 rm -rf ${cache} && mkdir -p ${cache} ${cooked}
84 # Check receip
85 [ "$verbose" ] && gettext "Checking receip variables..."
86 . ${receip}
87 for var in PACKAGE VERSION SHORT_DESC MAINTAINER LICENSE WEB_SITE
88 do
89 value="$(. $receip; eval echo \$$var)"
90 case "$var" in
91 PACKAGE|VERSION|SHORT_DESC|MAINTAINER|LICENSE)
92 if [ ! "$value" ]; then
93 gettext "Empty variable:"; colorize 31 " $var=\"\""
94 exit 1
95 fi ;;
96 WEB_SITE)
97 if [ ! "$value" ]; then
98 gettext "Empty variable:"; colorize 31 " $var=\"\""
99 gettext "You can use:"
100 boldify " http://scn.slitaz.org/?sup&pkg=$PACKAGE"
101 exit 1
102 fi ;;
103 esac
104 done
105 [ "$verbose" ] && status
107 # Set $PACKAGE-$VERSION.sup and copy pkg to cache
108 supfile="$PACKAGE-$VERSION.sup"
109 cp -rf ${wok}/${pkg} ${cache}/${supfile%.sup}
110 cd ${cache}/${supfile%.sup}
112 # Mouve to hidden dir: ~/.local and ~/.config
113 for dir in local config; do
114 mv files/${dir} files/.${dir}
115 done
117 # Add $build_date
118 echo "build_date=\"$(date "+%Y-%m-%d %H:%M")\"" >> ${receip}
120 gettext "Creating compressed archive..."
121 find files | cpio -o -H newc --quiet | lzma e files.lzma -si
122 rm -rf files
123 find . -print | cpio -o -H newc --quiet > ${cooked}/${supfile}
124 status
126 size="$(du -sh $cooked/$supfile | cut -d " " -f 1)"
127 echo "$(gettext 'Packages:') $(colorize 33 $supfile) ($size)"
128 sed -i "/^build_date=/"d ${receip}
129 rm -rf ${cache} && newline ;;
131 -e|extract)
132 # Extract package.sup to current dir
133 pkg="$2"
135 # Sanity check
136 if [ ! "$pkg" ]; then
137 gettext "Missing package in argument:"
138 colorize 35 " sup extract [package.sup]" && exit 1
139 fi
140 if [ ! -f "$pkg" ]; then
141 gettext "Can't find package file:"; colorize 35 " $pkg" && exit 1
142 fi
144 newline
145 gettext "Extract package:"; colorize 36 " $(basename $pkg)"
146 separator
148 extract_sup "$pkg"
150 echo "$(gettext 'Packages:') $(colorize 33 $pkg) ($size)"
151 newline ;;
153 -i|install)
154 # Download/extract run install() in $cache/install
155 pkg="$2"
157 if [ ! "$pkg" ]; then
158 gettext "Missing package in argument:"
159 boldify " sup install [name|pkg.sup]" && exit 1
160 fi
162 # Sup pkg in current dir
163 if [ -f "$pkg" ]; then
164 install_sup "$pkg" && exit 0
165 fi
167 # Sup cooked
168 if [ -f "$cooked/$pkg" ]; then
169 install_sup "$cooked/$pkg" && exit 0
170 fi
172 gettext "Can't find sup package:"; colorize 31 " $pkg" ;;
174 -l|list)
175 installed_nb=$(ls ${installed} | wc -l)
176 newline
177 echo -n "$(colorize 36 $(gettext 'Installed sup packages:'))"
178 boldify " $installed_nb"
179 separator
180 for pkg in $(ls ${installed}); do
181 . ${wok}/${pkg}/receip
182 echo "$pkg $(indent 26 $VERSION) $(indent 42 $MAINTAINER)"
183 done
184 if [ "$installed_nb" == 0 ]; then
185 gettext "No sup packages installed"; echo
186 fi
187 newline
188 if [ -d "$wok" ]; then
189 echo -n "$(colorize 35 $(gettext 'Sup packages in your wok:'))"
190 boldify " $(ls ${wok} | wc -l)"
191 separator
192 for pkg in $(ls ${wok}); do
193 . ${wok}/${pkg}/receip
194 echo "$pkg $(indent 26 $VERSION) $(indent 42 $MAINTAINER)"
195 done
196 newline
197 fi ;;
199 ""|-h|help) help ;;
201 *)
202 # Display pkg info if installed
203 pkg="$1"
204 if [ -f "$installed/$pkg/receip" ]; then
205 . ${installed}/${pkg}/receip
206 newline
207 gettext "Installed package:"; colorize 32 " $PACKAGE $VERSION"
208 separator
209 echo "Short desc: $SHORT_DESC"
210 echo ""
211 boldify "Installed files size: $sup_size"
212 #
213 cat ${installed}/${pkg}/files.list
214 newline
215 else
216 gettext "Can't find installed package:"; colorize 31 " $pkg"
217 fi ;;
219 esac && exit 0