mirror of
https://github.com/Phantop/dotfiles
synced 2025-03-24 10:59:21 +00:00
bin: drivedl and simpler zzexe
This commit is contained in:
parent
0363be74bd
commit
b880f26eb8
4
dot-local/bin/drivedl
Executable file
4
dot-local/bin/drivedl
Executable file
|
@ -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
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue