# shellcheck shell=dash

# Section: id
___x_cmd_chat___exec_repl___id_previous_app_(){
    local dir="$___X_CMD_CHAT_SESSION_DIR/sh"
    [ -d "$dir" ] || N=chat M="Not found the previous repl session" log:ret:1
    ___x_cmd_runmode_allow_manual || N=chat M="Please use in an interactive environment" log:ret:1

    chat:info "Select previous session"
    local ___X_CMD_CSV_APP_DATA_Session=
    local ___X_CMD_CSV_APP_DATA_ModifyTime
    ___x_cmd csv app --clear --return var --width '20,20'  <<A
$(
    ___x_cmd_cmds find "$dir" -path '*/chat.response/content' 2>/dev/null | while ___x_cmd_readr l; do
        l="${l#"$dir"/}"
        l="${l%%__*}"
        printf "%s %s\n" "${l##*/}" "${l%/*}"
    done | ___x_cmd_cmds sort -r | ___x_cmd_cmds awk 'BEGIN{ print "Session,ModifyTime"; }(!_[$2]){ print "sh/" $2 "," $1; _[$2]=1; }'
)
A
    [ -n "$___X_CMD_CSV_APP_DATA_Session" ] || return $?
    x_="$___X_CMD_CSV_APP_DATA_Session"
}

___x_cmd_chat___exec_repl___id_previous_(){
    local dir="$___X_CMD_CHAT_SESSION_DIR/sh/$$"
    [ -d "$dir" ] || return $?

    x_="1"
    local i; for i in "$dir"/*; do
        i="${i#"$dir"/}"
        [ "$i" -le "$x_" ] || x_="$i"
    done 2>/dev/null
    x_="sh/$$/$x_"
}

___x_cmd_chat___exec_repl___id_(){
    x_=""
    local dir="$___X_CMD_CHAT_SESSION_DIR/sh/$$"
    local acc=1
    [ ! -d "$dir" ] || {
        local i; for i in "$dir"/*; do
            acc="$((acc+1))"
        done 2>/dev/null
    }
    x_="sh/$$/$acc"
}

___x_cmd_chat___exec_repl___session_runid_(){
    x_=""
    local session="$1"
    local dir="$___X_CMD_CHAT_SESSION_DIR/$session"
    local acc=1
    [ ! -d "$dir" ] || {
        local i; while ___x_cmd_readr l; do
            acc="$((acc+1))"
        done <<A
$( ___x_cmd_cmds find "$dir" -path '*/chat.response/content' 2>/dev/null )
A
    }
    x_="$acc"
}

# EndSection
