4 个版本 (2 个重大更改)

0.3.0 2019年11月25日
0.2.1 2019年11月11日
0.2.0 2019年11月11日
0.1.0 2019年10月30日

#408 in 配置

BSD-3-Clause

165KB
1.5K SLoC

quickproj

简约主义者项目创建

功能

  • 使用本地和 Git 仓库进行模板管理
  • 从现有模板初始化新项目
  • 验证和解析 JSON 配置
  • 通过用户输入覆盖配置变量(带验证)

使用示例

快速开始

  1. 发行页面 下载根据所使用的操作系统对应的可执行/二进制文件。

  2. 将可执行/二进制文件链接到操作系统,这样您可以在任何位置调用 quickproj

    • Linux / Mac OS

      将二进制文件移动到 /usr/local/bin 目录并重新启动终端

      mv ~/Downloads/quickproj /usr/local/bin
      
    • Windows

      1. 右键单击 Windows 标志并选择 系统 菜单项。
      2. 单击 高级系统设置 按钮。
      3. 单击 环境变量 按钮。
      4. 选择您的 PATH 变量并单击 编辑 按钮。
      5. 单击 新建 按钮。
      6. quickproj 可执行文件的目录路径添加到其中。
      7. 连续单击几次 确定 按钮以应用更改。
  3. 之后,您可以从任何文件夹调用 quickproj 命令。有关每个命令可接受的参数和选项的更多信息,请使用 --help 选项调用任何所需的命令。

常见问题解答。

问:这个工具的目的是什么?
答:我制作这个工具是为了更容易地从零开始开发新项目。通过定义使用的模板,您可以更细致地控制您的需求以及如何准备新项目。

问:是否可以以多线程模式运行命令?
答:目前不能以多线程模式运行命令。尽管现有的代码库可以轻松地为此类事情进行更改,但我决定尽可能保持简单,以防止因大量 I/O 操作而“杀死”您的硬盘。

模板结构

每个安装的模板必须在根模板文件夹中有一个配置文件(命名为 config.json),以及需要为新项目复制或生成的文件。

配置参数

以示例来说,我们将选择并修改现有的 quickproj原始文件)应用程序模板

  
{
  "files":{
    "sources": [
      { "from": "sources", "to": "." }
    ],
    "generated": [
      "configs/{{ terraform_sage_environment }}/variables.tfvars"
    ],
    "directories": [
      "configs/{{ terraform_sage_environment }}"
    ],
    "templates": {
      "variables.tfvars": "templates/variables.tfvars"
    }
  },
  "variables": {
    "terraform_sage_environment": [
        "dev", 
        "production", 
        "staging"
    ],
  },
  "scripts": {
    "after_init": [
       "ls -al"
    ]
  },
  "storage": {
    "variables": {
      "service_name": "service"
    }
  }
}

配置文件必须保存为模板根目录下的 config.json 文件名。否则,quickproj 应用程序将忽略用户的模板。

文件部分

模板配置文件的主要部分。它存储了需要创建、复制或生成的文件和文件夹信息。

  • 源文件

    此部分存储用于复制文件的文件夹的路径。每个条目必须包含以下键

    • from 键表示从模板文件夹到需要复制到目标目录的文件的相对路径。
    • to 键表示在目标文件夹中的相对路径,文件需要从源目录复制到该路径。
  • 生成文件

    定义了需要在目标文件夹中生成的模板的相对路径。每个路径可以是静态的(=硬编码的)或动态的(=使用配置变量)。为了使用此部分中的模板,用户必须在路径末尾指定所需的模板名称(与在 templates 部分中定义的键值相同)。
    在上面的示例中,我们指定了一个动态路径,因此将根据 variables.tfvars 模板生成三个文件,路径如下

    • 配置/开发/变量.tfvars
    • 配置/生产/变量.tfvars
    • 配置/预发布/变量.tfvars
  • 目录

    定义了在复制文件之前需要生成的目录。在示例中,"configs/{{ terraform_sage_environment }}" 的值表示我们将创建三个不同的目录。其值将从 terraform_sage_environment 变量中提取,该变量在 variables 部分中指定。
    在我们的示例中,应用程序将根据 variables 部分中的动态路径和变量创建三个文件夹

    • configs/dev/
    • configs/production/
    • configs/staging/
  • 模板

    定义了用于项目生成过程的记录列表,其中

    • 键表示模板的文件名,可用于 generated 部分中
    • 值表示在源文件夹中必须使用的模板的相对路径

变量部分

可选部分,存储在项目生成过程中可以使用的所有变量,如果用户指定了 CLI 中的 --override-all--override 选项,则可以被覆盖。

本部分中指定的每个变量都必须满足以下要求

  • 键只能表示为 string 类型。
  • 值可以表示为 stringstring 数组 类型。

不符合要求的键/值对将被忽略,并在项目生成过程中不使用。

在重写阶段(当 CLI 要求您指定要重写的值时),您可以指定特定类型的任何正确值。

  • 对于 string 类型,任何非空字符串。
  • 非空字符串,每个值由 , 分隔,用于 字符串数组 类型。

Enter 键或为某个键设置空字符串将导致使用配置中指定的默认值。

脚本部分

可选部分,描述了在模板安装过程中可以执行的一系列命令/脚本。

  • after_init

    必须定义为字符串数组,其中每个字符串表示在模板安装过程之后需要执行的特定命令。例如,从上面的示例中,应用程序将执行 ls -al 命令来输出当前目录中的文件列表。

存储部分

可选部分,用作模板数据的存储,不提供对最终用户的访问以重写它们。

  • 变量

    可选。将模板变量定义为键值对,并支持访问主变量部分。

    每个键值对必须满足以下要求

    • 键只能表示为 string 类型。
    • 值可以表示为 stringstring 数组 类型。
    • variables 部分中任何对内容的引用都必须指定为具有 Vars. 前缀的字符串。例如: {{ Vars.my_variable }}

许可协议

quickproj 在 BSD 许可下发布。有关更多详细信息,请参阅 LICENSE 文件。

依赖项

~14–24MB
~411K SLoC