# shellcheck shell=bash

___x_cmd_set_xready(){
    local op="$1"; [ "$#" -eq 0 ] || shift
    case "$op" in
        init|fini|info) ___x_cmd_set_xready_"$op" "$@" ;;
        --help|-h)      ___x_cmd_set_help xready ;;
        *)              N=set M="No such subcmd ==> $op" log:ret:64 ;;
    esac
}

___x_cmd_set_xready_init(){
    ___X_CMD_SET_XREADY_LEVEL=$((___X_CMD_SET_XREADY_LEVEL+1))
    [ "$___X_CMD_SET_XREADY_LEVEL" -eq 1 ] || return 0

    case "$-" in
        *e*)
            set +o errexit
            ___X_CMD_SET_XREADY___FLAG_ERREXIT=1 ;;
    esac

    case "$SHELLOPTS" in
        *pipefail*)
            set +o pipefail
            ___X_CMD_SET_XREADY___FLAG_PIPEFAIL=1 ;;
    esac
}

___x_cmd_set_xready_info(){
    [ -z "$___X_CMD_SET_XREADY___FLAG_ERREXIT" ] ||
        printf "%s\n" "errexit unset during the execution of x-cmd"

    [ -z "$___X_CMD_SET_XREADY___FLAG_PIPEFAIL" ] ||
        printf "%s\n" "pipefail unset during the execution of x-cmd"
}

___x_cmd_set_xready_fini(){
    ___X_CMD_SET_XREADY_LEVEL=$((___X_CMD_SET_XREADY_LEVEL-1))
    [ "$___X_CMD_SET_XREADY_LEVEL" -eq 0 ] || return 0

    [ -z "$___X_CMD_SET_XREADY___FLAG_ERREXIT" ] || {
        set -o errexit
        ___X_CMD_SET_XREADY___FLAG_ERREXIT=
    }

    [ -z "$___X_CMD_SET_XREADY___FLAG_PIPEFAIL" ] || {
        set -o pipefail
        ___X_CMD_SET_XREADY___FLAG_PIPEFAIL=
    }
}






