tazlito annotate tazlito-wiz @ rev 389
get-flavor: run "upgrade-flavor" before extracting
author | Xander Ziiryanoff <psychomaniak@xakep.ru> |
---|---|
date | Tue Nov 10 22:46:40 2015 +0100 (2015-11-10) |
parents | 5d7c04a1ac79 |
children | d7aa98b45a0f |
rev | line source |
---|---|
pankso@254 | 1 #!/bin/sh |
pankso@254 | 2 # |
pankso@254 | 3 # Live system creation wizard in GTK using Yad. |
pankso@254 | 4 # |
pankso@324 | 5 # Copyright (C) 2012-2014 SliTaz GNU/Linux - GNU gpl v2 |
pankso@254 | 6 # Authors : Christophe Lincoln <pankso@slitaz.org> |
pankso@254 | 7 # |
pankso@254 | 8 |
pankso@254 | 9 width="560" |
pankso@254 | 10 icon="/usr/share/pixmaps/slitaz-icon.png" |
pankso@332 | 11 opts="--height=300 --width=$width --image=$icon --center |
pankso@254 | 12 --image-on-top --window-icon=$icon --title=LiveWizard" |
pankso@254 | 13 rel=$(cat /etc/slitaz-release) |
erjo@376 | 14 #[ "$rel" != "cooking" ] && rel=stable |
pankso@254 | 15 live=/home/slitaz/$rel/live |
pankso@254 | 16 db="/var/lib/tazpkg" |
psychomaniak@388 | 17 list="$live/distro-packages.list" |
pankso@254 | 18 distro="/home/slitaz/$rel/distro" |
pankso@254 | 19 addfiles="$distro/addfiles" |
pankso@254 | 20 |
pankso@254 | 21 # TazLito wizard is only for root. |
pankso@254 | 22 if test $(id -u) != 0 ; then |
pankso@254 | 23 exec tazbox su $0 |
pankso@254 | 24 exit 0 |
pankso@254 | 25 fi |
pankso@254 | 26 |
pankso@254 | 27 # I18n |
pankso@254 | 28 . /usr/bin/gettext.sh |
pankso@254 | 29 TEXTDOMAIN='tazlito-wiz' |
pankso@254 | 30 export TEXTDOMAIN |
pankso@254 | 31 |
pankso@254 | 32 # Sanity check. |
pankso@254 | 33 mkdir -p $live && cd $live |
pankso@254 | 34 #rm -rf * |
pankso@254 | 35 |
pankso@254 | 36 # |
pankso@254 | 37 # Functions |
pankso@254 | 38 # |
pankso@254 | 39 |
pankso@254 | 40 progress() { |
pankso@332 | 41 yad --progress --height="140" --width="$width" --center \ |
pankso@254 | 42 --image=$icon --image-on-top --window-icon=$icon \ |
pankso@254 | 43 --text="<b>$text</b>" --title="SliTaz Live progress" --auto-close |
pankso@254 | 44 } |
pankso@254 | 45 |
pankso@254 | 46 edit_list() { |
pankso@254 | 47 text=$(gettext "Edit the distro packages list") |
psychomaniak@388 | 48 cat $list | yad --list $opts --text="$text" \ |
pankso@254 | 49 --no-headers --print-all --separator="" \ |
pankso@254 | 50 --editable --column=0:TEXT > $live/list |
psychomaniak@388 | 51 mv -f $live/list $list |
pankso@254 | 52 } |
pankso@254 | 53 |
pankso@254 | 54 # Start page GUI |
pankso@254 | 55 start_main() { |
pankso@254 | 56 text=$(gettext "SliTaz Live system creator wizard") |
pankso@254 | 57 yad --form $opts --text="<b>$text</b>" \ |
pankso@254 | 58 --field="$(gettext "Distro name:")" \ |
pankso@254 | 59 --field="$(gettext "Based on:")":CB \ |
pankso@272 | 60 --button="Write ISO:3" \ |
pankso@254 | 61 --button="TazPanel Live:2" \ |
pankso@254 | 62 --button="gtk-cancel:1" \ |
pankso@254 | 63 --button="gtk-ok:0" \ |
psychomaniak@388 | 64 " " "core!core64!gtkonly!justx!base" |
pankso@254 | 65 } |
pankso@254 | 66 |
pankso@254 | 67 # Start page handler |
pankso@254 | 68 start() { |
pankso@254 | 69 # Store box results |
pankso@254 | 70 main=$(start_main) |
pankso@254 | 71 # Deal with --button values |
pankso@254 | 72 case $? in |
pankso@254 | 73 1) exit 0 ;; |
pankso@254 | 74 2) tazweb http://tazpanel:82/live.cgi && exit 0 ;; |
pankso@272 | 75 3) terminal -T "write-iso" -e "tazlito writeiso lzma" && exit 0 ;; |
pankso@254 | 76 *) continue ;; |
pankso@254 | 77 esac |
pankso@254 | 78 # Deal with $main values |
pankso@254 | 79 text=$(gettext "Getting flavor file and packages list...") |
psychomaniak@389 | 80 (echo "30" && \ |
psychomaniak@389 | 81 [ -z $(which xterm) ] && xterm='terminal' || xterm='xterm' |
psychomaniak@389 | 82 $xterm -geometry 70x10-0-0 -e tazpkg recharge |
pankso@254 | 83 name=$(echo $main | cut -d "|" -f 1) |
pankso@254 | 84 skel=$(echo $main | cut -d "|" -f 2) |
pankso@254 | 85 echo "$skel" > $live/skel |
pankso@254 | 86 echo "60" |
pankso@254 | 87 [ "$name" ] || name="custom" |
psychomaniak@389 | 88 $xterm -geometry 60x12-0-0 -e tazlito get-flavor $skel |
pankso@254 | 89 echo "90" && sleep 1 |
pankso@254 | 90 sed -i s"/^ISO_NAME=.*/ISO_NAME=\"$name\"/" tazlito.conf |
pankso@254 | 91 sed -i s"/^VOLUM_NAME=.*/VOLUM_NAME=\"SliTaz $name\"/" \ |
pankso@254 | 92 tazlito.conf) | progress |
pankso@254 | 93 } |
pankso@254 | 94 |
pankso@254 | 95 # Packages page GUI |
pankso@254 | 96 pkgs_main() { |
pankso@254 | 97 pkgs=$(cat $list | wc -l) |
pankso@254 | 98 skel=$(cat $live/skel) |
paul@261 | 99 text=$(eval_gettext "Packages - The \$skel has \$pkgs packages") |
pankso@254 | 100 yad --form $opts --text="<b>$text</b>" --separator=" " \ |
psychomaniak@388 | 101 --field="$(gettext "Additional packages separated by space or by line:")\\n\(will be auto added to \'Edit packages list\'\)":TXT \ |
psychomaniak@389 | 102 --button="$(gettext "Edit packages list")!document-properties:2" \ |
psychomaniak@388 | 103 --button="gtk-cancel:1" --button="gtk-ok:0" --image=tazpkg |
pankso@254 | 104 } |
pankso@254 | 105 |
pankso@254 | 106 # Packages page handler |
pankso@254 | 107 pkgs() { |
pankso@254 | 108 # Store box results |
pankso@254 | 109 main=$(pkgs_main) |
pankso@254 | 110 # Deal with --button values |
pankso@254 | 111 case $? in |
pankso@254 | 112 1) exit 0 ;; |
psychomaniak@388 | 113 2) add_to_list ; edit_list ;; |
psychomaniak@388 | 114 *) add_to_list ;; |
pankso@254 | 115 esac |
psychomaniak@388 | 116 } |
psychomaniak@388 | 117 |
psychomaniak@388 | 118 add_to_list() |
psychomaniak@388 | 119 { |
psychomaniak@388 | 120 for pkg in $(echo $main | sed s'/\\n/ /'g) |
pankso@254 | 121 do |
psychomaniak@388 | 122 vers=$(grep -E "^$pkg \|" $db/packages.desc | awk '{print $3}') |
psychomaniak@388 | 123 [ -z $vers ] || \ |
psychomaniak@388 | 124 (grep -v -q "^$pkg-$vers" $list && \ |
pankso@254 | 125 echo "$pkg-$vers" >> $list |
psychomaniak@388 | 126 ) |
psychomaniak@388 | 127 unset vers |
pankso@254 | 128 done |
pankso@254 | 129 } |
pankso@254 | 130 |
pankso@254 | 131 # Wallpaper page GUI |
pankso@254 | 132 wallpaper_main() { |
pankso@254 | 133 text=$(gettext "SliTaz desktop wallpaper") |
pankso@254 | 134 yad --form $opts --text="<b>$text</b>" --separator="" \ |
pankso@254 | 135 --field="$(gettext "Wallpaper JPG image:")":FL |
pankso@254 | 136 } |
pankso@254 | 137 |
pankso@254 | 138 # Wallpaper page handler |
pankso@254 | 139 wallpaper() { |
pankso@254 | 140 # Store box results |
pankso@254 | 141 main=$(wallpaper_main) |
pankso@254 | 142 # Deal with --button values |
pankso@254 | 143 case $? in |
pankso@254 | 144 1) exit 0 ;; |
pankso@254 | 145 *) continue ;; |
pankso@254 | 146 esac |
pankso@254 | 147 if echo "$main" | fgrep -q .jpg; then |
pankso@254 | 148 mkdir -p $addfiles/rootfs/usr/share/images |
pankso@254 | 149 cp -f $main $addfiles/rootfs/usr/share/images |
pankso@254 | 150 fi |
pankso@254 | 151 } |
pankso@254 | 152 |
pankso@254 | 153 # Last page GUI |
pankso@254 | 154 gen_distro_main() { |
pankso@254 | 155 info=$(gettext " |
pankso@254 | 156 Now it's time to generate the distro. Last chance to start over or stop. \ |
paul@261 | 157 Creating a Live system uses quite a lot of resources and takes some time. |
paul@261 | 158 Note you can still add some files to the SliTaz root filesystem or on the \ |
psychomaniak@388 | 159 cdrom.";echo |
psychomaniak@388 | 160 echo $addfiles ) |
pankso@254 | 161 text=$(gettext "<b>Generate the distribution</b>") |
pankso@254 | 162 echo "$info" | yad --text-info $opts --text="$text" \ |
pankso@254 | 163 --wrap --margins=20 |
pankso@254 | 164 } |
pankso@254 | 165 |
pankso@254 | 166 # Last page handler |
pankso@254 | 167 gen_distro() { |
pankso@254 | 168 # Store box results |
pankso@254 | 169 main=$(gen_distro_main) |
pankso@254 | 170 # Deal with --button values |
pankso@254 | 171 case $? in |
pankso@254 | 172 1) exit 0 ;; |
pankso@332 | 173 *) |
pankso@332 | 174 export output=gtk |
pankso@332 | 175 echo -e "\n" | tazlito gen-distro 2>&1 | yad \ |
pankso@254 | 176 --text-info $opts --tail \ |
pankso@254 | 177 --text="<b>$(gettext "Building the Live system...")</b>" ;; |
pankso@254 | 178 esac |
pankso@254 | 179 } |
pankso@254 | 180 |
pankso@254 | 181 # Summary |
pankso@254 | 182 summary() { |
pankso@254 | 183 . tazlito.conf |
pankso@254 | 184 iso_size=$(du -sh $distro/$ISO_NAME.iso | awk '{print $1}') |
pankso@254 | 185 distro_size=$(du -sh $distro/rootfs | awk '{print $1}') |
pankso@254 | 186 text="$(gettext "Live system summary")" |
pankso@254 | 187 echo -e "\ |
pankso@254 | 188 $(gettext "Generated ISO ") \n$distro/$ISO_NAME.iso |
pankso@254 | 189 $(gettext "Image size") \n$iso_size |
pankso@254 | 190 $(gettext "Uncompressed size") \n$distro_size" | \ |
pankso@254 | 191 yad --list $opts --text="<b>$text</b>" \ |
pankso@254 | 192 --column="Information":0 --column="Value":1 \ |
pankso@254 | 193 --button="gtk-close":0 |
pankso@254 | 194 } |
pankso@254 | 195 |
pankso@254 | 196 # |
pankso@254 | 197 # Script commands |
pankso@254 | 198 # |
pankso@254 | 199 |
pankso@254 | 200 case "$1" in |
pankso@254 | 201 usage) |
pankso@254 | 202 echo "Usage: $(basename $0) [command]" ;; |
pankso@254 | 203 *) |
pankso@254 | 204 start |
pankso@254 | 205 pkgs |
pankso@254 | 206 wallpaper |
pankso@254 | 207 gen_distro |
pankso@254 | 208 summary ;; |
pankso@254 | 209 esac |
pankso@254 | 210 |
pankso@254 | 211 exit 0 |
pankso@254 | 212 |