1
0
Fork 0
mirror of https://github.com/notwa/rc synced 2024-11-05 06:39:02 -08:00
rc/sh/ea

80 lines
2 KiB
Text
Raw Normal View History

2021-08-01 10:29:38 -07:00
#!/usr/bin/env sh
# remote file access (http file-sharing shenanigans)
2021-07-29 00:37:35 -07:00
# YES_ZSH
# YES_BASH
# YES_DASH
2021-09-23 06:48:05 -07:00
# YES_ASH
2024-03-04 20:40:03 -08:00
__ea_curl() {
curl -q --no-progress-meter 0.0.0.0 >/dev/null 2>&1
if [ $? = 2 ]
then __ea_curl() { curl -sS "$@"; }
else __ea_curl() { curl --no-progress-meter "$@"; }
fi
__ea_curl "$@"
}
__ea_urlencode() {
while test "$1"; do
case "$1" in
([a-zA-Z0-9~_.-]*) printf '%.1s' "$1";; # RFC 3986
(*) printf '%%%02X' "'$1";; # bash complains but works
esac
set -- "${1#?}"
done
} 2>&- # send bash's complaints to the abyss
2024-03-04 20:40:46 -08:00
ea() ( ### @- **TODO:** document.
cmd="${1:?missing subcommand}"; shift
2021-08-01 10:29:38 -07:00
case "$cmd" in
head)
2024-03-04 20:40:46 -08:00
trg="$(__ea_urlencode "$EA_DIR/${1:?missing target}")"
2024-03-04 20:40:03 -08:00
__ea_curl -I "$EA_DOMAIN/$trg"
2021-08-01 10:29:38 -07:00
return;;
get)
2024-03-04 20:40:46 -08:00
trg="$(__ea_urlencode "$EA_DIR/${1:?missing target}")"
2024-03-04 20:40:03 -08:00
__ea_curl -f -R "$EA_DOMAIN/$trg" -o "${2:-$1}"
2021-08-01 10:29:38 -07:00
return;;
put)
2024-03-04 20:40:46 -08:00
src="${1:?missing source}"
dst="$EA_DOMAIN/$EA_AUTH/"
2024-03-04 20:40:03 -08:00
__ea_curl -g -n -T "$src" "$dst"
2021-08-01 10:29:38 -07:00
return;;
puts)
2024-03-04 20:40:03 -08:00
for src; do
2024-03-04 20:40:46 -08:00
dst="$EA_DOMAIN/$EA_AUTH/"
2024-03-04 20:40:03 -08:00
minisign -QSm "$src" || return
__ea_curl -g -n -T "$src" "$dst" || return
__ea_curl -g -n -T "$src.minisig" "$dst" || return
rm "$src.minisig"
done
return;;
2021-08-01 10:29:38 -07:00
move)
2024-03-04 20:40:46 -08:00
src="$EA_DOMAIN/$EA_AUTH/${1:?missing source}"
dst="$EA_DOMAIN/$EA_DIR/${2:?missing destination}"
2024-03-04 20:40:03 -08:00
__ea_curl -n -X MOVE -H "Destination: $dst" "$src"
2021-08-01 10:29:38 -07:00
return;;
copy)
2024-03-04 20:40:46 -08:00
src="$EA_DOMAIN/$EA_AUTH/${1:?missing source}"
dst="$EA_DOMAIN/$EA_DIR/${2:?missing destination}"
2024-03-04 20:40:03 -08:00
__ea_curl -n -X COPY -H "Destination: $dst" "$src"
2021-08-01 10:29:38 -07:00
return;;
delete)
2024-03-04 20:40:46 -08:00
trg="$EA_DOMAIN/$EA_AUTH/${1:?missing target}"
2024-03-04 20:40:03 -08:00
__ea_curl -f -n -X DELETE "$trg"
2021-08-01 10:29:38 -07:00
return;;
*)
2024-02-23 22:32:25 -08:00
printf 'unknown subcommand: %s\n' "$cmd" >&2
2021-08-01 10:29:38 -07:00
return 2;;
esac
2024-03-04 20:40:46 -08:00
)
[ -n "${preload+-}" ] || ea "$@"