# shellcheck shell=dash disable=SC2034,SC2154

___x_cmd_fjo_repo_pr_edit() {
    param:scope     ___x_cmd_fjo
    param:dsl       '
type:
    state = closed open
options:
    #1                          "pr number"                                                         <>:number
    --repo|-r                   "<owner_path>/<repo_path>"                                          <>:RepoName
    --title                     "pr title"                                                          <>=""
    --body                      "pull request content"                                              <>=""
    --base                      "target branch. Format: [username:]<branch>"                        <>=""
    --due_date                  "due date"                                                          <>=""
    --assignee                  "User responsible for this pull request"                            <>=""
    --assignees                 "User responsible for this pull request"                            <>:Array=""
    --labels                    "Label IDs"                                                         <>:Array=""
    --milestone                 "ID of the milestone"                                               <>:Number=""
    --state                     "state"                                                             <>:state=""
    --unset_due_date            "unset due date"
    --allow_maintainer_edit     "allow maintainer edit"
    --json|-j                   "output json data"
'
    param:run
    local tmp_assignees
    tmp_assignees="$(x jo "[$assignees]")"
    local tmp
    tmp="$(x jo "[$labels]")"
    local gen_fjo_json
    gen_fjo_json="$(param:option2json -repo -assignees -labels ${assignees+"assignees=tmp_assignees"}  \
    ${labels+"labels=tmp"} 'unset_due_date=^^unset_due_date' 'allow_maintainer_edit=^^allow_maintainer_edit')"

    ___x_cmd_fjo_param_init_owner_repo
    ___x_cmd_fjo_curl patch "/repos/${owner_repo}/pulls/$1" "gen_fjo_json" | ___x_cmd_fjo_pr____ui_handler Edit
}