tazlito annotate tazlito-wiz @ rev 522

Remove cat process
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Oct 20 12:29:01 2019 +0200 (2019-10-20)
parents 483d38768393
children c869b6f17992
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 #
al@399 5 # Copyright (C) 2012-2015 SliTaz GNU/Linux - GNU gpl v2
pankso@254 6 # Authors : Christophe Lincoln <pankso@slitaz.org>
pankso@254 7 #
pankso@254 8
al@399 9 default_icon="--image=slitaz-icon"
al@399 10 opts="--height=320 --width=600 --center --image-on-top --window-icon=slitaz-icon --title=LiveWizard"
pankso@254 11 rel=$(cat /etc/slitaz-release)
erjo@376 12 #[ "$rel" != "cooking" ] && rel=stable
al@399 13 live="/home/slitaz/$rel/live"
al@399 14 db='/var/lib/tazpkg'
psychomaniak@388 15 list="$live/distro-packages.list"
pankso@254 16 distro="/home/slitaz/$rel/distro"
pankso@254 17 addfiles="$distro/addfiles"
pankso@254 18
al@399 19
pankso@254 20 # TazLito wizard is only for root.
al@399 21
al@399 22 if [ $(id -u) -ne 0 ]; then
pankso@254 23 exec tazbox su $0
pankso@254 24 exit 0
pankso@254 25 fi
pankso@254 26
al@399 27
pankso@254 28 # I18n
al@399 29
al@399 30 . /lib/libtaz.sh
al@399 31 export TEXTDOMAIN='tazlito'
al@399 32
pankso@254 33
pankso@254 34 # Sanity check.
al@399 35
pankso@254 36 mkdir -p $live && cd $live
pankso@254 37 #rm -rf *
pankso@254 38
al@399 39
pankso@254 40 #
pankso@254 41 # Functions
pankso@254 42 #
pankso@254 43
al@399 44 edit_list() {
al@399 45 cat $list | yad --list $opts --image='system-software-update' \
al@399 46 --text="<b>$(_ 'Edit the distro packages list')</b>" \
al@399 47 --no-headers --print-all --separator='' \
al@399 48 --editable --column=0:TEXT > "$live/list"
al@399 49 mv -f "$live/list" "$list"
pankso@254 50 }
pankso@254 51
al@399 52
al@399 53 # Start page GUI
al@399 54
al@399 55 start_main() {
al@399 56 yad --form $opts $default_icon \
al@399 57 --text="<b>$(_ 'SliTaz Live system creator wizard')</b>" \
al@399 58 --field="$(_ "Distro name:")" \
al@399 59 --field="$(_ "Based on:")":CB \
psychomaniak@411 60 --field="":LBL --field=" ":LBL \
psychomaniak@411 61 --field="$(_ "*.flavor file (optional):")":SFL \
al@399 62 --button='gtk-help:4' \
al@399 63 --button="$(_ 'Write ISO')!iso-image-burn:3" \
al@399 64 --button="$(_ 'TazPanel Live'):2" \
al@399 65 --button='gtk-cancel:1' \
al@399 66 --button='gtk-go-forward:0' \
al@399 67 'custom' 'core!core64!gtkonly!justx!base'
pankso@254 68 }
pankso@254 69
pankso@254 70
pankso@254 71 # Start page handler
al@399 72
pankso@254 73 start() {
pankso@254 74 # Store box results
pankso@254 75 main=$(start_main)
al@399 76
pankso@254 77 # Deal with --button values
pankso@254 78 case $? in
al@399 79 1) exit 0;;
al@399 80 2) tazpanel live; exit 0;;
al@399 81 3) terminal -T 'write-iso' -e 'tazlito writeiso lzma'; exit 0;;
al@399 82 4) tazweb 'file:///usr/share/doc/tazlito/tazlito.html'; exit 0;;
al@399 83 *) continue;;
pankso@254 84 esac
al@399 85
pankso@254 86 # Deal with $main values
al@399 87
al@399 88 (
al@399 89 export output='raw'
al@399 90 # Numbers are moved the progressbar
al@399 91 echo '30'
al@399 92 # Lines started with '#' are displayed in the log
al@399 93 tazpkg recharge | sed 's|^.*|#&|'
al@399 94 name="$(echo $main | cut -d'|' -f1)"; name="${name:-custom}"
al@399 95 skel="$(echo $main | cut -d'|' -f2)"
psychomaniak@411 96 flvf="$(echo $main | cut -d'|' -f5)"
pascal@514 97 if [ ${flvf/*./} = flavor ]; then
psychomaniak@411 98 cp -a $flvf $live ; skel=$(basename $flvf)
psychomaniak@411 99 fi
al@399 100 echo "$skel" > $live/skel
al@399 101 echo '60'
al@399 102 tazlito get-flavor $skel | sed 's|^.*|#&|'
al@399 103 echo '90'
al@399 104 sed -i "s|^ISO_NAME=.*|ISO_NAME=\"$name\"|" tazlito.conf
al@399 105 sed -i "s|^VOLUM_NAME=.*|VOLUM_NAME=\"SliTaz $name\"|" tazlito.conf
al@399 106 ) | \
al@399 107 yad --progress $opts --image='system-software-update' \
al@399 108 --text="<b>$(_ 'Getting flavor file and packages list...')</b>" \
al@399 109 --enable-log="$(_ 'Log')" --log-expanded --button='gtk-go-forward:0'
al@399 110
pankso@254 111 }
pankso@254 112
al@399 113
pankso@254 114 # Packages page GUI
al@399 115
pankso@254 116 pkgs_main() {
pankso@254 117 pkgs=$(cat $list | wc -l)
pankso@254 118 skel=$(cat $live/skel)
al@442 119 text=$(_p 'Packages - The "%s" has %d package' 'Packages - The "%s" has %d packages' "$pkgs" "$skel" "$pkgs")
al@399 120 yad --form $opts --image='application-x-tazpkg' \
al@399 121 --text="<b>$text</b>" --separator=' ' \
al@399 122 --field="$(_ 'Additional packages separated by space or by line:')\\n$(_ '(will be auto added to "Edit packages list")')":TXT \
al@399 123 --button="$(_ 'Edit packages list')!document-properties:2" \
al@399 124 --button='gtk-cancel:1' --button='gtk-go-forward:0'
pankso@254 125 }
pankso@254 126
al@399 127
pankso@254 128 # Packages page handler
al@399 129
pankso@254 130 pkgs() {
pankso@254 131 # Store box results
pankso@254 132 main=$(pkgs_main)
pankso@254 133 # Deal with --button values
pankso@254 134 case $? in
pankso@254 135 1) exit 0 ;;
psychomaniak@388 136 2) add_to_list ; edit_list ;;
psychomaniak@388 137 *) add_to_list ;;
pankso@254 138 esac
psychomaniak@388 139 }
psychomaniak@388 140
al@399 141
al@399 142 add_to_list() {
al@399 143 for pkg in $(echo $main | sed s'/\\n/ /'g); do
psychomaniak@388 144 vers=$(grep -E "^$pkg \|" $db/packages.desc | awk '{print $3}')
psychomaniak@388 145 [ -z $vers ] || \
psychomaniak@388 146 (grep -v -q "^$pkg-$vers" $list && \
pankso@254 147 echo "$pkg-$vers" >> $list
psychomaniak@388 148 )
psychomaniak@388 149 unset vers
pankso@254 150 done
pankso@254 151 }
pankso@254 152
al@399 153
pankso@254 154 # Wallpaper page GUI
al@399 155
pankso@254 156 wallpaper_main() {
al@399 157 yad --form $opts --image='preferences-desktop-wallpaper' \
al@399 158 --text="<b>$(_ 'SliTaz desktop wallpaper')</b>" --separator='' \
al@399 159 --field="$(_ 'Wallpaper JPG image:')":FL \
al@399 160 --button='gtk-cancel:1' --button='gtk-go-forward:0'
pankso@254 161 }
pankso@254 162
al@399 163
pankso@254 164 # Wallpaper page handler
al@399 165
pankso@254 166 wallpaper() {
pankso@254 167 # Store box results
pankso@254 168 main=$(wallpaper_main)
pankso@254 169 # Deal with --button values
pankso@254 170 case $? in
pankso@254 171 1) exit 0 ;;
pankso@254 172 *) continue ;;
pankso@254 173 esac
pankso@254 174 if echo "$main" | fgrep -q .jpg; then
pankso@254 175 mkdir -p $addfiles/rootfs/usr/share/images
pankso@254 176 cp -f $main $addfiles/rootfs/usr/share/images
pankso@254 177 fi
pankso@254 178 }
pankso@254 179
al@399 180
pankso@254 181 # Last page GUI
al@399 182
pankso@254 183 gen_distro_main() {
al@399 184 (
al@399 185 _ "
pankso@254 186 Now it's time to generate the distro. Last chance to start over or stop. \
paul@261 187 Creating a Live system uses quite a lot of resources and takes some time.
al@399 188 Note you can still add some files to the SliTaz root filesystem or on the CD-ROM."
al@399 189 echo
al@399 190 echo $addfiles
al@399 191 ) | yad --text-info $opts $default_icon \
al@399 192 --text="<b>$(_ 'Generate the distribution')</b>" --wrap --margins=20 \
al@399 193 --button='gtk-cancel:1' --button='gtk-go-forward:0'
pankso@254 194 }
pankso@254 195
al@399 196
pankso@254 197 # Last page handler
al@399 198
pankso@254 199 gen_distro() {
pankso@254 200 # Store box results
pankso@254 201 main=$(gen_distro_main)
al@399 202
pankso@254 203 # Deal with --button values
pankso@254 204 case $? in
pankso@254 205 1) exit 0 ;;
pankso@332 206 *)
al@399 207 export output='raw'
pankso@332 208 echo -e "\n" | tazlito gen-distro 2>&1 | yad \
al@399 209 --text-info $opts $default_icon --tail \
al@399 210 --text="<b>$(_ 'Building the Live system...')</b>" \
al@399 211 --button='gtk-go-forward:0'
al@399 212 ;;
pankso@254 213 esac
pankso@254 214 }
pankso@254 215
al@399 216
pankso@254 217 # Summary
al@399 218
pankso@254 219 summary() {
pascal@454 220 . ./tazlito.conf
pankso@254 221 iso_size=$(du -sh $distro/$ISO_NAME.iso | awk '{print $1}')
pankso@254 222 distro_size=$(du -sh $distro/rootfs | awk '{print $1}')
al@399 223 text="$(_ 'Live system summary')"
pankso@254 224 echo -e "\
al@399 225 $(_ 'Generated ISO') \n$distro/$ISO_NAME.iso
al@399 226 $(_ 'Image size') \n$iso_size
al@399 227 $(_ 'Uncompressed size') \n$distro_size" | \
al@399 228 yad --list $opts $default_icon --text="<b>$text</b>" \
al@399 229 --column="$(_ 'Information')":0 --column="$(_ 'Value')":1 \
pankso@254 230 --button="gtk-close":0
pankso@254 231 }
pankso@254 232
al@399 233
pankso@254 234 #
pankso@254 235 # Script commands
pankso@254 236 #
pankso@254 237
pankso@254 238 case "$1" in
pankso@254 239 usage)
pankso@254 240 echo "Usage: $(basename $0) [command]" ;;
al@399 241 *)
pankso@254 242 start
pankso@254 243 pkgs
al@399 244 wallpaper
pankso@254 245 gen_distro
pankso@254 246 summary ;;
pankso@254 247 esac
pankso@254 248
pankso@254 249 exit 0