[建议]env 不要安装到 .env 目录
在 linux 中,大量软件使用 .env 文件作为环境变量文件.使用 .env 作为安装目录可能会出现混淆,或出现错误.建议 env 安装到其他目录
叫.rtenv怎么样?
我觉得可以
的确哈,linux很多叫env的,且还有env这个命令。目前pip install env,已经将入口env文件修改为rt-env。但是.env文件夹还是有迷惑性
@mysterywolf
叫.rtenv怎么样?
建议遵循 XDG Base Directory specification,之前在 rtt 提交过一个 PR,发现 env 这边也要一样改,有些迷糊,希望可以讨论讨论
在相关工具的编程中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不支持,插件负责下载支持的版本。