This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision | |||
|
scripts:xze [2024/08/21 22:40] hyphop |
scripts:xze [2026/05/21 22:13] (current) hyphop |
||
|---|---|---|---|
| Line 25: | Line 25: | ||
| -c | -C # check is krescue ready | -c | -C # check is krescue ready | ||
| - | -mn | --meta-remove | + | -mn | --meta-remove |
| - | -MM | --meta | + | -MM | --meta |
| - | tag=value | + | --meta-update | -MU # update/ |
| + | tag=value | ||
| -p # add padding | -p # add padding | ||
| Line 39: | Line 40: | ||
| IN=FreeBSD-aarch64-13.0-Khadas-EDGE-V-361468M-20200528.img | IN=FreeBSD-aarch64-13.0-Khadas-EDGE-V-361468M-20200528.img | ||
| ./xze " | ./xze " | ||
| - | --meta \ | + | --meta \ |
| - | label=FreeBSD \ | + | label=FreeBSD \ |
| - | builder=Serega \ | + | builder=Serega \ |
| - | date=" | + | date=" |
| - | match=BOARD=Edge \ | + | match=BOARD=Edge \ |
| - | link=http:// | + | link=http:// |
| - | duration=60 \ | + | duration=60 \ |
| - | desc=" | + | desc=" |
| - | # META minimal | + | # META minimal |
| ./xze Manjaro-ARM-xfce-vim1-20.08.img.xz -p -MM LABEL=manjaro BOARD=VIM1 | ./xze Manjaro-ARM-xfce-vim1-20.08.img.xz -p -MM LABEL=manjaro BOARD=VIM1 | ||
| Line 56: | Line 57: | ||
| ./xze *.xz | ./xze *.xz | ||
| - | # UPDATE/ | + | # UPDATE/ |
| - | + | ||
| - | all prev meta will be replaced by new values | + | |
| ./xze *.xz -M newvar=NEWVALUE | ./xze *.xz -M newvar=NEWVALUE | ||
| + | |||
| + | # UPDATE ONLY SOME META TAGS (keep others intact) | ||
| + | |||
| + | ./xze *.xz --meta-update label=" | ||
| # READ META alternative ways | # READ META alternative ways | ||
| tail -c4096 FILE.xz | xz -dc | tail -c4096 FILE.xz | xz -dc | ||
| - | # or | + | # or |
| curl -s -jkLf -r-4096 https:// | curl -s -jkLf -r-4096 https:// | ||
| Line 128: | Line 131: | ||
| SHOW_PROGRESS=1 | SHOW_PROGRESS=1 | ||
| + | META_UPDATE= | ||
| + | META_LOW_CASE= | ||
| + | META_PRE= | ||
| + | META_POST= | ||
| for a in $@; do | for a in $@; do | ||
| Line 134: | Line 140: | ||
| shift | shift | ||
| case $a in | case $a in | ||
| - | -m) | + | -m) |
| - | META=1 | + | META=1 |
| - | break | + | break |
| - | ;; | + | ;; |
| - | -M) | + | -M) |
| - | META=2 | + | META=2 |
| - | break | + | break |
| - | ;; | + | ;; |
| - | -MM|--meta) | + | -MM|--meta) |
| - | META=2 | + | META=2 |
| - | META_LOW_CASE=1 | + | META_LOW_CASE=1 |
| - | META_PRE="## | + | META_PRE="## |
| - | META_POST="## | + | META_POST="## |
| - | break | + | break |
| - | ;; | + | ;; |
| - | -mn|--meta--remove|--remove-meta) | + | --meta-update|-MU) |
| - | META_REMOVE=1 | + | META=2 |
| - | ;; | + | META_UPDATE=1 |
| - | -p) | + | META_LOW_CASE=1 |
| - | ADD_PAD=1 | + | META_PRE="## |
| - | ;; | + | META_POST="## |
| - | -c) | + | break |
| - | KRESCUE_CHK_END=1 | + | ;; |
| - | ;; | + | -mn|--meta--remove|--remove-meta) |
| - | -C) | + | META_REMOVE=1 |
| - | KRESCUE_CHK_END=1 | + | ;; |
| - | KRESCUE_CHK_MT=1 | + | -p) |
| - | ;; | + | ADD_PAD=1 |
| - | -f) | + | ;; |
| - | FORCE=1 | + | -c) |
| - | OPTS=" | + | KRESCUE_CHK_END=1 |
| - | continue | + | ;; |
| - | ;; | + | -C) |
| - | -T*) | + | KRESCUE_CHK_END=1 |
| - | T=${a# | + | KRESCUE_CHK_MT=1 |
| - | continue | + | ;; |
| - | ;; | + | -f) |
| - | -B*) | + | FORCE=1 |
| - | B=${a# | + | OPTS=" |
| - | continue | + | continue |
| - | ;; | + | ;; |
| - | -h|--help) | + | -T*) |
| - | USAGE FULL | + | T=${a#-T} |
| - | ;; | + | continue |
| - | *.xz) | + | ;; |
| - | [ -f " | + | -B*) |
| - | CIN=" | + | B=${a#-B} |
| - | continue | + | continue |
| - | ;; | + | ;; |
| - | *) | + | -h|--help) |
| - | [ -f " | + | USAGE FULL |
| - | | + | ;; |
| - | | + | *.xz) |
| - | } | + | [ -f " |
| - | OPTS=" | + | CIN=" |
| - | ;; | + | continue |
| + | ;; | ||
| + | *) | ||
| + | [ -f " | ||
| + | [ " | ||
| + | continue | ||
| + | } | ||
| + | OPTS=" | ||
| + | ;; | ||
| esac | esac | ||
| done | done | ||
| Line 196: | Line 210: | ||
| [ " | [ " | ||
| [ " | [ " | ||
| - | [ " | + | [ " |
| meta="/ | meta="/ | ||
| Line 280: | Line 294: | ||
| ( | ( | ||
| [ " | [ " | ||
| - | pixz=$(which pixz || which xz) | + | pixz=$(which pixz || which xz) |
| - | echo "[i] calculating uncompressed size ...">& | + | echo "[i] calculating uncompressed size ...">& |
| - | S1=$($pixz -dc < " | + | S1=$($pixz -dc < " |
| } | } | ||
| echo "## | echo "## | ||
| Line 295: | Line 309: | ||
| for m in $META_PRE | for m in $META_PRE | ||
| - | echo " | + | echo " |
| done | done | ||
| Line 301: | Line 315: | ||
| M=" | M=" | ||
| [ " | [ " | ||
| - | # echo " | + | #echo " |
| - | M=$(echo " | + | M=$(echo " |
| - | m1=$(echo " | + | m1=$(echo " |
| - | m2=$(echo ${M#*:}) | + | m2=$(echo ${M#*:}) |
| - | # echo "[=] ' | + | #echo "[=] ' |
| - | case $m1 in | + | case $m1 in |
| - | | + | label) |
| - | | + | REQ_label=" |
| - | | + | ;; |
| - | | + | date) |
| - | | + | ADD_date=" |
| - | | + | ;; |
| - | | + | image) |
| - | | + | ADD_image=" |
| - | | + | ;; |
| - | | + | builder) |
| - | | + | ADD_builder=" |
| - | | + | ;; |
| - | | + | desc) |
| - | | + | ADD_desc=" |
| - | | + | ;; |
| - | | + | duration) |
| - | | + | ADD_duration=" |
| - | | + | ;; |
| - | | + | match) |
| - | | + | REQ_match=" |
| - | | + | META_POST=" |
| - | | + | ;; |
| - | | + | board) |
| - | | + | m1=match |
| - | | + | m2=" |
| - | | + | REQ_match=" |
| - | esac | + | esac |
| - | M=" | + | M=" |
| - | echo " | + | echo " |
| - | # } | + | #} |
| } | } | ||
| - | | + | |
| # echo "[i] add meta $M">& | # echo "[i] add meta $M">& | ||
| done | done | ||
| Line 349: | Line 363: | ||
| [ " | [ " | ||
| [ " | [ " | ||
| - | [ " | + | [ " |
| [ " | [ " | ||
| for m in $META_POST | for m in $META_POST | ||
| - | echo " | + | echo " |
| done | done | ||
| Line 368: | Line 382: | ||
| CLEAN | CLEAN | ||
| # echo "[i] DONE">& | # echo "[i] DONE">& | ||
| + | exit 0 | ||
| + | } | ||
| + | |||
| + | META_UPDATE_ONLY(){ | ||
| + | echo " | ||
| + | [i] update meta block | ||
| + | ">& | ||
| + | |||
| + | [ -s " | ||
| + | |||
| + | tmp=" | ||
| + | cp " | ||
| + | |||
| + | for m in " | ||
| + | [ " | ||
| + | case " | ||
| + | *=*) | ||
| + | key=${m%%=*} | ||
| + | val=${m#*=} | ||
| + | |||
| + | # normalize key to lower-case | ||
| + | key_lc=$(printf ' | ||
| + | |||
| + | # escape value for sed replacement | ||
| + | esc_val=$(printf ' | ||
| + | |||
| + | if grep -q " | ||
| + | # replace existing line | ||
| + | sed " | ||
| + | else | ||
| + | # insert before krescue marker if exists, else append | ||
| + | if grep -q " | ||
| + | sed "/ | ||
| + | else | ||
| + | sed ' | ||
| + | fi | ||
| + | fi | ||
| + | |||
| + | mv " | ||
| + | ;; | ||
| + | *) | ||
| + | echo "[w] skip wrong meta-update arg ' | ||
| + | ;; | ||
| + | esac | ||
| + | done | ||
| + | |||
| + | mv " | ||
| + | |||
| + | # show new meta | ||
| + | cat " | ||
| + | |||
| + | $xz " | ||
| + | PAD " | ||
| + | cat " | ||
| + | rm " | ||
| + | |||
| + | CLEAN | ||
| exit 0 | exit 0 | ||
| } | } | ||
| Line 393: | Line 464: | ||
| for v in ${XZS# | for v in ${XZS# | ||
| - | case $i in | + | case $i in |
| - | | + | 0) streams=$v;; |
| - | | + | 1) blocks=$v;; |
| - | | + | 2) cmp1=$v;; |
| - | | + | 3) cmp2=$v;; |
| - | | + | 4) unc1=$v;; |
| - | | + | 5) unc2=$v;; |
| - | esac | + | esac |
| - | i=$((i+1)) | + | i=$((i+1)) |
| done | done | ||
| Line 407: | Line 478: | ||
| [ " | [ " | ||
| - | echo "[w] its not mt xz">& | + | echo "[w] its not mt xz">& |
| - | #[ " | + | #[ " |
| } | } | ||
| Line 414: | Line 485: | ||
| CSCHK=$((CS/ | CSCHK=$((CS/ | ||
| - | [ " | + | [ " |
| [ " | [ " | ||
| - | PAD " | + | PAD " |
| - | CS=$(fsize " | + | CS=$(fsize " |
| - | CSCHK=$((CS/ | + | CSCHK=$((CS/ |
| } | } | ||
| [ " | [ " | ||
| Line 425: | Line 496: | ||
| [ -s " | [ -s " | ||
| - | [ " | + | [ " |
| - | OUT=" | + | OUT=" |
| - | #echo "[w] empty meta">& | + | #echo "[w] empty meta">& |
| - | META " | + | META " |
| - | #CLEAN | + | #CLEAN |
| - | exit | + | exit |
| - | } | + | } |
| - | FAIL empty meta | + | FAIL empty meta |
| } | } | ||
| [ " | [ " | ||
| - | echo "[i] remove meta">& | + | echo "[i] remove meta">& |
| - | truncate -s-4096 " | + | truncate -s-4096 " |
| - | exit | + | exit |
| } | } | ||
| grep -A99 "## | grep -A99 "## | ||
| Line 449: | Line 520: | ||
| [ " | [ " | ||
| OUT=" | OUT=" | ||
| - | | + | |
| + | # for full replace, keep old behaviour (use only META_FILE block) | ||
| + | if [ " | ||
| + | # keep full $meta (META_FILE + tags) for in-place update | ||
| + | : | ||
| + | else | ||
| + | | ||
| + | fi | ||
| [ " | [ " | ||
| # echo "[i] get size" | # echo "[i] get size" | ||
| - | for S1 in $(grep UNPACKED_SIZE $meta) ; do | + | for S1 in $(grep UNPACKED_SIZE $meta.2); do |
| - | echo $S1 >/ | + | echo $S1 >/ |
| done | done | ||
| } | } | ||
| + | |||
| truncate -s-$BS " | truncate -s-$BS " | ||
| - | | + | |
| + | if [ " | ||
| + | META_UPDATE_ONLY " | ||
| + | else | ||
| + | | ||
| + | fi | ||
| } | } | ||
| CLEAN | CLEAN | ||
| Line 523: | Line 608: | ||
| [ " | [ " | ||
| META " | META " | ||
| - | exit | + | exit |
| } | } | ||
| exit 0 | exit 0 | ||
| ``` | ``` | ||