# shellcheck shell=dash
___x_cmd_ldev(){(
    local release="${1:?Provide source folder}";    shift
    case "$release" in
        x0|x1|x2|x3|x4|x5|x6|x7) ;;
        *)  x:error "Invalid release=${release}"
            return 1
            ;;
    esac
    local srcfolder="${___X_CMD_ROOT}/v/$release"

    if [ -d "$srcfolder" ]; then
        ___x_cmd_inner_cd "$srcfolder"
        command git clean -fd
        command git stash
        command git pull
    else
        ___x_cmd_inner_cd "${srcfolder%/*}" || return
        command git clone "git@github.com:x-cmd/${release}.git"
        ___x_cmd_inner_cd "$release"
    fi

    {
        if [ $# -eq 0 ]; then
            x fsiter --folder mod
        else
            printf "%s\n" "$@"
        fi
    } | while read -r folder; do
        [ -d "$___X_CMD_ROOT_MOD/$folder" ] || {
            x:info "copying $folder to $___X_CMD_ROOT_MOD/$folder"
            ___x_cmd_cmds_cp -rf "$srcfolder/mod/$folder" "$___X_CMD_ROOT_MOD" || return
            ___x_cmd_cmds_cp -rf "$srcfolder/adv/$folder" "$___X_CMD_ROOT_ADV" || return
        }
    done
)}
