env icon indicating copy to clipboard operation
env copied to clipboard

[建议]env 不要安装到 .env 目录

Open dongly opened this issue 1 year ago • 5 comments

在 linux 中,大量软件使用 .env 文件作为环境变量文件.使用 .env 作为安装目录可能会出现混淆,或出现错误.建议 env 安装到其他目录

dongly avatar May 11 '24 02:05 dongly

叫.rtenv怎么样?

mysterywolf avatar Jun 24 '24 17:06 mysterywolf

我觉得可以

dongly avatar Jun 27 '24 03:06 dongly

的确哈,linux很多叫env的,且还有env这个命令。目前pip install env,已经将入口env文件修改为rt-env。但是.env文件夹还是有迷惑性

ComerLater avatar Jul 01 '24 00:07 ComerLater

@mysterywolf

叫.rtenv怎么样?

建议遵循 XDG Base Directory specification,之前在 rtt 提交过一个 PR,发现 env 这边也要一样改,有些迷糊,希望可以讨论讨论

wirano avatar Jul 05 '24 08:07 wirano

在相关工具的编程中env是指环境变量还是指rt-thread env tools也有很大歧义。

env script依赖于git、python等工具,这些工具可能用户还没安装,或者版本不符合要求(例如python 2.x)。建议增加一个上层文件夹,而不是只包含rtenv工具。这些工具可以被vscode插件、RT-Thread Studio、命令行工具使用。建议取通用的名称.rt-thread

不过如果是这样,这个文件夹可能会很大(我的RT-Thread Studio的repo/Extract已经10个G)在Windows中用户的C盘空间可能不足,要不Windows默认安装到别的盘?

考虑安装可能不完整的情况,例如网络中断、解压不完整被中止等。建议安装完成后写入某个文件。

示例目录结构:

.rt-thread/            # rt-thread工具
├── git/                   # git
├── python3/               # python3
├── rtenv/                 # rt-thread env tools
├── rttsrc/                # rt-thread源码
│   ├── 4.1.1/
│   └── 5.2.0/
├── dsp/                   # 调试器支持包
│   ├── OpenOCD-20240916-0.12.0/
│   └── ST-LINK_Debugger/
│       └── 1.6.0/
├── toolchain/             # 工具链
└── index.json             # 索引文件

可能目录结构的规划还不太明确,用索引文件来指明:

/** .rt-thread文件夹的索引文件 */
export interface RttDirIndexJson {
  /** 索引文件的版本 */
  version: string;
  /** 索引文件列表 */
  indexs: Array<RttDirIndexGeneric | RttDirIndexDsp | RttDirIndexToolchain>;
}

/** 文件夹索引的基本类型 */
interface RttDirIndexBase {
  /** 类型 */
  type: string;
  /** 文件夹的根目录,如果是相对目录则相对于index.json的位置 */
  path: string;
  /** 版本,不指定则通过调用命令行等方式来获取 */
  version?: string;
}

/** 文件夹索引 - 通用 */
export interface RttDirIndexGeneric extends RttDirIndexBase {
  /** 类型 */
  type: 'git' | 'python3' | 'rtenv' | 'rttsrc' | 'bsp';
}

/** 文件夹索引 - 调试支持包 */
export interface RttDirIndexDsp extends RttDirIndexBase {
  /** 类型 */
  type: 'dsp';
  /** 子类型 */
  subType: 'stlink' | 'jlink' | 'pyocd' | 'openocd';
}

/** 文件夹索引 - 工具链 */
export interface RttDirIndexToolchain extends RttDirIndexBase {
  /** 类型 */
  type: 'toolchain';
  /** 子类型 */
  subType: 'gcc' | 'armcc' | 'iccarm';
  /** 工具链前缀 */
  prefix?: string;
}

例如:

{
    "version": "0.1.0",
    "indexs": [
        {
            "type": "rtenv",
            "path": "rtenv",
            "version": "2.0.0"
        },
        {
            "type": "rttsrc",
            "path": "rttsrc/5.2.0",
            "version": "5.2.0"
        },
        {
            "type": "git",
            "path": "git/git-2.41.0-32-bit"
        },
        {
            "type": "dsp",
            "subType": "stlink",
            "path": "dsp/ST-LINK_Debugger/1.6.0",
            "version": "1.6.0"
        },
        {
            "type": "toolchain",
            "subType": "gcc",
            "path": "D:/software/gcc-arm-none-eabi-10.3-2021.10-win32",
            "version": "10.3.1"
        },
    ]
}

考虑vscode插件(例如rt-thread-smart)的应用场景:

启动时先检查安装env必要的git、python3等工具是否可用。版本有效则把绝对路径添加到索引文件;否则下载并解压,检查到安装后的有效再添加到索引文件。

新建工程时,根据用户选择的rt-thread版本、芯片厂商、调试器,根据预定义的信息自动安装相关工具并添加到索引文件,非必要情况下不需要用户手动安装。

导入工程时,用户只需要选择调试器类型(和编译工具链类型,如果必要)。

这些工具默认自动下载,但支持手动指定本地路径。

考虑新提案的支持(例如json/yaml配置构建信息?),由于旧版本的env不支持,插件负责下载支持的版本。

jswyll avatar Apr 19 '25 06:04 jswyll