feat: 变更名限制为中文、英文和短横线
This commit is contained in:
12
src/cli.ts
12
src/cli.ts
@@ -26,6 +26,15 @@ function requireProjectRoot(): string {
|
||||
return root;
|
||||
}
|
||||
|
||||
function validateChangeName(name: string): void {
|
||||
if (!/^[\u4e00-\u9fa5a-zA-Z-]+$/.test(name)) {
|
||||
throw new CommandError(
|
||||
`变更名 "${name}" 包含不支持的字符`,
|
||||
{ hint: "变更名仅支持中文、英文和短横线(-)" },
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function formatChangeStatus(change: ChangeStatus): string {
|
||||
const lines: string[] = [];
|
||||
lines.push(`变更:${change.name}`);
|
||||
@@ -129,6 +138,7 @@ cli.command("discuss", "讨论阶段").action(async () => {
|
||||
|
||||
cli.command("plan <change-name> <document-name>", "规划阶段").action(
|
||||
async (changeName: string, documentName: string) => {
|
||||
validateChangeName(changeName);
|
||||
const root = requireProjectRoot();
|
||||
const config = await loadConfig(root);
|
||||
const planDocs = config.stages.plan?.documents;
|
||||
@@ -166,6 +176,7 @@ cli.command("plan <change-name> <document-name>", "规划阶段").action(
|
||||
|
||||
cli.command("build <change-name>", "构建阶段").action(
|
||||
async (changeName: string) => {
|
||||
validateChangeName(changeName);
|
||||
const root = requireProjectRoot();
|
||||
const changeDir = getChangeDir(root, changeName);
|
||||
if (!existsSync(changeDir)) {
|
||||
@@ -181,6 +192,7 @@ cli.command("build <change-name>", "构建阶段").action(
|
||||
|
||||
cli.command("archive <change-name>", "归档阶段").action(
|
||||
async (changeName: string) => {
|
||||
validateChangeName(changeName);
|
||||
const root = requireProjectRoot();
|
||||
const changeDir = getChangeDir(root, changeName);
|
||||
if (!existsSync(changeDir)) {
|
||||
|
||||
Reference in New Issue
Block a user