clawt 2.3.5 → 2.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +5 -0
- package/dist/postinstall.js +4 -10
- package/package.json +1 -1
- package/scripts/postinstall.ts +1 -12
- package/src/constants/messages.ts +3 -0
- package/src/utils/branch.ts +4 -0
package/dist/index.js
CHANGED
|
@@ -28,6 +28,8 @@ var MESSAGES = {
|
|
|
28
28
|
CLAUDE_NOT_INSTALLED: "Claude Code CLI \u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u5B89\u88C5\uFF1Anpm install -g @anthropic-ai/claude-code",
|
|
29
29
|
/** 分支已存在 */
|
|
30
30
|
BRANCH_EXISTS: (name) => `\u5206\u652F ${name} \u5DF2\u5B58\u5728\uFF0C\u65E0\u6CD5\u521B\u5EFA`,
|
|
31
|
+
/** 分支名清理后为空 */
|
|
32
|
+
BRANCH_NAME_EMPTY: (original) => `\u5206\u652F\u540D "${original}" \u4E2D\u4E0D\u5305\u542B\u5408\u6CD5\u5B57\u7B26\uFF0C\u65E0\u6CD5\u521B\u5EFA\u5206\u652F`,
|
|
31
33
|
/** 分支名被转换 */
|
|
32
34
|
BRANCH_SANITIZED: (original, sanitized) => `\u5206\u652F\u540D\u5DF2\u8F6C\u6362: ${original} \u2192 ${sanitized}`,
|
|
33
35
|
/** worktree 创建成功 */
|
|
@@ -438,6 +440,9 @@ function formatWorktreeStatus(status) {
|
|
|
438
440
|
// src/utils/branch.ts
|
|
439
441
|
function sanitizeBranchName(branchName) {
|
|
440
442
|
const sanitized = branchName.replace(INVALID_BRANCH_CHARS, "-").replace(/-{2,}/g, "-").replace(/^-|-$/g, "");
|
|
443
|
+
if (!sanitized) {
|
|
444
|
+
throw new ClawtError(MESSAGES.BRANCH_NAME_EMPTY(branchName));
|
|
445
|
+
}
|
|
441
446
|
if (sanitized !== branchName) {
|
|
442
447
|
logger.warn(MESSAGES.BRANCH_SANITIZED(branchName, sanitized));
|
|
443
448
|
printWarning(MESSAGES.BRANCH_SANITIZED(branchName, sanitized));
|
package/dist/postinstall.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
// scripts/postinstall.ts
|
|
2
2
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
3
|
-
import { join as join2 } from "path";
|
|
4
|
-
import { homedir as homedir2 } from "os";
|
|
5
3
|
|
|
6
4
|
// src/constants/paths.ts
|
|
7
5
|
import { homedir } from "os";
|
|
@@ -43,10 +41,6 @@ var DEFAULT_CONFIG = deriveDefaultConfig(CONFIG_DEFINITIONS);
|
|
|
43
41
|
var CONFIG_DESCRIPTIONS = deriveConfigDescriptions(CONFIG_DEFINITIONS);
|
|
44
42
|
|
|
45
43
|
// scripts/postinstall.ts
|
|
46
|
-
var CLAWT_HOME2 = join2(homedir2(), ".clawt");
|
|
47
|
-
var CONFIG_PATH2 = join2(CLAWT_HOME2, "config.json");
|
|
48
|
-
var LOGS_DIR2 = join2(CLAWT_HOME2, "logs");
|
|
49
|
-
var WORKTREES_DIR2 = join2(CLAWT_HOME2, "worktrees");
|
|
50
44
|
function ensureDirectory(dirPath) {
|
|
51
45
|
if (!existsSync(dirPath)) {
|
|
52
46
|
mkdirSync(dirPath, { recursive: true });
|
|
@@ -86,10 +80,10 @@ function syncConfig(configPath, defaultConfig) {
|
|
|
86
80
|
}
|
|
87
81
|
}
|
|
88
82
|
function init() {
|
|
89
|
-
ensureDirectory(
|
|
90
|
-
ensureDirectory(
|
|
91
|
-
ensureDirectory(
|
|
92
|
-
syncConfig(
|
|
83
|
+
ensureDirectory(CLAWT_HOME);
|
|
84
|
+
ensureDirectory(LOGS_DIR);
|
|
85
|
+
ensureDirectory(WORKTREES_DIR);
|
|
86
|
+
syncConfig(CONFIG_PATH, DEFAULT_CONFIG);
|
|
93
87
|
console.log("\u2713 clawt \u521D\u59CB\u5316\u5B8C\u6210");
|
|
94
88
|
}
|
|
95
89
|
init();
|
package/package.json
CHANGED
package/scripts/postinstall.ts
CHANGED
|
@@ -3,18 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
6
|
-
import {
|
|
7
|
-
import { homedir } from 'node:os';
|
|
8
|
-
import { DEFAULT_CONFIG } from '../src/constants/index.js';
|
|
9
|
-
|
|
10
|
-
/** clawt 主目录 */
|
|
11
|
-
const CLAWT_HOME = join(homedir(), '.clawt');
|
|
12
|
-
/** 配置文件路径 */
|
|
13
|
-
const CONFIG_PATH = join(CLAWT_HOME, 'config.json');
|
|
14
|
-
/** 日志目录 */
|
|
15
|
-
const LOGS_DIR = join(CLAWT_HOME, 'logs');
|
|
16
|
-
/** worktree 目录 */
|
|
17
|
-
const WORKTREES_DIR = join(CLAWT_HOME, 'worktrees');
|
|
6
|
+
import { DEFAULT_CONFIG, CLAWT_HOME, CONFIG_PATH, LOGS_DIR, WORKTREES_DIR } from '../src/constants/index.js';
|
|
18
7
|
|
|
19
8
|
/**
|
|
20
9
|
* 确保目录存在,不存在则递归创建
|
|
@@ -8,6 +8,9 @@ export const MESSAGES = {
|
|
|
8
8
|
CLAUDE_NOT_INSTALLED: 'Claude Code CLI 未安装,请先安装:npm install -g @anthropic-ai/claude-code',
|
|
9
9
|
/** 分支已存在 */
|
|
10
10
|
BRANCH_EXISTS: (name: string) => `分支 ${name} 已存在,无法创建`,
|
|
11
|
+
/** 分支名清理后为空 */
|
|
12
|
+
BRANCH_NAME_EMPTY: (original: string) =>
|
|
13
|
+
`分支名 "${original}" 中不包含合法字符,无法创建分支`,
|
|
11
14
|
/** 分支名被转换 */
|
|
12
15
|
BRANCH_SANITIZED: (original: string, sanitized: string) =>
|
|
13
16
|
`分支名已转换: ${original} → ${sanitized}`,
|
package/src/utils/branch.ts
CHANGED
|
@@ -15,6 +15,10 @@ export function sanitizeBranchName(branchName: string): string {
|
|
|
15
15
|
.replace(/-{2,}/g, '-')
|
|
16
16
|
.replace(/^-|-$/g, '');
|
|
17
17
|
|
|
18
|
+
if (!sanitized) {
|
|
19
|
+
throw new ClawtError(MESSAGES.BRANCH_NAME_EMPTY(branchName));
|
|
20
|
+
}
|
|
21
|
+
|
|
18
22
|
if (sanitized !== branchName) {
|
|
19
23
|
logger.warn(MESSAGES.BRANCH_SANITIZED(branchName, sanitized));
|
|
20
24
|
printWarning(MESSAGES.BRANCH_SANITIZED(branchName, sanitized));
|