# shellcheck shell=dash

___x_cmd_hub_keypair_rm(){
    local X_help_cmd='___x_cmd_hub___help keypair rm'
    help:arg:parse

    while [ $# -gt 0 ]; do
        case "$1" in
            --remote)            shift; ___x_cmd_hub_keypair_rm_remote "$@" ; return ;;
            -f|--force)          shift; force=true ;;
            *)  break ;;
        esac
    done

    local name="$1"
    if [ -z "$name" ]; then
        ___x_cmd_ui_tf false "Key name required. Like 'x hub keypair rm <name>'"
        return 1
    fi

    if [ -z "$force" ] && ! ___x_cmd ui yesno "Are you sure to remove the key '$name'?" ; then
        return 1
    fi

    local x_=; ___x_cmd_hub_u_userdir_ me || return 1
    ___x_cmd mkdirp "$x_/keypair"
    local keydir=; keydir="$x_/keypair" || return 1
    ___x_cmd rm -f "$keydir/${name}_private.pem" "$keydir/${name}_public.pem" || return 1
}


___x_cmd_hub_keypair_rm_remote(){
    local name="$1"
    if [ -z "$name" ]; then
        ___x_cmd_ui_tf false "Key name required. Like 'x hub keypair rm <name>'"
        return 1
    fi

    if [ -z "$force" ] && ! ___x_cmd ui yesno 'Are you sure to delete key '"'$name'"'? you should backup it first.' ; then
        ___x_cmd_ui_tf false "Cancelled"
        return 1
    fi

    local resp=; resp="$(___x_cmd_hub_u_curl delete "/api/v0/key/$name?type=private")" || {
        ___x_cmd_hub_u_handle_resp false "Failed to delete key '$name'"
        return 1
    }

    resp="$(___x_cmd_hub_u_curl delete "/api/v0/key/$name?type=public")" || {
        ___x_cmd_hub_u_handle_resp false "Failed to delete key '$name'"
        return 1
    }

    ___x_cmd_hub_u_handle_resp true "Key '$name' deleted"
}
