# shellcheck shell=dash

___x_cmd_git_submit(){
    local args=""
    local i=0
    for arg in "$@"; do
        i=$((i+1))
        case "$arg" in
            --) break ;;
            *)  args="$args \\"\$$i\\"" ;;
        esac
    done

    case "$i" in
        0)      ___x_cmd___git_origin commit -m "..." ;;
        1)      eval ___x_cmd___git_origin commit -m "$args" ;;
        *)      eval ___x_cmd___git_origin commit "$args" -m "\"\$msg\"" ;;
    esac || {
        local code=$?
        git:warn "Abort due to commit failure: [Exit=$code]"
        return $code
    }

    shift "$i"

    case "$#" in
        0)      ___x_cmd___git_origin push origin "$(___x_cmd_git_meta_branch)" ;;
        *)      ___x_cmd___git_origin push "$@" ;;
    esac
}
