#start #project #quick #new #cli

bin+lib qk

快速启动新项目的 CLI

4 个版本

0.1.4 2024 年 3 月 23 日
0.1.3 2023 年 11 月 5 日
0.1.2 2023 年 11 月 5 日
0.1.1 2023 年 11 月 5 日
0.1.0 2022 年 11 月 28 日

#4 in #start

Download history 14/week @ 2024-04-02 2/week @ 2024-05-21 4/week @ 2024-06-11

172 每月下载量

MIT 许可证

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