[任务描述]
为 init 命令添加 --template 参数,用户可以指定一个本地模板目录,
在初始化仓库时,libra 会基于该模板目录下的结构和文件生成初始内容。
类似 Git 的 git init --template=<template-directory> 功能。
--template 的特点:
- 用户可自定义模板目录:模板中包含的配置文件、hooks、预设目录结构
会被拷贝到初始化的 libra 仓库中。
- 如果未指定 --template,使用默认模板路径(libra 内置默认模板)。
- 模板目录下常见内容:
- hooks/ (预设的 hook 脚本)
- info/ (配置文件,如 exclude)
- description (仓库描述文件)
- 其他由用户定义的配置/文件
[实现方案]
- 在 InitArgs 结构体中添加
Option<String> 类型变量 template,通过 clap
解析命令行参数 --template <PATH>。
- 在 init 函数中增加模板路径解析逻辑:
- 优先使用命令行传入的 template
- 其次检查环境变量
LIBRA_TEMPLATE_DIR
- 否则使用内置默认模板(原来的 include_str! 文件)
- 实现一个递归拷贝函数
copy_templates(src: &Path, dst: &Path):
- 将模板目录的内容复制到目标仓库目录
- 遇到同名文件时保留已有文件,不覆盖
- 修改原来的 init 文件生成逻辑:
- 当使用模板目录时,调用
copy_templates 复制模板
- 如果没有模板,则回退到现有内置模板逻辑
- 编写测试样例:
- 使用临时生成的模板目录,指定
--template <临时路径>,验证初始化后的仓库包含模板中的所有文件和目录;
- 不指定
--template 时,验证初始化结果使用内置默认模板,行为与原来的逻辑一致;
- 错误情况测试:传入不存在或不可访问的模板路径,应返回错误并提示用户。
[任务描述]
为 init 命令添加 --template 参数,用户可以指定一个本地模板目录,
在初始化仓库时,libra 会基于该模板目录下的结构和文件生成初始内容。
类似 Git 的
git init --template=<template-directory>功能。--template 的特点:
会被拷贝到初始化的 libra 仓库中。
[实现方案]
Option<String>类型变量template,通过 clap解析命令行参数
--template <PATH>。LIBRA_TEMPLATE_DIRcopy_templates(src: &Path, dst: &Path):copy_templates复制模板--template <临时路径>,验证初始化后的仓库包含模板中的所有文件和目录;--template时,验证初始化结果使用内置默认模板,行为与原来的逻辑一致;