2 个版本
0.1.1 | 2019年6月19日 |
---|---|
0.1.0 | 2019年6月19日 |
#1686 在 开发工具
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) 查看下一节
编写配置文件
配置文件遵循 Bloom 的 sane 规范。以下是格式的快速 概述。
顶级变量
在 liftoff new -h
中的所有 选项 都可以手动在文件中设置 或 通过命令行选项手动设置(尽管命令行选项始终 覆盖 文件默认值)。唯一必须存在的顶级变量是
language
:语言标识符,匹配 gitignore.io api 名称
文件
单个文件由以下描述
name
:文件名template
(可选):文件模板:网页链接或文件路径content
(可选):将输入到文件中的字符串。如果设置了template
和content
,则文件将被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
(可选):将输入到文件中的字符串。如果设置了template
和content
,则文件将被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