4 个版本
| 0.1.4 | 2024 年 3 月 23 日 |
|---|---|
| 0.1.3 | 2023 年 11 月 5 日 |
| 0.1.2 | 2023 年 11 月 5 日 |
| 0.1.1 |
|
| 0.1.0 | 2022 年 11 月 28 日 |
#4 in #start
172 每月下载量
54KB
1.5K SLoC
qk
qk 允许您使用模板快速开始新项目
用法
qk template project
安装
使用 cargo
cargo install qk
示例
考虑以下配置
[templates.rs]
projects_dir = '/home/yourusername/projects/rs'
commands = ['cargo new $QK_PROJECT_NAME #{lib?}']
editor = 'vim'
配置位于 Linux 的
~/.config/qk/qk.toml和 Windows 的%appdata%\qk\config\qk.toml。
/home/yourusername/projects/rs/如果不存在则会被创建。在 Windows 上将是C:\Users\yourusername\projects\rs\。
Windows 上的将是
$Env:QK_PROJECT_NAME。
现在您可以输入 qk rs myproject 来启动一个新的 Rust 项目。
命令 cargo new myproject 将在 /home/yourusername/projects/rs 中执行,在 /home/yourusername/projects/rs/myproject 中创建一个新的 cargo 包。注意 $QK_PROJECT_NAME 被替换为 myproject。
命令通过shell运行,在Windows上是PowerShell,在Linux上则从环境变量$SHELL读取,如果没有设置,默认为sh。因此,在Windows上,您将使用$Env:QK_PROJECT_NAME代替。您还可以在配置文件的开头或特定的模板中设置shell,就像设置编辑器选项一样。
以下是可用的环境变量
$QK_PROJECT_NAME项目的名称(myproject)$QK_PROJECT_DIR项目的目录(/home/yourusername/projects/rs/myproject)$QK_PROJECTS_DIR模板的项目目录(/home/yourusername/projects/rs)
在成功执行commands字段中的所有命令后,editor字段中的命令将使用$QK_PROJECT_DIR作为参数执行,在这种情况下,在myproject的目录中打开vim。
唯一必须的字段是projects_dir,这是新项目所在的目录(即命令将被执行的位置)。因此,您也可以定义如下模板
[templates]
example = '/path/to/example'
# other templates...
它唯一要做的就是执行项目目录中的编辑器。
有关未指定时使用的编辑器的信息,请参阅--editor帮助。您可以在配置文件开头添加editor = 'your_editor'来设置默认编辑器,例如
editor = 'vim'
# your templates...
下次您使用qk rs myproject时,它将在项目目录中打开编辑器,而不执行commands字段中的任何命令。
最后,命令中还有另一件事我们还没有解决:#{lib?}。这是一个自定义参数,lib是参数的名称,?表示它是一个标志;因此,如果您使用qk rs myproject -- --lib,则执行的命令将如下所示:cargo new myproject --lib。在自定义参数之前需要有一个--,用于以-开头的参数。
自定义参数
在配置模板中的命令中,可以使用#{arg}来指定自定义参数。当调用qk时,应在--之后指定(位置参数不需要在--之后)。
-
如果参数开始处是一个数字后面跟着冒号,则它是一个位置参数:
#{1:arg},#{2:arg2},... -
仅使用名称使其成为可选选项:
#{arg}(--arg value) -
名称后跟一个逗号和一个单个字符添加短版本:
#{arg,a}(--arg value或-a value) -
仅逗号后跟一个单个字符将禁用长版本:
#{,a}(-a value) -
*允许空值:#{arg*}(--arg value或--arg ""),#{arg,a*},#{,a*},#{1:arg*}... -
!表示必填项:#{arg!}、#{1:arg!}、#{arg,a!}、#{,a!}、#{arg!*}、#{arg,a*!}、#{,a!*},... -
?表示标记项:#{arg?}(--arg),#{arg,a?}(--arg或-a),#{,a?}(-a),...
示例
~/.config/qk/qk.toml:
[templates.example]
projects_dir = '/path/to/example'
commands = ['echo hello #{1:name!} #{2:lastname} #{num} #{color,c}']
> qk example project
error: The following required arguments were not provided:
<name>
USAGE:
[OPTIONS] <name> [lastname]
For more information try --help
> qk example project john
$ echo hello john
hello john
> qk example project john -- --num 30
$ echo hello john 30
hello john 30
> qk example project john -- -c red
$ echo hello john red
hello john red
> qk example project john -- -c red --num 10
$ echo hello john 10 red
hello john 10 red
> qk example3 project john -- -c red --num 10 doe
$ echo hello john doe 10 red
hello john doe 10 red
> qk example3 project -- --help
USAGE:
[OPTIONS] <name> [lastname]
FLAGS:
-h, --help Prints help information
OPTIONS:
-c, --color <color>
--num <num>
ARGS:
<name>
<lastname>
依赖项
~3–16MB
~167K SLoC