feat: Improve and make scripts POSIX compliant
This commit is contained in:
		@@ -1,38 +1,32 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# This is an imgs <https://gitea.gch.icu/ge/imgs> "integration" for Nautilus.
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
# This is an imgs https://git.nxhs.cloud/ge/imgs "integration" for Nautilus.
 | 
			
		||||
# Place this script into path: $HOME/.local/share/nautilus/scripts
 | 
			
		||||
# See more info at: <https://help.ubuntu.com/community/NautilusScriptsHowto>
 | 
			
		||||
 | 
			
		||||
imgs_check_vars() {
 | 
			
		||||
    [ "$IMGSLOG" ] || IMGSLOG=$HOME/imgs_debug.log
 | 
			
		||||
    [ "$IMGSREMOTE" ] && return 0  # exit from func if variable is set
 | 
			
		||||
IMGSLOG="${IMGSLOG:-$HOME/imgs_debug.log}"
 | 
			
		||||
[ -n "$IMGSREMOTE" ] && return 0  # exit from func if variable is set
 | 
			
		||||
 | 
			
		||||
    if [ -f "$HOME/.imgsremote" ]; then
 | 
			
		||||
        . $HOME/.imgsremote
 | 
			
		||||
    fi
 | 
			
		||||
if [ -f "$HOME"/.imgsremote ]; then
 | 
			
		||||
    # shellcheck source=/dev/null
 | 
			
		||||
    . "$HOME"/.imgsremote
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
    if [ "$IMGSREMOTE" ]; then
 | 
			
		||||
        :
 | 
			
		||||
    else
 | 
			
		||||
        echo "$0: Error: IMGSREMOTE variable is not set." >&2
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
if [ -z "$IMGSREMOTE" ]; then
 | 
			
		||||
    echo "$0: Error: IMGSREMOTE variable is not set." >&2; exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
imgs_check_vars
 | 
			
		||||
[ -n "$IMGSDEBUG" ] && date +"[%d %b %Y %H:%M:%S] Started" >> "$IMGSLOG"
 | 
			
		||||
 | 
			
		||||
[ "$IMGSDEBUG" ] && date +"[%d %b %Y %H:%M:%S] Started" >> "$IMGSLOG"
 | 
			
		||||
 | 
			
		||||
while read -r file; do
 | 
			
		||||
    [ "$file" ] || break
 | 
			
		||||
    if [ "$IMGSDEBUG" ]; then
 | 
			
		||||
echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read -r file; do
 | 
			
		||||
    [ -z "$file" ] && break
 | 
			
		||||
    if [ -n "$IMGSDEBUG" ]; then
 | 
			
		||||
        image="$(curl -v -L -F "image=@$file" "$IMGSREMOTE" 2>&1 | tee -a "$IMGSLOG")"
 | 
			
		||||
        image="$(tail -n 1 <<< "$image")"
 | 
			
		||||
        image="$(echo "$image" | tail -n 1)"
 | 
			
		||||
    else
 | 
			
		||||
        image="$(curl -L -F "image=@$file" "$IMGSREMOTE")"
 | 
			
		||||
    fi
 | 
			
		||||
    [ "$IMGSDEBUG" ] && echo "$(date +"[%d %b %Y %H:%M:%S]") $file --> $image" >> "$IMGSLOG"
 | 
			
		||||
    [ -n "$IMGSDEBUG" ] && echo "$(date +"[%d %b %Y %H:%M:%S]") $file --> $image" >> "$IMGSLOG"
 | 
			
		||||
    notify-send "File uploaded to imgs!" "$image"
 | 
			
		||||
done <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
[ "$IMGSDEBUG" ] && date +"[%d %b %Y %H:%M:%S] Finished" >> "$IMGSLOG"
 | 
			
		||||
[ -n "$IMGSDEBUG" ] && date +"[%d %b %Y %H:%M:%S] Finished" >> "$IMGSLOG"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										106
									
								
								imgs
									
									
									
									
									
								
							
							
						
						
									
										106
									
								
								imgs
									
									
									
									
									
								
							@@ -1,74 +1,74 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# imgs CLI client.
 | 
			
		||||
# Home page: <https://gitea.gch.icu/ge/imgs>
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
# imgs CLI https://git.nxhs.cloud/ge/imgs
 | 
			
		||||
 | 
			
		||||
imgs_usage() {
 | 
			
		||||
	cat <<- EOF
 | 
			
		||||
	Upload images to remote imgs server.
 | 
			
		||||
cat <<- EOF
 | 
			
		||||
Upload images to remote imgs server.
 | 
			
		||||
 | 
			
		||||
	Usage: imgs [--version] [--help] [-r | --remote <URL>] <file>...
 | 
			
		||||
Usage: imgs [-rvh] <file>...
 | 
			
		||||
 | 
			
		||||
	Options:
 | 
			
		||||
	    -r, --remote    remote imgs instance URI. Example:
 | 
			
		||||
	                    'https://user:password@example.org'
 | 
			
		||||
	    --version       print version and exit.
 | 
			
		||||
	    --help          print this help message and exit.
 | 
			
		||||
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
 | 
			
		||||
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://gitea.gch.icu/ge/imgs> for more info.
 | 
			
		||||
	EOF
 | 
			
		||||
    exit 0
 | 
			
		||||
You can set variables in ~/.imgsremote file instead of ~/.bashrc
 | 
			
		||||
See <https://git.nxhs.cloud/ge/imgs> for more info.
 | 
			
		||||
EOF
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
imgs_check_vars() {
 | 
			
		||||
    [ "$IMGSLOG" ] || IMGSLOG=$HOME/imgs_debug.log
 | 
			
		||||
    [ "$IMGSREMOTE" ] && return 0  # exit from func if variable is set
 | 
			
		||||
[ "$#" -eq 0 ] && { imgs_usage; exit 1; }
 | 
			
		||||
 | 
			
		||||
    if [ -f "$HOME/.imgsremote" ]; then
 | 
			
		||||
        . $HOME/.imgsremote
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [ "$IMGSREMOTE" ]; then
 | 
			
		||||
        :
 | 
			
		||||
    else
 | 
			
		||||
        echo "$0: Error: IMGSREMOTE variable is not set." >&2
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[[ "$@" ]] || imgs_usage
 | 
			
		||||
while (( "$#" )); do
 | 
			
		||||
    case "$1" in
 | 
			
		||||
        -r|--remote) if [ "$2" ] && [ "${2:0:1}" != '-' ]; then
 | 
			
		||||
                        IMGSREMOTE="$2"; shift
 | 
			
		||||
                     else
 | 
			
		||||
                        echo "$0: missing argument for $1" >&2; exit 1
 | 
			
		||||
                     fi; shift;;
 | 
			
		||||
        --version) echo 'imgs CLI 1.0'; exit 0;;
 | 
			
		||||
        --help) imgs_usage;;
 | 
			
		||||
        -*) echo "$0: $1: bad option" >&2; exit 1;;
 | 
			
		||||
        *) [ -f "$1" ] || { echo "$0: $1: no such file" >&2; exit 1; }
 | 
			
		||||
            _files+=("$1"); shift;;
 | 
			
		||||
# 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
 | 
			
		||||
 | 
			
		||||
imgs_check_vars
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
[ "$IMGSDEBUG" ] && date +"[%d %b %Y %H:%M:%S] Started" | tee -a "$IMGSLOG"
 | 
			
		||||
shift $((OPTIND - 1))  # shift for parse positional args
 | 
			
		||||
 | 
			
		||||
for file in "${_files[@]}"; do
 | 
			
		||||
# 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 [ "$IMGSDEBUG" ]; then
 | 
			
		||||
        echo "Uploading $filepath" | tee -a "$IMGSLOG"
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
[ "$IMGSDEBUG" ] && date +"[%d %b %Y %H:%M:%S] Finished" | tee -a "$IMGSLOG"
 | 
			
		||||
[ -n "$IMGSDEBUG" ] && date +"[%d %b %Y %H:%M:%S] Finished" | tee -a "$IMGSLOG"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user