# shellcheck    shell=dash
___x_cmd_cosmo___add(){
    local name="$1";
    [ -n "$name" ]                      ||  N=cosmo M="Provide a package name"          log:ret:64
    ___x_cmd_cosmo___hasbin "$name"     ||  N=cosmo M="Not found bin => $name "         log:ret:1

    ___x_cmd_cosmo___download "$name"   || return $?
    ___x_cmd_cosmo___populate "$name"   || return $?
}

___x_cmd_cosmo___populate(){
    local name="$1";
    [ -n "$name" ]                      || N=cosmo M="Provide a package name"           log:ret:64

    local download_file_ext="tar.xz"
    local ball="$___X_CMD_COSMO_DOWNLOAD_PATH/$name/$name.${download_file_ext}"

    local x_;   ___x_cmd_cosmo___binpath_ "$name";  local tgt="$x_"
    [ -f "$ball" ]                      || N=cosmo M="Not found zip package => $name "  log:ret:1

    [ ! -f "$tgt" ] || ___x_cmd_cmds rm -rf "$tgt"
    ___x_cmd ensurefp "$tgt"
    ___x_cmd_cosmo___uztxz "$ball" "${tgt%/*}" || N=cosmo M="Fail to unzip $ball"    log:ret:1

    ___x_cmd_cmds chmod +x "$tgt"
}
