From b880f26eb8d609e03be92e6412ae955e4aee6ac4 Mon Sep 17 00:00:00 2001 From: Phantop Date: Sat, 13 Nov 2021 02:32:16 -0500 Subject: [PATCH] bin: drivedl and simpler zzexe --- dot-local/bin/drivedl | 4 + dot-local/bin/zzexe | 198 +++++------------------------------------- 2 files changed, 26 insertions(+), 176 deletions(-) create mode 100755 dot-local/bin/drivedl diff --git a/dot-local/bin/drivedl b/dot-local/bin/drivedl new file mode 100755 index 0000000..06da4a7 --- /dev/null +++ b/dot-local/bin/drivedl @@ -0,0 +1,4 @@ +#!/bin/bash +ID="$(echo $1 | sed -n 's#.*\https\:\/\/drive\.google\.com/file/d/\([^.]*\)\/view.*#\1#;p')"; +CODE=$(wget -q --show-progress --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=$ID" -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p') +aria2c --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$CODE&id=$ID" -c -x16 -s 16 diff --git a/dot-local/bin/zzexe b/dot-local/bin/zzexe index a2d48de..abf98b6 100755 --- a/dot-local/bin/zzexe +++ b/dot-local/bin/zzexe @@ -1,179 +1,25 @@ #!/bin/sh -tab=' ' -nl=' -' -IFS=" $tab$nl" - -decomp=0 -res=0 -while :; do - case $1 in - -d) decomp=1; shift;; - --) shift; break;; - *) break;; - esac -done - -if test $# -eq 0; then - exit 1 -fi - -tmp= -trap 'res=$? - test -n "$tmp" && rm -f "$tmp" - (exit $res); exit $res -' 0 1 2 3 5 10 13 15 - -mktemp_status= - -for i do - case $i in - -*) file=./$i;; - *) file=$i;; - esac - if test ! -f "$file" || test ! -r "$file"; then - res=$? - printf >&2 '%s\n' "$0: $i is not a readable regular file" - continue - fi - if test $decomp -eq 0; then - if sed -e 1d -e 2q "$file" | grep "^skip=[0-9][0-9]*$" >/dev/null; then - printf >&2 '%s\n' "$0: $i is already zzexe'd" - continue - fi - fi - if test -u "$file"; then - printf >&2 '%s\n' "$0: $i has setuid permission, unchanged" - continue - fi - if test -g "$file"; then - printf >&2 '%s\n' "$0: $i has setgid permission, unchanged" - continue - fi - - dir=`dirname "$file"` || dir=$TMPDIR - test -d "$dir" && test -w "$dir" && test -x "$dir" || dir=/tmp - test -n "$tmp" && rm -f "$tmp" - if test -z "$mktemp_status"; then - type mktemp >/dev/null 2>&1 - mktemp_status=$? - fi - case $dir in - */) ;; - *) dir=$dir/;; - esac - if test $mktemp_status -eq 0; then - tmp=`mktemp "${dir}zzexeXXXXXXXXX"` - else - tmp=${dir}zzexe$$ - fi && { cp -p "$file" "$tmp" 2>/dev/null || cp "$file" "$tmp"; } || { - res=$? - printf >&2 '%s\n' "$0: cannot copy $file" - continue - } - if test -w "$tmp"; then - writable=1 - else - writable=0 - chmod u+w "$tmp" || { - res=$? - printf >&2 '%s\n' "$0: cannot chmod $tmp" - continue - } - fi - if test $decomp -eq 0; then - (cat <<'EOF' && +if [ "$1" == "-d" ]; then + shift + tail -n +11 "$@" | zstd -do "$@"~ && + mv "$@"~ "$@" + chmod +x "$@" +else + cat > "$@"~ << 'EOF' #!/bin/sh -skip=49 - -tab=' ' -nl=' -' -IFS=" $tab$nl" - -umask=`umask` -umask 77 - -zztmpdir= -trap 'res=$? - test -n "$zztmpdir" && rm -fr "$zztmpdir" - (exit $res); exit $res -' 0 1 2 3 5 10 13 15 - -case $TMPDIR in - / | /*/) ;; - /*) TMPDIR=$TMPDIR/;; - *) TMPDIR=/tmp/;; -esac -if type mktemp >/dev/null 2>&1; then - zztmpdir=`mktemp -d "${TMPDIR}zztmpXXXXXXXXX"` -else - zztmpdir=${TMPDIR}zztmp$$; mkdir $zztmpdir -fi || { (exit 127); exit 127; } - -zztmp=$zztmpdir/$0 -case $0 in --* | */*' -') mkdir -p "$zztmp" && rm -r "$zztmp";; -*/*) zztmp=$zztmpdir/`basename "$0"`;; -esac || { (exit 127); exit 127; } - -case `printf 'X\n' | tail -n +1 2>/dev/null` in -X) tail_n=-n;; -*) tail_n=;; -esac -if tail $tail_n +$skip <"$0" | zstd -cd > "$zztmp"; then - umask $umask - chmod 700 "$zztmp" - (sleep 5; rm -fr "$zztmpdir") 2>/dev/null & - "$zztmp" ${1+"$@"}; res=$? -else - printf >&2 '%s\n' "Cannot decompress $0" - (exit 127); res=127 -fi; exit $res +dir=`dirname $0` +out=`mktemp -t .zzXXXX` +tail -n +11 $0 | zstd -cd > $out +chmod +x $out +ln -s $out $dir +trap "res=$?" 0 1 2 3 5 10 13 15 +$dir/`basename $out` $@ +rm $out $dir/`basename $out` +exit $res EOF - zstd -cv22 --ultra "$file") > "$tmp" || { - res=$? - printf >&2 '%s\n' "$0: compression not possible for $i, file unchanged." - continue - } - - else - # decompression - skip=44 - skip_line=`sed -e 1d -e 2q "$file"` - case $skip_line in - skip=[0-9] | skip=[0-9][0-9] | skip=[0-9][0-9][0-9]) - eval "$skip_line";; - esac - case `printf 'X\n' | tail -n +1 2>/dev/null` in - X) tail_n=-n;; - *) tail_n=;; - esac - tail $tail_n +$skip "$file" | zstd -cd > "$tmp" || { - res=$? - printf >&2 '%s\n' "$0: $i probably not in zzexe format, file unchanged." - continue - } - fi - test $writable -eq 1 || chmod u-w "$tmp" || { - res=$? - printf >&2 '%s\n' "$0: $tmp: cannot chmod" - continue - } - ln -f "$file" "$file~" 2>/dev/null || { - # Hard links may not work. Fall back on rm+cp so that $file always exists. - rm -f "$file~" && cp -p "$file" "$file~" - } || { - res=$? - printf >&2 '%s\n' "$0: cannot backup $i as $i~" - continue - } - mv -f "$tmp" "$file" || { - res=$? - printf >&2 '%s\n' "$0: cannot rename $tmp to $i" - continue - } - tmp= -done -(exit $res); exit $res + zstd --ultra -22 "$@" + rm "$@" + cat "$@"~ "$@".zst > "$@" + rm "$@".zst "$@~" + chmod +x "$@" +fi