@gzteacher/workflow
Version:
181 lines (176 loc) • 4.31 kB
TypeScript
/** workflow.config.js 配置 */
export interface WorkFlowConfig {
/**
* tag 相关配置。
*/
tag?: Tag;
/**
* 企业微信消息通知相关配置,`undefined` 时关闭消息通知行为
* @default undefined
*/
notify?: Notify;
}
/**
* tag 相关配置
*
* 支持格式:{version}-{env}-{order}
*/
export interface Tag {
/**
* 配置获取 tag 格式 {version}-{env}-{order} 中 version 值的方法。
*
* 默认取上一个标签中 version 的值。
* @default ({ preVersion }) => preVersion
*/
getVersion?: (ctx: Context) => string;
/**
* 配置获取 tag 格式 {version}-{env}-{order} 中 env 值的方法。
*
* 默认取上一个标签中 env 的值。
* @default ({ preEnv }) => preEnv
*/
getEnv?: (ctx: Context) => string;
/**
* 配置获取 tag 格式 {version}-{env}-{order} 中 order 值的方法。
*
* 默认取上一个标签中 order 的值加 1。
* @default ({ preOrder }) => `${Number(preOrder) + 1}`
*/
getOrder?: (ctx: Context) => string;
/**
* 配置获取 tagName 的方法。结果将替换原 {version}-{env}-{order} 格式的组装。
*
* @default undefined
*/
getTagName?: (ctx: Context) => string;
/**
* 配置获取 commit 内容的方法。
* @default ({ tagName }) => `chore: release ${tagName}`
*/
getMsg?: (ctx: Context) => string;
/**
* 配置获取版本号文件名的方法,`false` 时关闭更新版本号文件的行为。
* @default "VERSION"
*/
getVersionFileName?: ((ctx: Context) => string) | false;
/**
* 配置获取第一个 tag 名的方法,将在仓库还没有 tag 记录时使用。
*
* `undefined` 时不自动提交第一个 tag。
* @default undefined
*/
getFirstTagName?: (ctx: Context) => string;
/**
* 允许触发 tag 流程的分支名。
*
* `undefined` 时不限制分支名。
* @default undefined
*/
allowBranchs?: string[];
}
/**
* 企业微信消息通知相关配置
* @see https://developer.work.weixin.qq.com/document/path/91770
*/
export interface Notify {
/**
* 配置获取消息机器人 webhook 的方法。
*
* 添加机器人方法: https://developer.work.weixin.qq.com/document/path/91770
*
* `undefined` 时不发送消息。
* @default undefined
*/
getWebhookUrl?: (ctx: Context) => string;
/**
* 配置获取消息内容的方法。支持 md 格式。
*
* `undefined` 时不发送消息。
* @see https://developer.work.weixin.qq.com/document/path/91770
* @default undefined
*/
getContent?: (ctx: Context) => string;
/**
* 允许触发消息通知流程的分支名。
*
* `undefined` 时不限制分支名。
* @default undefined
*/
allowBranchs?: string[];
}
/**
* 流程上下文信息
*
* 将在执行 getXXX 类方法时作为参数传入。
*/
export interface Context {
/**
* 标签格式 {version}-{env}-{order}
*
* 获取上一个标签中的 `version` 部分内容。
*/
preVersion: string;
/**
* 标签格式 {version}-{env}-{order}
*
* 获取上一个标签中的 `env` 部分内容。
*/
preEnv: string;
/**
* 标签格式 {version}-{env}-{order}
*
* 获取上一个标签中的 `order` 部分内容。
*/
preOrder: string;
/**
* 标签格式 {version}-{env}-{order}
*
* 获取上一个 tag 名。
*/
preTagName: string;
/**
* 标签格式 {version}-{env}-{order}
*
* 获取新生成的 tag 名。
*/
tagName: string;
/**
* 标签格式 {version}-{env}-{order}
*
* 获取新生成标签中的 `version` 部分内容。
*/
version: string;
/**
* 标签格式 {version}-{env}-{order}
*
* 获取新生成标签中的 `env` 部分内容。
*/
env: string;
/**
* 标签格式 {version}-{env}-{order}
*
* 获取新生成标签中的 `order` 部分内容。
*/
order: string;
/**
* 获取当前 git 用户名
*/
username: string;
/**
* 获取当前分支名
*/
branchName: string;
}
/**
* 执行命令可传参数
*/
export interface Options {
/**
* 跳过消息通知的步骤
*/
silence: boolean;
/**
* 不执行任何产生副作用的 git 操作,仅打印日志,可用于调试
*/
debug: boolean;
}