From c4bb17db4f77dedfbc456577844b33f1eeb7903a Mon Sep 17 00:00:00 2001 From: Gardouille Date: Tue, 19 Sep 2023 10:31:40 +0200 Subject: [PATCH] Ensure to manage eza's options Append options to EZA_OPTIONS var. Pass the EZA_OPTIONS var to eza with an `echo`. Avoid conflict with eza's options. --- eza | 72 ++++++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 50 insertions(+), 22 deletions(-) diff --git a/eza b/eza index 7201082..9ddf533 100755 --- a/eza +++ b/eza @@ -46,7 +46,7 @@ readonly COLOR_DEBUG="${PURPLE}" usage() { # {{{ cat <<- HELP -usage: $PROGNAME [-d|-h|-u|-s] +usage: $PROGNAME [--debug|help|--user|--system] Tiny script to start existing eza (from the system or from user's PATH) @@ -55,22 +55,24 @@ EXAMPLES : ${PROGNAME} - Set different binary for user - ${PROGNAME} -u "${HOME}/bin/my.eza" + ${PROGNAME} --user "${HOME}/bin/my.eza" OPTIONS : - -d,--debug + --debug Enable debug messages. - -h,--help + help Print this help message. - -u,--user + --user Change the user's binary to use. (default: ${EZA_USER_PATH}) - -s,--system + --system Change the system's binary to use. (default: ${EZA_SYSTEM_PATH}) + + ALL OTHER OPTIONS WILL BE PASSED AS EZA's OPTIONS HELP } # }}} @@ -155,19 +157,46 @@ main() { # {{{ ## If eza system is available {{{ ### Start it if is_bin_present "${eza_system_path}" "| "; then - debug_message "Use Eza from system (${eza_system_path})" - "${eza_system_path}" \ - || error_message "Error while calling eza from system path (${eza_system_path})" 11 + ### If EZA_OPTIONS is defined, call eza with options {{{ + if [ -n "${EZA_OPTIONS-}" ]; then + debug_message "Use Eza from system (${eza_system_path}) with options (${EZA_OPTIONS})." + "${eza_system_path}" $(echo "${EZA_OPTIONS}") \ + || error_message "Error while calling eza from system path (${eza_system_path})" 11 + ### }}} + ### If EZA_OPTIONS is NOT defined simply call it {{{ + elif [ -z "${EZA_OPTIONS-}" ]; then + debug_message "Use Eza from system (${eza_system_path}) without options." + "${eza_system_path}" \ + || error_message "Error while calling eza from system path (${eza_system_path})" 12 + ### }}} + ### If anything else happens, exit with error {{{ + else + error_message "This test case is not supposed to happen ! Variable EZA_OPTIONS is defined or not." 13 + fi + ### }}} debug_message "--- MAIN END" exit 0 fi ## }}} ## If eza from user path is available {{{ - ### Start it if is_bin_present "${eza_user_path}" "| "; then - debug_message "Use Eza from user's path (${eza_user_path})" - "${eza_user_path}" \ - || error_message "Error while calling eza from user path (${eza_user_path})" 12 + ### If EZA_OPTIONS is defined, call eza with options {{{ + if [ -n "${EZA_OPTIONS-}" ]; then + debug_message "Use Eza from user's path (${eza_user_path}) with options (${EZA_OPTIONS})." + "${eza_user_path}" $(echo "${EZA_OPTIONS}") \ + || error_message "Error while calling eza from system path (${eza_user_path})" 21 + ### }}} + ### If EZA_OPTIONS is NOT defined simply call it {{{ + elif [ -z "${EZA_OPTIONS-}" ]; then + debug_message "Use Eza from user's path (${eza_user_path}) without options." + "${eza_user_path}" \ + || error_message "Error while calling eza from user path (${eza_user_path})" 22 + ### }}} + ### If anything else happens, exit with error {{{ + else + error_message "This test case is not supposed to happen ! Variable EZA_OPTIONS is defined or not." 23 + fi + ### }}} debug_message "--- MAIN END" exit 0 fi @@ -184,8 +213,8 @@ if [ ! "${NBARGS}" -eq "0" ]; then manage_arg="0" - ## If the first argument ask for help (h|help|-h|-help|-*h|-*help) {{{ - if printf -- '%s' "${1-}" | grep --quiet --extended-regexp -- "^-*h(elp)?$"; then + ## If the first argument ask for help (h|help) {{{ + if printf -- '%s' "${1-}" | grep --quiet --extended-regexp -- "^h(elp)?$"; then usage exit 0 fi @@ -206,27 +235,26 @@ if [ ! "${NBARGS}" -eq "0" ]; then while printf -- '%s' "${1-}" | grep --quiet --extended-regexp -- "^-+"; do case "${1}" in - -d|--debug ) ## debug + --debug ) ## debug DEBUG=0 debug_message "--- Manage argument BEGIN" ;; - -u|--user ) ## Define eza_user_path with given arg + --user ) ## Define eza_user_path with given arg ## Move to the next argument shift ## Define var readonly eza_user_path="${1}" ;; - -s|--system ) ## Define eza_system_path with given arg + --system ) ## Define eza_system_path with given arg ## Move to the next argument shift ## Define var readonly eza_system_path="${1}" ;; * ) ## unknow option - printf '%b\n' "${RED}Invalid option: ${1}${RESET}" - printf '%b\n' "---" - usage - exit 1 + debug_message "Unknown option (${1}), pass it as eza's option" + test -n "${EZA_OPTIONS-}" && EZA_OPTIONS="${EZA_OPTIONS} ${1}" + test -z "${EZA_OPTIONS-}" && EZA_OPTIONS="${1}" ;; esac