slitaz-dev-tools view slitaz-release/slitaz-release @ rev 309

Remove ashism ==
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Feb 26 08:23:49 2019 +0100 (2019-02-26)
parents 478e3c929081
children
line source
1 #!/bin/sh
2 #
3 # slitaz-release - SliTaz stable and cooking release helper. The script
4 # will check hostname to handle host specific release tasks (tank, pangolin,
5 # mirror, local)
6 #
7 # Copyright (C) 2017 SliTaz GNU/Linux - BSD License
8 #
9 #. /lib/libtaz.sh # Is not installed on pangolin & mirror (slitaz 4.0)
11 version="$1"
13 # Parse cmdline options and store values in a variable.
14 for opt in "$@"; do
15 opt_name="${opt%%=*}"
16 opt_name="$(echo -n "${opt_name#--}" | tr -c 'a-zA-Z0-9' '_')"
17 case "$opt" in
18 --*=*) export $opt_name="${opt#*=}" ;;
19 --*) export $opt_name="yes" ;;
20 esac
21 done
23 # --repos=/path/to/local/repos
24 if [ "$repos" ]; then
25 local_repos="$repos"
26 else
27 local_repos="$HOME/Projects"
28 fi
30 help() {
31 cat << EOT
33 $(colorize 38 "Usage:") slitaz-release [version] [--options]
35 $(colorize 38 "Options:")
36 --repos=
37 --now
39 $(colorize 033 "Local repos :") $local_repos
40 $(colorize 033 "Documentation :") http://www.slitaz.org/en/devel/release.php
42 EOT
43 }
45 # Colorize message
46 colorize() {
47 : ${color=$1}
48 shift
49 case "$color" in
50 0*) echo -e "\\033[${color:-38}m$@\\033[39m" ;;
51 *) echo -e "\\033[1;${color:-38}m$@\\033[0;39m" ;;
52 esac; unset color
53 }
55 title() {
56 echo ""; colorize 033 "$@"
57 }
59 check_string() {
60 if [ "$slitaz_release" != "$version" ]; then
61 read=1
62 colorize 031 "Wrong string: $slitaz_release"
63 echo " * $1"
64 else
65 ready=0
66 colorize 031 "SliTaz release: $version"
67 fi
68 }
70 #
71 # Handle commands
72 #
73 case "$1" in
75 info)
76 echo -n "Hostname:"; hostname ;;
78 "") help; exit 0 ;;
80 esac
82 #
83 # Handle host specific tasks
84 #
85 case "$(hostname)" in
87 tank)
88 # Build host with chroots and built ISOs
89 slitaz="/home/slitaz"
90 ;;
92 mirror)
93 # Host packages and official ISOs
94 packages=""
95 ;;
97 pangolin)
98 # Host all Hg repositories
99 repos="/home/slitaz/repos"
100 backups="/home/slitaz/backups"
102 # Stable wok
103 title "Checking repo: wok-stable"
104 cd ${repos}/wok-stable; hg up
105 slitaz_release=$(hg parents --template '{latesttag}')
106 check_string "stable wok is not yet tagged to $version"
108 # Cooking wok
109 title "Checking repo: wok"
110 cd ${repos}/wok; hg up
111 slitaz_release=$(hg parents --template '{latesttag}')
112 check_string "cooking wok is not yet ready to be copied"
114 # Ready for --now ?
115 if [ "$now" ] && [ "$ready" = 0 ]; then
116 echo "Releasing SliTaz: $version"
117 cd ${repos}/wok-stable; hg up
118 previous_release=$(hg parents --template '{latesttag}')
119 echo "Previous release string: $previous_release"
121 echo "Archiving current wok-stable..."
122 cd ${repos}
123 tar czf wok-stable-${previous_release}.tar.gz wok-stable
124 mv wok-stable-${previous_release}.tar.gz ${backups}
126 echo "Copying current wok to wok-stable"
127 rm -rf wok-stable && cp -a wok wok-stable
129 else
130 echo "Not yet ready to release SliTaz $version on $(hostname)"
131 fi
133 echo "" ;;
135 *)
136 # Local Hg repos: set stable string and Hg tags
137 for repo in slitaz-base-files slitaz-doc wok; do
138 if [ ! -d "$local_repos/$repo" ]; then
139 echo ""
140 colorize 031 "Missing repos: $local_repos/$repo"
141 help; exit 1
142 fi
143 done
145 # /etc/slitaz-release
146 title "Checking file: /etc/slitaz-release"
147 base_files="$local_repos/slitaz-base-files/rootfs"
148 slitaz_release=$(cat $base_files/etc/slitaz-release)
149 check_string "slitaz-base-files must be modified and wok updated"
151 # isolinux.cfg
152 title "Checking file: isolinux.cfg"
153 isolinux_cfg="$local_repos/wok/syslinux/stuff/isolinux.cfg"
154 slitaz_release=$(grep "MENU TITLE" $isolinux_cfg | cut -d " " -f 6)
155 check_string "syslinux package must be modified and wok updated"
157 # slitaz-doc
158 title "Checking repo: slitaz-doc"
159 cd ${local_repos}/slitaz-doc
160 slitaz_release=$(hg parents --template '{latesttag}')
161 check_string "slitaz-doc should provide relnotes and be tagged"
163 # wok: the current cooking wok will be copied to wok-stable on
164 # Hg server and then it will continue its own life with security updates.
165 # Tagging the wok lets us have the initial state of the new release.
166 title "Checking repo: wok"
167 cd ${local_repos}/wok
168 slitaz_release=$(hg parents --template '{latesttag}')
169 check_string "the wok should be tagged to $version"
170 echo ""
172 if [ "$ready" = 0 ]; then
173 echo "Ready to release SliTaz $version :-)"
174 else
175 echo "Not yet ready to release SliTaz $version"
176 fi
178 echo "" ;;
179 esac
181 exit 0