# shellcheck shell=dash

___X_CMD_PWSH_SETUP_RCCODE=""
___x_cmd_pwsh___setup(){
    ___x_cmd os is win || N=pwsh M="Can only set up x-cmd in Git Bash" log:ret:1
    local rcdir="$___X_CMD_ROOT_DATA/pwsh"
    ___x_cmd mkdirp "$rcdir"
    ___x_cmd cp -f "$___X_CMD_ROOT_MOD/pwsh/lib/rc/_index.ps1"     "$rcdir/_index.ps1"
    [ ! -d "$___X_CMD_ROOT_DATA/pwsh/alias" ] || ___x_cmd rmrf "$___X_CMD_ROOT_DATA/pwsh/alias"

    local x_=; ___x_cmd_pwsh___setup_rcfile_ || return $?
    local rcfile="$x_"

    ___x_cmd boot initrcfile1 "$___X_CMD_PWSH_SETUP_RCCODE"     "$rcfile" || return $?
    ___x_cmd_pwsh___setup_rcshortcut_file
}

___x_cmd_pwsh___setup_rcfile_(){
    local fp="\$HOME\.x-cmd.root\local\data\pwsh\_index.ps1"
    ___X_CMD_PWSH_SETUP_RCCODE="if (Test-Path \"$fp\") { Set-ExecutionPolicy Bypass -Scope Process; . \"$fp\" };  # boot up x-cmd."

    local rcfile; rcfile="$( ___x_cmd pwsh -ExecutionPolicy RemoteSigned -NoProfile -Command \
        '[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 ; $OutputEncoding = [System.Text.Encoding]::UTF8; $profile'
    )" 2>/dev/null

    [ -n "$rcfile" ] || N=pwsh M="Not found current user's PowerShell configuration file" log:ret:1
    ___x_cmd_pwsh_path win_to_linux_ "$rcfile"
    [ -n "$x_" ]
}

___x_cmd_pwsh___setup_is_required(){
    ___x_cmd os is win || return $?
    local x_;   ___x_cmd_pwsh___setup_rcfile_ || return $?;   local rcfile="$x_"
    ! {
        ___x_cmd boot ensurerccodewithoutextra  \
                                "$___X_CMD_PWSH_SETUP_RCCODE"               "$rcfile"                               && \
            ___x_cmd_cmds cmp   "$___X_CMD_ROOT_MOD/pwsh/lib/rc/_index.ps1" "$___X_CMD_ROOT_DATA/pwsh/_index.ps1"
    } 1>/dev/null 2>/dev/null
}

___x_cmd_pwsh___setup_rcshortcut_file(){
    ___x_cmd shortcut compile pwsh
}
