diff --git a/README b/README index 9a04d9c..c04bbc8 100644 --- a/README +++ b/README @@ -1,13 +1,12 @@ *shasumscript* is a tool to generate a self-checksum-script. - Usage shasumscript script.sh License -GNU-GPL-3 + GNU-GPL-3 From an idea of LSC https://github.com/dealfonso/lsc diff --git a/shasumscript b/shasumscript index de2dce8..e692c1d 100755 --- a/shasumscript +++ b/shasumscript @@ -13,6 +13,8 @@ err() { error "$*"; exit 1; } usage() { echo "Usage: $(basename "$0") [-V | -h] ";echo " -V: Show version"; echo " -h: Show this help"; } err_usage() { error "$*"; usage; exit 1; } step () { err="$?"; c=32; t=OK; test "$err" = 0 || { c=31; t=FAILED; }; printf "* %s \e[%dm%s\e[0m\n" "$*" "$c" "$t"; } +compress() { cat | gzip -9 | base64; } + VERSION="0.0.1" if test "$1" = '-V'; then echo "shasumscript v$VERSION"; exit; fi @@ -25,6 +27,9 @@ test -e "$file" || err "File not found: $file" sha="$(shasum -a 256 "$file" | cut -d' ' -f1)" || err "Failed to calculate SHA256 checksum" step "Checksum" +bin=$(cat "$file" | compress) +step "Compress" + newfile="${file}_sha256" cat < "$newfile" @@ -32,8 +37,7 @@ cat < "$newfile" # script generated by shasumscript at $(date) # # This script self-checkssum it's content and exit on error -# The real script can be found after the separator: -# $sha +# The real script can be found after line 22. # # License: GNU GPL3 # Author: Patrick Cao Huu Thien @@ -41,22 +45,19 @@ cat < "$newfile" tmpexe="\$(mktemp)" trap 'rm -f "\$tmpexe"' EXIT -cat "\$0" | sed -n '/^${sha}/,\$p' | tail -n +2 > "\$tmpexe" +cat "\$0" | sed '1,21d' | base64 -d 2>/dev/null| gunzip 2>/dev/null > "\$tmpexe" test "\$(shasum -a 256 "\$tmpexe" | cut -d' ' -f1)" = "$sha" || { echo "Checksum mismatch!" >&2 exit 1 } -printf "Checksum OK"; sleep 1; printf "\r \r" - sh "\$tmpexe" "\$@" exit -$sha EOT step "pre-script" -cat "$file" >> "$newfile" +echo "$bin" >> "$newfile" step "post-script" chmod +x "$newfile"