Commit e2732ae8 authored by Vitaly Lipatov's avatar Vitaly Lipatov

eget: refactor backend options to use set -- pattern

parent 32f7174a
...@@ -389,46 +389,39 @@ download_with_mirroring() ...@@ -389,46 +389,39 @@ download_with_mirroring()
check_tty check_tty
# Common option flags (used by all backends)
quiet='' quiet=''
verbose='' verbose=''
WGETNOSSLCHECK='' showprogress=''
CURLNOSSLCHECK='' nosslcheck=''
AXELNOSSLCHECK='' compressed=''
retryconnrefused=''
trustservernames=''
nodirectories=''
# Common option values
USERAGENT='' USERAGENT=''
WGETHEADER='' HEADER_VALUE=''
CURLHEADER='' TIMEOUT_VALUE=''
AXELHEADER='' READTIMEOUT_VALUE=''
WGETCOMPRESSED='' TRIES_VALUE=''
CURLCOMPRESSED='' COOKIES_FILE=''
AXELCOMPRESSED='' USEOUTPUTDIR=''
WGETQ='' #-q FORCEIPV=''
CURLQ='' #-s
AXELQ='' #-q # Download behavior
ARIA2Q='' CONTINUE=''
# TODO: FORCEOVERWRITE=''
TIMESTAMPING=''
NOGLOB=''
# Name/disposition options (passed as arguments, not built into __wget/__curl)
WGETNAMEOPTIONS='--content-disposition' WGETNAMEOPTIONS='--content-disposition'
CURLFILENAMEOPTIONS='--remote-name --remote-time --remote-header-name' CURLFILENAMEOPTIONS='--remote-name --remote-time --remote-header-name'
CURLNAMEOPTIONS='--remote-time --remote-header-name' CURLNAMEOPTIONS='--remote-time --remote-header-name'
AXELNAMEOPTIONS='' AXELNAMEOPTIONS=''
WGETRUSTSERVERNAMES=''
CURLTRUSTSERVERNAMES=''
USEOUTPUTDIR='' # Query/action modes
WGETNODIRECTORIES=''
CONTINUE=''
FORCEOVERWRITE=''
WGETTIMEOUT=''
CURLMAXTIME=''
TIMEOUT_VALUE=''
WGETREADTIMEOUT=''
WGETRETRYCONNREFUSED=''
CURLRETRYCONNREFUSED=''
WGETTRIES='--tries 1'
CURLRETRY=''
WGETLOADCOOKIES=''
CURLCOOKIE=''
NOGLOB=''
LISTONLY='' LISTONLY=''
CHECKURL='' CHECKURL=''
CHECKSITE='' CHECKSITE=''
...@@ -441,31 +434,15 @@ LATEST='' ...@@ -441,31 +434,15 @@ LATEST=''
SECONDLATEST='' SECONDLATEST=''
CHECKMIRRORS='' CHECKMIRRORS=''
TARGETFILE='' TARGETFILE=''
FORCEIPV=''
WGETSHOWPROGRESS=''
CURLSHOWPROGRESS=''
ARIA2SHOWPROGRESS=''
AXELSHOWPROGRESS=''
TIMESTAMPING=''
INPUTFILE='' INPUTFILE=''
set_quiet() set_quiet()
{ {
WGETQ='-q'
CURLQ='-s'
AXELQ='--quiet'
ARIA2Q=''
quiet=1 quiet=1
} }
unset_quiet() unset_quiet()
{ {
WGETQ=''
CURLQ=''
AXELQ=''
ARIA2Q=''
quiet='' quiet=''
} }
...@@ -566,15 +543,10 @@ while [ -n "$1" ] ; do ...@@ -566,15 +543,10 @@ while [ -n "$1" ] ; do
verbose="$1" verbose="$1"
;; ;;
--show-progress) --show-progress)
WGETSHOWPROGRESS='--show-progress' showprogress=1
CURLSHOWPROGRESS='--progress-bar'
ARIA2SHOWPROGRESS='--show-console-readout=true'
AXELSHOWPROGRESS='1'
;; ;;
-k|--no-check-certificate) -k|--no-check-certificate)
WGETNOSSLCHECK='--no-check-certificate' nosslcheck=1
CURLNOSSLCHECK='-k'
AXELNOSSLCHECK='--insecure'
;; ;;
--no-content-disposition) --no-content-disposition)
WGETNAMEOPTIONS='' WGETNAMEOPTIONS=''
...@@ -589,9 +561,7 @@ while [ -n "$1" ] ; do ...@@ -589,9 +561,7 @@ while [ -n "$1" ] ; do
argvalue="$(printf '%s' "$1" | tr -d ' ')" argvalue="$(printf '%s' "$1" | tr -d ' ')"
fi fi
[ -z "$argvalue" ] && fatal "Error: --header requires an argument" [ -z "$argvalue" ] && fatal "Error: --header requires an argument"
WGETHEADER="--header=$argvalue" HEADER_VALUE="$argvalue"
CURLHEADER="--header $argvalue"
AXELHEADER="--header=$argvalue"
;; ;;
-P|--output-dir) -P|--output-dir)
if [ -z "$argvalue" ];then if [ -z "$argvalue" ];then
...@@ -605,8 +575,7 @@ while [ -n "$1" ] ; do ...@@ -605,8 +575,7 @@ while [ -n "$1" ] ; do
USERAGENT="Mozilla/5.0 (X11; Linux $arch) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36" USERAGENT="Mozilla/5.0 (X11; Linux $arch) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36"
;; ;;
--compressed) --compressed)
CURLCOMPRESSED='--compressed' compressed=1
WGETCOMPRESSED='--compression=auto'
;; ;;
-4|--ipv4|--inet4-only) -4|--ipv4|--inet4-only)
FORCEIPV="-4" FORCEIPV="-4"
...@@ -664,7 +633,7 @@ while [ -n "$1" ] ; do ...@@ -664,7 +633,7 @@ while [ -n "$1" ] ; do
TARGETFILE="-" TARGETFILE="-"
;; ;;
-nd|--no-directories) -nd|--no-directories)
WGETNODIRECTORIES="$1" nodirectories=1
;; ;;
--no-glob) --no-glob)
NOGLOB="--no-glob" NOGLOB="--no-glob"
...@@ -696,9 +665,6 @@ while [ -n "$1" ] ; do ...@@ -696,9 +665,6 @@ while [ -n "$1" ] ; do
fi fi
[ -z "$argvalue" ] && fatal "Error: --timeout requires an argument" [ -z "$argvalue" ] && fatal "Error: --timeout requires an argument"
! is_numeric "$argvalue" && fatal "Error: --timeout requires a numeric value, got '$argvalue'" ! is_numeric "$argvalue" && fatal "Error: --timeout requires a numeric value, got '$argvalue'"
WGETTIMEOUT="--timeout $argvalue"
CURLMAXTIME="--max-time $argvalue"
AXELTIMEOUT="--timeout=$argvalue"
TIMEOUT_VALUE="$argvalue" TIMEOUT_VALUE="$argvalue"
;; ;;
--read-timeout) --read-timeout)
...@@ -708,21 +674,13 @@ while [ -n "$1" ] ; do ...@@ -708,21 +674,13 @@ while [ -n "$1" ] ; do
fi fi
[ -z "$argvalue" ] && fatal "Error: --read-timeout requires an argument" [ -z "$argvalue" ] && fatal "Error: --read-timeout requires an argument"
! is_numeric "$argvalue" && fatal "Error: --read-timeout requires a numeric value, got '$argvalue'" ! is_numeric "$argvalue" && fatal "Error: --read-timeout requires a numeric value, got '$argvalue'"
WGETREADTIMEOUT="--read-timeout $argvalue" READTIMEOUT_VALUE="$argvalue"
if [ -z "$CURLMAXTIME" ] ; then
CURLMAXTIME="--max-time $argvalue"
fi
if [ -z "$AXELTIMEOUT" ] ; then
AXELTIMEOUT="--timeout=$argvalue"
fi
;; ;;
--retry-connrefused) --retry-connrefused)
WGETRETRYCONNREFUSED="$1" retryconnrefused=1
CURLRETRYCONNREFUSED="$1"
;; ;;
--trust-server-names) --trust-server-names)
WGETRUSTSERVERNAMES="--trust-server-names" trustservernames=1
CURLTRUSTSERVERNAMES="-w '%{url_effective}'"
;; ;;
-t|--tries) -t|--tries)
if [ -z "$argvalue" ];then if [ -z "$argvalue" ];then
...@@ -733,16 +691,14 @@ while [ -n "$1" ] ; do ...@@ -733,16 +691,14 @@ while [ -n "$1" ] ; do
case "$argvalue" in case "$argvalue" in
0|inf) 0|inf)
CURLRETRY="--retry 1000" TRIES_VALUE="$argvalue"
WGETTRIES="--tries $argvalue"
;; ;;
*) *)
if ! is_numeric "$argvalue" ; then if ! is_numeric "$argvalue" ; then
fatal "Invalid value for --tries: '$argvalue' (must be a number, 0, or 'inf')" fatal "Invalid value for --tries: '$argvalue' (must be a number, 0, or 'inf')"
fi fi
WGETTRIES="--tries $argvalue" TRIES_VALUE="$argvalue"
CURLRETRY="--retry $(($argvalue-1))"
;; ;;
esac esac
;; ;;
...@@ -752,8 +708,7 @@ while [ -n "$1" ] ; do ...@@ -752,8 +708,7 @@ while [ -n "$1" ] ; do
argvalue="$1" argvalue="$1"
fi fi
[ -z "$argvalue" ] && fatal "Error: --load-cookies requires an argument" [ -z "$argvalue" ] && fatal "Error: --load-cookies requires an argument"
WGETLOADCOOKIES="--load-cookies $argvalue" COOKIES_FILE="$argvalue"
CURLCOOKIE="--cookie $argvalue"
;; ;;
-*) -*)
fatal "Unknown option '$1', check eget --help." fatal "Unknown option '$1', check eget --help."
...@@ -1152,9 +1107,24 @@ esac ...@@ -1152,9 +1107,24 @@ esac
# Defined globally so it can be used by aria2/axel backends for header operations # Defined globally so it can be used by aria2/axel backends for header operations
__wget() __wget()
{ {
[ -n "$USERAGENT" ] && set -- -U "$USERAGENT" "$@" [ "$USEOUTPUTDIR" ] && set -- -P "$USEOUTPUTDIR" "$@"
[ -n "$USEOUTPUTDIR" ] && set -- -P "$USEOUTPUTDIR" "$@" [ "$USERAGENT" ] && set -- -U "$USERAGENT" "$@"
docmd $WGET $FORCEIPV $WGETQ $WGETSHOWPROGRESS $NOGLOB $WGETCOMPRESSED $WGETHEADER $WGETNOSSLCHECK $WGETNODIRECTORIES $WGETTIMEOUT $WGETREADTIMEOUT $WGETRETRYCONNREFUSED $WGETTRIES $WGETLOADCOOKIES $WGETRUSTSERVERNAMES $EGET_WGET_OPTIONS "$@" [ "$trustservernames" ] && set -- --trust-server-names "$@"
[ "$COOKIES_FILE" ] && set -- --load-cookies "$COOKIES_FILE" "$@"
# Default: --tries 1 (single attempt), can be overridden
set -- --tries "${TRIES_VALUE:-1}" "$@"
[ "$retryconnrefused" ] && set -- --retry-connrefused "$@"
[ "$READTIMEOUT_VALUE" ] && set -- --read-timeout "$READTIMEOUT_VALUE" "$@"
[ "$TIMEOUT_VALUE" ] && set -- --timeout "$TIMEOUT_VALUE" "$@"
[ "$nodirectories" ] && set -- -nd "$@"
[ "$nosslcheck" ] && set -- --no-check-certificate "$@"
[ "$HEADER_VALUE" ] && set -- --header="$HEADER_VALUE" "$@"
[ "$compressed" ] && set -- --compression=auto "$@"
[ "$NOGLOB" ] && set -- --no-glob "$@"
[ "$showprogress" ] && set -- --show-progress "$@"
[ "$quiet" ] && set -- -q "$@"
[ "$FORCEIPV" ] && set -- "$FORCEIPV" "$@"
docmd $WGET $EGET_WGET_OPTIONS "$@"
} }
# wget wrapper for downloads (adds -c/-N flags) # wget wrapper for downloads (adds -c/-N flags)
...@@ -1408,9 +1378,29 @@ elif [ "$EGET_BACKEND" = "curl" ] ; then ...@@ -1408,9 +1378,29 @@ elif [ "$EGET_BACKEND" = "curl" ] ; then
__curl() __curl()
{ {
[ -n "$USERAGENT" ] && set -- -A "$USERAGENT" "$@" [ "$USEOUTPUTDIR" ] && set -- --create-dirs --output-dir "$USEOUTPUTDIR" "$@"
[ -n "$USEOUTPUTDIR" ] && set -- --create-dirs --output-dir "$USEOUTPUTDIR" "$@" [ "$USERAGENT" ] && set -- -A "$USERAGENT" "$@"
docmd $CURL $FORCEIPV --fail -L $CURLQ $CURLSHOWPROGRESS $CURLCOMPRESSED $CURLHEADER $CURLNOSSLCHECK $CURLMAXTIME $CURLRETRYCONNREFUSED $CURLRETRY $CURLCOOKIE $CURLTRUSTSERVERNAMES $EGET_CURL_OPTIONS "$@" [ "$trustservernames" ] && set -- -w '%{url_effective}' "$@"
[ "$COOKIES_FILE" ] && set -- --cookie "$COOKIES_FILE" "$@"
# curl --retry is number of retries (not tries), so subtract 1
if [ "$TRIES_VALUE" ] ; then
case "$TRIES_VALUE" in
0|inf) set -- --retry 1000 "$@" ;;
*) set -- --retry $(($TRIES_VALUE - 1)) "$@" ;;
esac
fi
[ "$retryconnrefused" ] && set -- --retry-connrefused "$@"
# curl uses READTIMEOUT_VALUE as fallback for --max-time if TIMEOUT_VALUE not set
[ -z "$TIMEOUT_VALUE" ] && [ "$READTIMEOUT_VALUE" ] && set -- --max-time "$READTIMEOUT_VALUE" "$@"
[ "$TIMEOUT_VALUE" ] && set -- --max-time "$TIMEOUT_VALUE" "$@"
[ "$nosslcheck" ] && set -- -k "$@"
[ "$HEADER_VALUE" ] && set -- --header "$HEADER_VALUE" "$@"
[ "$compressed" ] && set -- --compressed "$@"
[ "$showprogress" ] && set -- --progress-bar "$@"
[ "$quiet" ] && set -- -s "$@"
[ "$FORCEIPV" ] && set -- "$FORCEIPV" "$@"
set -- --fail -L "$@"
docmd $CURL $EGET_CURL_OPTIONS "$@"
} }
# curl wrapper for downloads (adds -C - for continue) # curl wrapper for downloads (adds -C - for continue)
...@@ -1525,8 +1515,10 @@ url_get_response() ...@@ -1525,8 +1515,10 @@ url_get_response()
elif [ "$EGET_BACKEND" = "aria2" ] ; then elif [ "$EGET_BACKEND" = "aria2" ] ; then
__aria2() __aria2()
{ {
[ -n "$USEOUTPUTDIR" ] && set -- -d "$USEOUTPUTDIR" "$@" [ "$USEOUTPUTDIR" ] && set -- -d "$USEOUTPUTDIR" "$@"
docmd $ARIA2 $ARIA2Q $ARIA2SHOWPROGRESS $EGET_ARIA2_OPTIONS "$@" [ "$showprogress" ] && set -- --show-console-readout=true "$@"
# aria2 has no direct quiet flag, but --show-console-readout=false reduces output
docmd $ARIA2 $EGET_ARIA2_OPTIONS "$@"
} }
# aria2 wrapper for downloads (adds --continue) # aria2 wrapper for downloads (adds --continue)
...@@ -1607,12 +1599,15 @@ url_get_response() ...@@ -1607,12 +1599,15 @@ url_get_response()
elif [ "$EGET_BACKEND" = "axel" ] ; then elif [ "$EGET_BACKEND" = "axel" ] ; then
__axel() __axel()
{ {
local AXELQ_LOCAL="$AXELQ" [ "$USERAGENT" ] && set -- --user-agent="$USERAGENT" "$@"
[ "$nosslcheck" ] && set -- --insecure "$@"
[ "$HEADER_VALUE" ] && set -- --header="$HEADER_VALUE" "$@"
[ "$TIMEOUT_VALUE" ] && set -- --timeout="$TIMEOUT_VALUE" "$@"
# --show-progress overrides --quiet for axel # --show-progress overrides --quiet for axel
[ -n "$AXELSHOWPROGRESS" ] && AXELQ_LOCAL='' [ "$quiet" ] && [ -z "$showprogress" ] && set -- --quiet "$@"
[ -n "$USERAGENT" ] && set -- --user-agent="$USERAGENT" "$@" [ "$FORCEIPV" ] && set -- "$FORCEIPV" "$@"
# Note: axel doesn't support output directory, only output file (-o) # Note: axel doesn't support output directory, only output file (-o)
docmd $AXEL $FORCEIPV $AXELQ_LOCAL $AXELTIMEOUT $AXELHEADER $AXELNOSSLCHECK $EGET_AXEL_OPTIONS "$@" docmd $AXEL $EGET_AXEL_OPTIONS "$@"
} }
# axel wrapper for downloads # axel wrapper for downloads
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment