use compress with base64|gzip
This commit is contained in:
parent
b30bf206ba
commit
10a92d2456
1
README
1
README
|
@ -1,6 +1,5 @@
|
|||
*shasumscript* is a tool to generate a self-checksum-script.
|
||||
|
||||
|
||||
Usage
|
||||
|
||||
shasumscript script.sh
|
||||
|
|
15
shasumscript
15
shasumscript
|
@ -13,6 +13,8 @@ err() { error "$*"; exit 1; }
|
|||
usage() { echo "Usage: $(basename "$0") [-V | -h] <file>";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 <<EOT > "$newfile"
|
||||
|
@ -32,8 +37,7 @@ cat <<EOT > "$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 <<EOT > "$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"
|
||||
|
|
Loading…
Reference in New Issue