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