75 lines
2.0 KiB
Bash
Executable File
75 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
# imgs CLI https://git.nxhs.cloud/ge/imgs
|
|
|
|
imgs_usage() {
|
|
cat <<- EOF
|
|
Upload images to remote imgs server.
|
|
|
|
Usage: imgs [-rvh] <file>...
|
|
|
|
Options:
|
|
-r, --remote remote imgs instance URI e.g. https://user:password@example.org
|
|
-v, --version print version and exit.
|
|
-h, --help print this help message and exit.
|
|
|
|
Environment variables:
|
|
IMGSREMOTE remote imgs instance URI.
|
|
IMGSDEBUG enables verbose mode and logging.
|
|
IMGSLOG path to logfile. Default: ~/imgs_debug.log
|
|
|
|
You can set variables in ~/.imgsremote file instead of ~/.bashrc
|
|
See <https://git.nxhs.cloud/ge/imgs> for more info.
|
|
EOF
|
|
}
|
|
|
|
[ "$#" -eq 0 ] && { imgs_usage; exit 1; }
|
|
|
|
# Transform long options to short ones
|
|
for arg in "$@"; do
|
|
shift
|
|
case "$arg" in
|
|
--remote) set -- "$@" "-r";;
|
|
--help) set -- "$@" "-h";;
|
|
--version) set -- "$@" "-v";;
|
|
*) set -- "$@" "$arg";;
|
|
esac
|
|
done
|
|
|
|
while getopts r:vh OPT; do
|
|
case "$OPT" in
|
|
r) IMGSREMOTE="$OPTARG";;
|
|
v) echo 'imgs CLI 1.1'; exit 0;;
|
|
h) imgs_usage; exit 0;;
|
|
*) echo "$0: Unknown option: $OPT" >&2; exit 1;;
|
|
esac
|
|
done
|
|
|
|
shift $((OPTIND - 1)) # shift for parse positional args
|
|
|
|
# Check variables
|
|
IMGSLOG="${IMGSLOG:-$HOME/imgs_debug.log}"
|
|
[ -n "$IMGSREMOTE" ] && return 0 # exit from func if variable is set
|
|
|
|
if [ -f "$HOME"/.imgsremote ]; then
|
|
# shellcheck source=/dev/null
|
|
. "$HOME"/.imgsremote
|
|
fi
|
|
|
|
if [ -z "$IMGSREMOTE" ]; then
|
|
echo "$0: Error: IMGSREMOTE variable is not set." >&2; exit 1
|
|
fi
|
|
|
|
[ -n "$IMGSDEBUG" ] && date +"[%d %b %Y %H:%M:%S] Started" | tee -a "$IMGSLOG"
|
|
|
|
for file in "$@"; do
|
|
filepath="$(realpath "$file")"
|
|
if [ -n "$IMGSDEBUG" ]; then
|
|
echo "Uploading $filepath ..." | tee -a "$IMGSLOG"
|
|
curl -v -L -F "image=@/$filepath" "$IMGSREMOTE" 2>&1 | tee -a "$IMGSLOG"
|
|
else
|
|
curl -L -F "image=@/$filepath" "$IMGSREMOTE"
|
|
fi
|
|
done
|
|
|
|
[ -n "$IMGSDEBUG" ] && date +"[%d %b %Y %H:%M:%S] Finished" | tee -a "$IMGSLOG"
|