3 个版本
0.1.2-alpha1 | 2020年2月23日 |
---|---|
0.1.1-alpha1 | 2020年2月23日 |
0.1.0-alpha1 | 2020年2月23日 |
#3 in #jet
55KB
1.5K SLoC
Jetkcli
嵌入式终端功夫命令行界面
⚠️ Jetkcli 仍在开发中 ⚠️
在您理解为什么以及如何使用它之前,请勿急于安装和使用 jet。花时间阅读这一部分,这可能为您节省宝贵的时间。
我应该使用 Jet 吗?
Jet 设计在非常特定的环境下工作
- 您使用 git 并想强制执行分支和提交的命名约定。
- 您使用 Jira,并希望自动化一些重复/无聊的任务。
如果您的项目不符合此描述,您可能不想使用 Jet(并且无论如何也无法使用)。
Jet 能为我做什么?
-
当开发项目时,开发者经常尝试强制执行有关提交消息、分支模式、Jira 工作流等方面的良好实践。不幸的是,人们来来去去,人类会犯错误,事情变得一团糟。
-
当与 Jira 一起工作时,我们执行了许多与 git 操作概念上相匹配的重复任务。让我们假设以下场景
主要开发者 Alice 要求 Bob 在 jet 项目中实现一个新命令。她告诉 Bob 取相应的任务。Bob 开始在 JET-1 上工作,并将其分配给自己,将任务状态转换为 "工作中"。他检查出一个新的本地 git 分支,其名称为 feat/JET-1
。完成代码编辑后,Bob 创建了一个以下消息的提交: feat(command): add jet 1 feature [JET-1]
。Bob 编码完成,将他的工作推送到远程仓库并提交一个 PR。他指派 Alice 进行审查。他将 Jira 上的任务状态更改为 "审查",并将其分配给 Alice。
Jet的目标是减少这种重复,并在可能的情况下通过统一相关的jira和git工作流程来自动化一些任务。
以下是实现这一目标的计划功能
- 强制执行分支模型和提交信息约定,参考您的issue(见常规提交)✔️
- 方便的提交生成命令,匹配您的约定模型(您只需要输入提交信息)✔️
- 自动分支命名✔️
- 在开始处理issue时自动转换issue状态和分配
- 在您的项目托管在的git平台提交PR。
- 自动在您的git平台(bitbucket、github、gitlab)上提交PR并为其分配审查者。
- 提交PR时自动转换issue状态和分配。
- 从命令行读取issue描述和评论✔️
- 生成markdown更改日志
安装
要安装Jetkcli,您需要在系统上安装rust。
然后您可以运行cargo install jetkcli
全局设置
在开始使用jet之前,您需要创建以下配置文件
平台 | 值 | 位置 |
---|---|---|
Linux | $XDG_CONFIG_HOME 或$HOME/.config |
/home/alice/.config/jet/config.toml |
macOS | $HOME/Library/Preferences |
/Users/Alice/Library/Preferences/jet/config.toml |
Windows | {FOLDERID_RoamingAppData} |
C:\Users\Alice\AppData\Roaming\jet\config.toml |
您可以从doc/example.config.toml复制示例。
# "my_corporate_jira" is an arbitrary value, put whatever you want here
[servers.my_corporate_jira]
url = "corporate.jira.com"
username = "[email protected]"
password = "hunter2"
[servers.local]
url = "https://127.0.0.1:8080"
username = "bob.smith"
password = "hunter2"
私有项目设置
TODO
共享项目设置
此文件在${project_dir}/.jetp/config.shared.toml
中生成。上面的示例显示了默认生成的文件。
[jira]
# project short name in jira, generated from `jet init` -p arg
project_name = "MYP"
# infered for global settings with one server or from `jet init` -s arg
server_name = "local"
server_url = "https://127.0.0.1:8080"
# Default values, change this if you have custom issue types
[jira.workflow]
wip = "In Progress"
done = "Done"
todo = "To Do"
[git]
# Default conventional commit prefix
commit_types = ["fix", "feat", "chore", "style", "doc"]
# Default branch prefix
branch_types = ["fix", "feat", "chore", "style", "doc"]
# Default branch separator (ex: feat/JET-1)
branch_separator = "/"
命令
Init
init命令执行以下操作
- 检查当前目录是否为git仓库。
- 检查您的Jira项目是否存在于远程Jira服务器中。
- 创建
.jet
目录和默认本地配置。
jet init -p PRO -s my_jira_server
如果您在$XDG_CONFIG_HOME/jet/config.toml
中只配置了一个Jira服务器,则可以省略--server
标志。
Checkout
类似于git checkout
,jet checkout
允许您使用-b
标志更改工作分支并创建新的分支。在检出新分支时,jet需要分支前缀后跟issue键
这会执行以下操作
- 将issue分配给在
$XDG_CONFIG_HOME/jet/config.toml
中定义的用户。 - 将issue转换为在
.jet/config.shared.toml
中设置的wip
状态。 - 创建并检出具有以下名称的新本地分支:
{prefix}{separator}{issue_key}
(见共享设置)
jet checkout -b feat JET-1 # create and checkout a branch named "feat/JET-1"
在检出现有分支时
- 如果当前用户未分配给issue,则发出警告
- 执行git checkout
jet checkout feat JET-1
如果针对此问题只有一个分支,您可以使用简短版本
jet checkout JET-1
提交
Jet生成与您配置的提交前缀匹配的子命令(参见项目设置共享)
jet feat "this is a cool feature"
假设您正在处理问题JET-1
,这将产生以下提交feat: 这是一个很酷的功能 [JET-1]
此外,您还可以为您的提交提供一个范围
jet fix "toml parse error" config
这将产生以下提交fix(config): toml 解析错误 [JET-1]
提交
TODO
依赖项
~28MB
~638K SLoC