#productivity #template #sane #coding #file #off #python

bin+lib liftoff

快速启动您的编码项目。查看仓库

2 个版本

0.1.1 2019年6月19日
0.1.0 2019年6月19日

#1686开发工具

MIT 许可证

88KB
1K SLoC

快速启动您的编码项目

Liftoff 尝试模仿 Rust 的 cargo new foo --<some_option> 命令,并旨在让用户尽可能快地在任何语言中开始编码。

示例

在文件夹 my_python_project 中的简单 Python 项目

$ liftoff new my_python_project --config file/to/template.sane

生成以下文件树

.
├── my_python_project
  ├── __init__.py
  ├── core.py
  └── helpers.py
├── README.md
├── requirements.txt
├── LICENSE.txt
└── setup.py

从以下配置文件

language = "python"
git = true
license = "Unlicense"

directories = [
    {
        name = "$(project)",
        files = [
            { name = "helpers.py" },
            { name = "core.py" },
            { name = "__init__.py" }
        ]
    },
]

files = [
    {
        name = "setup.py",
        template = "http://www.alink.com/a_file.py"
    },
    {
        name = "README.md",
        content = "# $(project)"
    },
    {
        name = "requirements.txt"
    },
]

安装

使用 cargo

cargo install liftoff

正在制作二进制发布...

在您的系统上安装二进制文件后,运行

liftoff install

免责声明:这将在 ~/.kick/ 下载模板和许可证文件

如何使用

用法和选项

常规

liftoff - get your coding project off the ground 

USAGE:
    liftoff [SUBCOMMAND]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    help         Prints this message or the help of the given subcommand(s)
    install      Installs liftoff files
    new          Create new project
    uninstall    Uninstalls liftoff files

创建新项目

USAGE:
    liftoff new [FLAGS] [OPTIONS] --config <FILE> [NAME]

FLAGS:
    -h, --help       Prints help information
        --nogit      Git will not be initialized in project
    -V, --version    Prints version information

OPTIONS:
    -a, --author <NAME>      Author. Needed for some licenses: MIT, BSD*
        --ci <CI_SERVICE>    Git will not be initialized in project
    -c, --config <FILE>      The config file from file path or template, e.g. "cpp" (template), "path/python.sane" (file
                             path)
    -l, --license <NAME>     License to be used
    -r, --root <PATH>        Root directory in which project <NAME> will be created. Default: $PWD

ARGS:
    <NAME>  

所有 选项 都可以显式地在配置文件中设置。请参阅 与文件一起工作

许可证

可以通过命令行 --license <Identifier> 或在配置文件中设置以下许可证 license = <Identifier>

名称 标识符 名称 标识符
无许可证 unlicense(默认) Apache 2.0 apache-2.0
MIT mit EPL 2.0 epl-2.0
GPL 3.0 gpl-3.0 GPL 2.0 gpl-2.0
BSD 3.0 bsd-3.0 BSD 2.0 bsd-2.0
LGPL 2.1 lgpl-2.1 LGPL 3.0 lgpl-3.0
AGPL 3.0 agpl-3.0 MPL 2.0 mpl-2.0

免责声明:我不对因许可证问题引起的法律损害负责。请检查生成的许可证

持续集成选项

以下 Ci 服务可以从命令行选择 --ci <标识符> 或在配置文件中设置 ci = <标识符>

名称 标识符
Travis CI travisci
Circle CI circleci
AppVeyor appveyor

模板

安装后,这些 模板 可用。

使用默认模板

如果您想使用默认模板,只需将配置文件的基准名称(不带文件扩展名)作为 --config <名称> 参数。例如:

 $ liftoff new myproject --config cpp

对于 cpp.sane

自定义模板

如果您对提供的模板不满意,您可以进行以下两项操作:

a) 快速适配模板

 $ liftoff prep <config_id> --name my_<config_id>.sane

例如,使用模板 cpp,将基本模板 cpp.sane 复制到 $PWD/my_cpp.sane编辑它以符合您的口味!现在只需使用适配的模板运行 liftoff 即可。

 $ liftoff new a_project --config my_cpp.sane 

想保存调整后的配置吗?

 $ liftoff save my_cpp.sane

调整后的模板将放置到 $HOME/.liftoff/configs/,并且可以使用 --config my_cpp不带文件扩展名)。

b) 查看下一节

编写配置文件

配置文件遵循 Bloomsane 规范。以下是格式的快速 概述

顶级变量

liftoff new -h 中的所有 选项 都可以手动在文件中设置 通过命令行选项手动设置(尽管命令行选项始终 覆盖 文件默认值)。唯一必须存在的顶级变量是

文件

单个文件由以下描述

  • name:文件名
  • template(可选):文件模板:网页链接或文件路径
  • content(可选):将输入到文件中的字符串。如果设置了 templatecontent,则文件将被 content 覆盖!

但必须包裹在文件列表中

files = [
  { 
      name = "a_file_name", 
      template = "some_file", # optional, web link or file path
      content = "Hi there" # optional
  },
  ... # more files
]

目录

  • name:目录名
  • 目录中的文件或文件列表,包含
    • name:文件名
    • template(可选):文件模板:网页链接或文件路径
    • content(可选):将输入到文件中的字符串。如果设置了 templatecontent,则文件将被 content 覆盖!

目录中的文件必须包裹在目录列表中

directories = [
    {
        name = "$(project)", 
        files = [ # multiple files
            { 
                name = "helper.py",
                template = "/a/path/to/file.py"
            },
            { 
                name = "another_helper.py",
                content = "import numpy as np"
            },  
        ]
    },
    {
        {
            name = "$(project)_copy", 
            file = { # single file
                name = "helper_copy.py",
                template = "http://somewebsite.com"
            }
        },
    }
]

变量替换

您可以在配置文件中设置变量,变量用 $(<变量>) 括起来。支持的可替换变量有

  • project
  • author(如果设置)
  • language
  • license
  • date
  • year
  • month
  • day

例如,配置文件

language = "c++" 
git = false                                            
...
files = [
    { 
        name = "README_$(project).md", # just an example
        content = "# $(project)\n* in $(language)\n* with [liftoff](www.github.com/juliangaal/liftoff)"
    },
    ...
]

使用 liftoff 命令 liftoff new test_project --config /path/to/config.sane 将被评估为 README_test_project.md注意:此处未渲染 Markdown)

# test_project
* in c++
* with [liftoff](www.github.com/juliangaal/liftoff)

持续集成

支持的服务

名称 标识符
Travis CI travisci
Circle CI circleci
AppVeyor appveyor

服务由以下描述

  • name:参见上面的 标识符
  • template(可选):网页链接或文件路径
ci = {
    name = "circleci", # see support CI Services in section Options
    template = "some_file" # optional: web link or file path!
}

构建

要求

  • rust >= 1.26.0(fs::read_to_string())
  • libssl-dev

依赖项

~33–49MB
~879K SLoC