template-syncer 1.0.3 → 1.1.0

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.
Files changed (54) hide show
  1. package/README.md +127 -57
  2. package/bin/syn.js +37 -83
  3. package/lib/index.d.ts +4 -116
  4. package/lib/index.d.ts.map +1 -1
  5. package/lib/index.js +14 -1045
  6. package/lib/index.js.map +1 -1
  7. package/lib/package.json +15 -12
  8. package/lib/syncer.d.ts +65 -0
  9. package/lib/syncer.d.ts.map +1 -0
  10. package/lib/syncer.js +413 -0
  11. package/lib/syncer.js.map +1 -0
  12. package/lib/types.d.ts +95 -32
  13. package/lib/types.d.ts.map +1 -1
  14. package/lib/ui/index.d.ts +4 -0
  15. package/lib/ui/index.d.ts.map +1 -0
  16. package/lib/ui/index.js +11 -0
  17. package/lib/ui/index.js.map +1 -0
  18. package/lib/ui/logger.d.ts +26 -0
  19. package/lib/ui/logger.d.ts.map +1 -0
  20. package/lib/ui/logger.js +60 -0
  21. package/lib/ui/logger.js.map +1 -0
  22. package/lib/ui/prompts.d.ts +48 -0
  23. package/lib/ui/prompts.d.ts.map +1 -0
  24. package/lib/ui/prompts.js +202 -0
  25. package/lib/ui/prompts.js.map +1 -0
  26. package/lib/ui/tree.d.ts +10 -0
  27. package/lib/ui/tree.d.ts.map +1 -0
  28. package/lib/ui/tree.js +130 -0
  29. package/lib/ui/tree.js.map +1 -0
  30. package/lib/utils/categorizer.d.ts +24 -0
  31. package/lib/utils/categorizer.d.ts.map +1 -0
  32. package/lib/utils/categorizer.js +201 -0
  33. package/lib/utils/categorizer.js.map +1 -0
  34. package/lib/utils/git.d.ts +36 -0
  35. package/lib/utils/git.d.ts.map +1 -0
  36. package/lib/utils/git.js +96 -0
  37. package/lib/utils/git.js.map +1 -0
  38. package/lib/utils/index.d.ts +6 -0
  39. package/lib/utils/index.d.ts.map +1 -0
  40. package/lib/utils/index.js +14 -0
  41. package/lib/utils/index.js.map +1 -0
  42. package/lib/utils/merger.d.ts +40 -0
  43. package/lib/utils/merger.d.ts.map +1 -0
  44. package/lib/utils/merger.js +223 -0
  45. package/lib/utils/merger.js.map +1 -0
  46. package/lib/utils/platform.d.ts +44 -0
  47. package/lib/utils/platform.d.ts.map +1 -0
  48. package/lib/utils/platform.js +169 -0
  49. package/lib/utils/platform.js.map +1 -0
  50. package/lib/utils/scanner.d.ts +40 -0
  51. package/lib/utils/scanner.d.ts.map +1 -0
  52. package/lib/utils/scanner.js +221 -0
  53. package/lib/utils/scanner.js.map +1 -0
  54. package/package.json +15 -12
package/lib/ui/tree.js ADDED
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatFileTree = formatFileTree;
4
+ exports.formatGroupedTree = formatGroupedTree;
5
+ /**
6
+ * 构建文件树
7
+ */
8
+ function buildTree(files) {
9
+ const root = {
10
+ name: '',
11
+ isFile: false,
12
+ children: new Map()
13
+ };
14
+ for (const file of files) {
15
+ const parts = file.path.replace(/\\/g, '/').split('/');
16
+ let current = root;
17
+ for (let i = 0; i < parts.length; i++) {
18
+ const part = parts[i];
19
+ const isLast = i === parts.length - 1;
20
+ if (!current.children.has(part)) {
21
+ current.children.set(part, {
22
+ name: part,
23
+ isFile: isLast,
24
+ file: isLast ? file : undefined,
25
+ children: new Map()
26
+ });
27
+ }
28
+ current = current.children.get(part);
29
+ }
30
+ }
31
+ return root;
32
+ }
33
+ /**
34
+ * 获取状态文本
35
+ */
36
+ function getStatusText(status) {
37
+ switch (status) {
38
+ case 'new': return '(新增)';
39
+ case 'modified': return '(修改)';
40
+ case 'deleted': return '(删除)';
41
+ default: return '';
42
+ }
43
+ }
44
+ /**
45
+ * 渲染树形结构
46
+ */
47
+ function renderTree(node, prefix = '', isLast = true, isRoot = true) {
48
+ const lines = [];
49
+ if (!isRoot) {
50
+ const connector = isLast ? '└── ' : '├── ';
51
+ if (node.isFile && node.file) {
52
+ const status = getStatusText(node.file.status);
53
+ const icon = node.file.status === 'deleted' ? '🗑️' : node.file.icon;
54
+ lines.push(`${prefix}${connector}${icon} ${node.name} ${status}`);
55
+ }
56
+ else {
57
+ lines.push(`${prefix}${connector}📁 ${node.name}/`);
58
+ }
59
+ }
60
+ const children = Array.from(node.children.values());
61
+ // 排序:目录在前,文件在后
62
+ children.sort((a, b) => {
63
+ if (a.isFile === b.isFile)
64
+ return a.name.localeCompare(b.name);
65
+ return a.isFile ? 1 : -1;
66
+ });
67
+ const newPrefix = isRoot ? '' : prefix + (isLast ? ' ' : '│ ');
68
+ children.forEach((child, index) => {
69
+ const childIsLast = index === children.length - 1;
70
+ lines.push(...renderTree(child, newPrefix, childIsLast, false));
71
+ });
72
+ return lines;
73
+ }
74
+ /**
75
+ * 生成文件树字符串
76
+ */
77
+ function formatFileTree(files) {
78
+ if (files.length === 0)
79
+ return '';
80
+ const tree = buildTree(files);
81
+ const lines = renderTree(tree);
82
+ return lines.join('\n');
83
+ }
84
+ /**
85
+ * 按分类分组并生成树
86
+ */
87
+ function formatGroupedTree(files) {
88
+ if (files.length === 0)
89
+ return '';
90
+ // 按分类分组
91
+ const groups = new Map();
92
+ for (const file of files) {
93
+ const list = groups.get(file.category) || [];
94
+ list.push(file);
95
+ groups.set(file.category, list);
96
+ }
97
+ const lines = [];
98
+ const categories = Array.from(groups.entries());
99
+ categories.forEach(([category, categoryFiles], catIndex) => {
100
+ const icon = categoryFiles[0].icon;
101
+ const newCount = categoryFiles.filter(f => f.status === 'new').length;
102
+ const modCount = categoryFiles.filter(f => f.status === 'modified').length;
103
+ const delCount = categoryFiles.filter(f => f.status === 'deleted').length;
104
+ // 分类标题
105
+ let stats = `${categoryFiles.length} 个文件`;
106
+ const parts = [];
107
+ if (newCount > 0)
108
+ parts.push(`新增: ${newCount}`);
109
+ if (modCount > 0)
110
+ parts.push(`修改: ${modCount}`);
111
+ if (delCount > 0)
112
+ parts.push(`删除: ${delCount}`);
113
+ if (parts.length > 0)
114
+ stats += `, ${parts.join(', ')}`;
115
+ lines.push(`${icon} ${category} (${stats})`);
116
+ // 构建该分类的文件树
117
+ const tree = buildTree(categoryFiles);
118
+ const treeLines = renderTree(tree);
119
+ // 添加缩进
120
+ treeLines.forEach(line => {
121
+ lines.push(` ${line}`);
122
+ });
123
+ // 分类之间添加空行
124
+ if (catIndex < categories.length - 1) {
125
+ lines.push('');
126
+ }
127
+ });
128
+ return lines.join('\n');
129
+ }
130
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/ui/tree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { CategoryRule } from '../types';
2
+ /**
3
+ * 文件分类器
4
+ */
5
+ export declare class Categorizer {
6
+ private rules;
7
+ constructor(customRules?: CategoryRule[]);
8
+ /**
9
+ * 获取文件分类
10
+ */
11
+ categorize(filePath: string): {
12
+ category: string;
13
+ icon: string;
14
+ };
15
+ /**
16
+ * 获取默认分类
17
+ */
18
+ private getDefaultCategory;
19
+ /**
20
+ * 添加自定义规则
21
+ */
22
+ addRule(rule: CategoryRule): void;
23
+ }
24
+ //# sourceMappingURL=categorizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"categorizer.d.ts","sourceRoot":"","sources":["../../src/utils/categorizer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,UAAU,CAAC;AA2IvD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAiB;gBAElB,WAAW,GAAE,YAAY,EAAO;IAM5C;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAahE;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;CAIlC"}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Categorizer = void 0;
37
+ const path = __importStar(require("path"));
38
+ const minimatch_1 = require("minimatch");
39
+ /**
40
+ * 默认分类规则 (按优先级排序)
41
+ */
42
+ const DEFAULT_RULES = [
43
+ // 包管理 - 锁文件
44
+ { match: '**/package-lock.json', category: '包管理', icon: '🔒', priority: 100 },
45
+ { match: '**/yarn.lock', category: '包管理', icon: '🧶', priority: 100 },
46
+ { match: '**/pnpm-lock.yaml', category: '包管理', icon: '📦', priority: 100 },
47
+ { match: '**/bun.lockb', category: '包管理', icon: '🥟', priority: 100 },
48
+ { match: '**/Cargo.lock', category: '包管理', icon: '🦀', priority: 100 },
49
+ { match: '**/go.sum', category: '包管理', icon: '🐹', priority: 100 },
50
+ { match: '**/Gemfile.lock', category: '包管理', icon: '💎', priority: 100 },
51
+ { match: '**/poetry.lock', category: '包管理', icon: '🐍', priority: 100 },
52
+ { match: '**/Pipfile.lock', category: '包管理', icon: '🐍', priority: 100 },
53
+ { match: '**/composer.lock', category: '包管理', icon: '🐘', priority: 100 },
54
+ // 项目配置
55
+ { match: '**/package.json', category: '项目配置', icon: '📦', priority: 90 },
56
+ { match: '**/Cargo.toml', category: '项目配置', icon: '🦀', priority: 90 },
57
+ { match: '**/go.mod', category: '项目配置', icon: '🐹', priority: 90 },
58
+ { match: '**/pyproject.toml', category: '项目配置', icon: '🐍', priority: 90 },
59
+ { match: '**/composer.json', category: '项目配置', icon: '🐘', priority: 90 },
60
+ // TypeScript/JavaScript 配置
61
+ { match: '**/tsconfig*.json', category: 'TypeScript', icon: '🔷', priority: 85 },
62
+ { match: '**/jsconfig.json', category: 'JavaScript', icon: '🟨', priority: 85 },
63
+ // 构建工具
64
+ { match: '**/vite.config.*', category: '构建配置', icon: '⚡', priority: 80 },
65
+ { match: '**/webpack.config.*', category: '构建配置', icon: '📦', priority: 80 },
66
+ { match: '**/rollup.config.*', category: '构建配置', icon: '🎯', priority: 80 },
67
+ { match: '**/esbuild.config.*', category: '构建配置', icon: '⚡', priority: 80 },
68
+ { match: '**/turbo.json', category: '构建配置', icon: '🚀', priority: 80 },
69
+ // 框架配置
70
+ { match: '**/nuxt.config.*', category: '框架配置', icon: '💚', priority: 80 },
71
+ { match: '**/next.config.*', category: '框架配置', icon: '⚫', priority: 80 },
72
+ { match: '**/astro.config.*', category: '框架配置', icon: '🚀', priority: 80 },
73
+ { match: '**/svelte.config.*', category: '框架配置', icon: '🔥', priority: 80 },
74
+ { match: '**/angular.json', category: '框架配置', icon: '🅰️', priority: 80 },
75
+ // 代码质量
76
+ { match: '**/.eslintrc*', category: '代码质量', icon: '🔍', priority: 75 },
77
+ { match: '**/eslint.config.*', category: '代码质量', icon: '🔍', priority: 75 },
78
+ { match: '**/.prettierrc*', category: '代码格式化', icon: '💄', priority: 75 },
79
+ { match: '**/prettier.config.*', category: '代码格式化', icon: '💄', priority: 75 },
80
+ { match: '**/.stylelintrc*', category: '样式检查', icon: '🎨', priority: 75 },
81
+ { match: '**/biome.json', category: '代码质量', icon: '🌿', priority: 75 },
82
+ // 测试配置
83
+ { match: '**/jest.config.*', category: '测试配置', icon: '🃏', priority: 75 },
84
+ { match: '**/vitest.config.*', category: '测试配置', icon: '🧪', priority: 75 },
85
+ { match: '**/cypress.config.*', category: '测试配置', icon: '🌀', priority: 75 },
86
+ { match: '**/playwright.config.*', category: '测试配置', icon: '🎭', priority: 75 },
87
+ // 样式配置
88
+ { match: '**/tailwind.config.*', category: '样式配置', icon: '🌊', priority: 75 },
89
+ { match: '**/unocss.config.*', category: '样式配置', icon: '🎨', priority: 75 },
90
+ { match: '**/postcss.config.*', category: '样式配置', icon: '📮', priority: 75 },
91
+ // 容器化
92
+ { match: '**/Dockerfile*', category: '容器化', icon: '🐳', priority: 70 },
93
+ { match: '**/.dockerignore', category: '容器化', icon: '🐳', priority: 70 },
94
+ { match: '**/docker-compose*.y*ml', category: '容器化', icon: '🐳', priority: 70 },
95
+ { match: '**/compose*.y*ml', category: '容器化', icon: '🐳', priority: 70 },
96
+ // CI/CD
97
+ { match: '**/.github/workflows/*.y*ml', category: 'CI/CD', icon: '🔄', priority: 70 },
98
+ { match: '**/.gitlab-ci.yml', category: 'CI/CD', icon: '🦊', priority: 70 },
99
+ { match: '**/Jenkinsfile', category: 'CI/CD', icon: '🔧', priority: 70 },
100
+ // Xcode/iOS
101
+ { match: '**/*.xcodeproj/**', category: 'Xcode 项目', icon: '🍎', priority: 65 },
102
+ { match: '**/*.xcworkspace/**', category: 'Xcode 工作区', icon: '🍎', priority: 65 },
103
+ { match: '**/*.xcassets/**', category: '资源文件', icon: '🎨', priority: 60 },
104
+ { match: '**/Info.plist', category: 'iOS 配置', icon: '🍎', priority: 60 },
105
+ { match: '**/*.storyboard', category: 'iOS UI', icon: '📱', priority: 55 },
106
+ { match: '**/*.xib', category: 'iOS UI', icon: '📱', priority: 55 },
107
+ // 版本控制
108
+ { match: '**/.gitignore', category: '版本控制', icon: '📋', priority: 65 },
109
+ { match: '**/.gitattributes', category: '版本控制', icon: '📋', priority: 65 },
110
+ // 编辑器配置
111
+ { match: '**/.editorconfig', category: '编辑器配置', icon: '✏️', priority: 65 },
112
+ { match: '**/.vscode/**', category: 'VS Code', icon: '💙', priority: 65 },
113
+ // 环境配置
114
+ { match: '**/.nvmrc', category: '环境配置', icon: '🔧', priority: 60 },
115
+ { match: '**/.node-version', category: '环境配置', icon: '🔧', priority: 60 },
116
+ { match: '**/.tool-versions', category: '环境配置', icon: '🔧', priority: 60 },
117
+ { match: '**/.env*', category: '环境配置', icon: '🌍', priority: 60 },
118
+ // 部署配置
119
+ { match: '**/vercel.json', category: '部署配置', icon: '▲', priority: 60 },
120
+ { match: '**/netlify.toml', category: '部署配置', icon: '🌐', priority: 60 },
121
+ { match: '**/fly.toml', category: '部署配置', icon: '🪁', priority: 60 },
122
+ // 文档
123
+ { match: '**/README*', category: '文档', icon: '📖', priority: 50 },
124
+ { match: '**/CHANGELOG*', category: '文档', icon: '📋', priority: 50 },
125
+ { match: '**/LICENSE*', category: '许可证', icon: '📄', priority: 50 },
126
+ { match: '**/CONTRIBUTING*', category: '文档', icon: '🤝', priority: 50 },
127
+ { match: '**/*.md', category: '文档', icon: '📝', priority: 40 },
128
+ // 按扩展名分类 (低优先级)
129
+ { match: '**/*.vue', category: 'Vue 组件', icon: '💚', priority: 30 },
130
+ { match: '**/*.tsx', category: 'React 组件', icon: '⚛️', priority: 30 },
131
+ { match: '**/*.jsx', category: 'React 组件', icon: '⚛️', priority: 30 },
132
+ { match: '**/*.svelte', category: 'Svelte 组件', icon: '🔥', priority: 30 },
133
+ { match: '**/*.ts', category: 'TypeScript', icon: '🔷', priority: 20 },
134
+ { match: '**/*.js', category: 'JavaScript', icon: '🟨', priority: 20 },
135
+ { match: '**/*.mjs', category: 'JavaScript', icon: '🟨', priority: 20 },
136
+ { match: '**/*.cjs', category: 'JavaScript', icon: '🟨', priority: 20 },
137
+ { match: '**/*.py', category: 'Python', icon: '🐍', priority: 20 },
138
+ { match: '**/*.go', category: 'Go', icon: '🐹', priority: 20 },
139
+ { match: '**/*.rs', category: 'Rust', icon: '🦀', priority: 20 },
140
+ { match: '**/*.java', category: 'Java', icon: '☕', priority: 20 },
141
+ { match: '**/*.rb', category: 'Ruby', icon: '💎', priority: 20 },
142
+ { match: '**/*.php', category: 'PHP', icon: '🐘', priority: 20 },
143
+ { match: '**/*.swift', category: 'Swift', icon: '🍎', priority: 20 },
144
+ { match: '**/*.m', category: 'Objective-C', icon: '🍎', priority: 20 },
145
+ { match: '**/*.mm', category: 'Objective-C++', icon: '🍎', priority: 20 },
146
+ { match: '**/*.h', category: 'Header', icon: '📋', priority: 20 },
147
+ { match: '**/*.css', category: '样式文件', icon: '🎨', priority: 20 },
148
+ { match: '**/*.scss', category: '样式文件', icon: '🎨', priority: 20 },
149
+ { match: '**/*.less', category: '样式文件', icon: '🎨', priority: 20 },
150
+ { match: '**/*.html', category: 'HTML', icon: '🌐', priority: 20 },
151
+ { match: '**/*.json', category: 'JSON', icon: '📊', priority: 10 },
152
+ { match: '**/*.y*ml', category: 'YAML', icon: '📄', priority: 10 },
153
+ { match: '**/*.toml', category: 'TOML', icon: '📄', priority: 10 },
154
+ { match: '**/*.xml', category: 'XML', icon: '📄', priority: 10 },
155
+ { match: '**/*.sh', category: 'Shell 脚本', icon: '🐚', priority: 10 },
156
+ { match: '**/*.bat', category: 'Windows 脚本', icon: '🪟', priority: 10 },
157
+ { match: '**/*.ps1', category: 'PowerShell', icon: '💙', priority: 10 },
158
+ ];
159
+ /**
160
+ * 文件分类器
161
+ */
162
+ class Categorizer {
163
+ constructor(customRules = []) {
164
+ // 合并规则并按优先级排序
165
+ this.rules = [...customRules, ...DEFAULT_RULES]
166
+ .sort((a, b) => (b.priority || 0) - (a.priority || 0));
167
+ }
168
+ /**
169
+ * 获取文件分类
170
+ */
171
+ categorize(filePath) {
172
+ const normalizedPath = filePath.replace(/\\/g, '/');
173
+ for (const rule of this.rules) {
174
+ if ((0, minimatch_1.minimatch)(normalizedPath, rule.match, { dot: true })) {
175
+ return { category: rule.category, icon: rule.icon };
176
+ }
177
+ }
178
+ // 默认分类
179
+ return this.getDefaultCategory(filePath);
180
+ }
181
+ /**
182
+ * 获取默认分类
183
+ */
184
+ getDefaultCategory(filePath) {
185
+ const fileName = path.basename(filePath);
186
+ // 隐藏文件
187
+ if (fileName.startsWith('.')) {
188
+ return { category: '配置文件', icon: '⚙️' };
189
+ }
190
+ return { category: '其他文件', icon: '📄' };
191
+ }
192
+ /**
193
+ * 添加自定义规则
194
+ */
195
+ addRule(rule) {
196
+ this.rules.unshift(rule);
197
+ this.rules.sort((a, b) => (b.priority || 0) - (a.priority || 0));
198
+ }
199
+ }
200
+ exports.Categorizer = Categorizer;
201
+ //# sourceMappingURL=categorizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"categorizer.js","sourceRoot":"","sources":["../../src/utils/categorizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Git 操作工具
3
+ */
4
+ export declare class Git {
5
+ private verbose;
6
+ constructor(verbose?: boolean);
7
+ /**
8
+ * 执行 Git 命令
9
+ */
10
+ private exec;
11
+ /**
12
+ * 测试仓库连接
13
+ */
14
+ testConnection(repo: string): boolean;
15
+ /**
16
+ * 克隆仓库
17
+ */
18
+ clone(repo: string, dest: string): void;
19
+ /**
20
+ * 获取所有分支
21
+ */
22
+ getBranches(cwd: string): string[];
23
+ /**
24
+ * 切换分支
25
+ */
26
+ checkout(branch: string, cwd: string): void;
27
+ /**
28
+ * 创建备份 (stash)
29
+ */
30
+ backup(message?: string): boolean;
31
+ /**
32
+ * 删除 .git 目录
33
+ */
34
+ removeGitDir(dir: string): void;
35
+ }
36
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,GAAG;IACd,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,UAAQ;IAI3B;;OAEG;IACH,OAAO,CAAC,IAAI;IAeZ;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IASrC;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKvC;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAclC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAI3C;;OAEG;IACH,MAAM,CAAC,OAAO,SAAyB,GAAG,OAAO;IAWjD;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAIhC"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Git = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const platform_1 = require("./platform");
6
+ /**
7
+ * Git 操作工具
8
+ */
9
+ class Git {
10
+ constructor(verbose = false) {
11
+ this.verbose = verbose;
12
+ }
13
+ /**
14
+ * 执行 Git 命令
15
+ */
16
+ exec(cmd, cwd) {
17
+ try {
18
+ return (0, child_process_1.execSync)(cmd, {
19
+ cwd,
20
+ encoding: 'utf8',
21
+ stdio: this.verbose ? 'inherit' : 'pipe'
22
+ });
23
+ }
24
+ catch (error) {
25
+ if (this.verbose && error instanceof Error) {
26
+ console.error(`Git 命令失败: ${error.message}`);
27
+ }
28
+ throw error;
29
+ }
30
+ }
31
+ /**
32
+ * 测试仓库连接
33
+ */
34
+ testConnection(repo) {
35
+ try {
36
+ (0, child_process_1.execSync)(`git ls-remote --heads "${repo}"`, { stdio: 'ignore' });
37
+ return true;
38
+ }
39
+ catch {
40
+ return false;
41
+ }
42
+ }
43
+ /**
44
+ * 克隆仓库
45
+ */
46
+ clone(repo, dest) {
47
+ platform_1.platform.removeDir(dest);
48
+ this.exec(`git clone "${repo}" "${dest}"`);
49
+ }
50
+ /**
51
+ * 获取所有分支
52
+ */
53
+ getBranches(cwd) {
54
+ try {
55
+ const output = (0, child_process_1.execSync)('git branch -r', { cwd, encoding: 'utf8' });
56
+ return output
57
+ .split('\n')
58
+ .map(line => line.trim())
59
+ .filter(line => line && !line.includes('HEAD'))
60
+ .map(line => line.replace('origin/', ''))
61
+ .filter(Boolean);
62
+ }
63
+ catch {
64
+ return [];
65
+ }
66
+ }
67
+ /**
68
+ * 切换分支
69
+ */
70
+ checkout(branch, cwd) {
71
+ this.exec(`git checkout ${branch}`, cwd);
72
+ }
73
+ /**
74
+ * 创建备份 (stash)
75
+ */
76
+ backup(message = 'Template sync backup') {
77
+ try {
78
+ (0, child_process_1.execSync)(`git add . && git stash push -m "${message}"`, {
79
+ stdio: this.verbose ? 'inherit' : 'ignore'
80
+ });
81
+ return true;
82
+ }
83
+ catch {
84
+ return false;
85
+ }
86
+ }
87
+ /**
88
+ * 删除 .git 目录
89
+ */
90
+ removeGitDir(dir) {
91
+ const gitDir = require('path').join(dir, '.git');
92
+ platform_1.platform.removeDir(gitDir);
93
+ }
94
+ }
95
+ exports.Git = Git;
96
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":";;;AAAA,iDAAyC;AACzC,yCAAsC;AAEtC;;GAEG;AACH,MAAa,GAAG;IAGd,YAAY,OAAO,GAAG,KAAK;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,IAAI,CAAC,GAAW,EAAE,GAAY;QACpC,IAAI,CAAC;YACH,OAAO,IAAA,wBAAQ,EAAC,GAAG,EAAE;gBACnB,GAAG;gBACH,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;aACzC,CAAW,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3C,OAAO,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,0BAA0B,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAY,EAAE,IAAY;QAC9B,mBAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,GAAW;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,eAAe,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACpE,OAAO,MAAM;iBACV,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;iBAC9C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;iBACxC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,MAAc,EAAE,GAAW;QAClC,IAAI,CAAC,IAAI,CAAC,gBAAgB,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,GAAG,sBAAsB;QACrC,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,mCAAmC,OAAO,GAAG,EAAE;gBACtD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;aAC3C,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,GAAW;QACtB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACjD,mBAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CACF;AA1FD,kBA0FC"}
@@ -0,0 +1,6 @@
1
+ export { platform } from './platform';
2
+ export { Categorizer } from './categorizer';
3
+ export { Merger } from './merger';
4
+ export { Git } from './git';
5
+ export { Scanner } from './scanner';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Scanner = exports.Git = exports.Merger = exports.Categorizer = exports.platform = void 0;
4
+ var platform_1 = require("./platform");
5
+ Object.defineProperty(exports, "platform", { enumerable: true, get: function () { return platform_1.platform; } });
6
+ var categorizer_1 = require("./categorizer");
7
+ Object.defineProperty(exports, "Categorizer", { enumerable: true, get: function () { return categorizer_1.Categorizer; } });
8
+ var merger_1 = require("./merger");
9
+ Object.defineProperty(exports, "Merger", { enumerable: true, get: function () { return merger_1.Merger; } });
10
+ var git_1 = require("./git");
11
+ Object.defineProperty(exports, "Git", { enumerable: true, get: function () { return git_1.Git; } });
12
+ var scanner_1 = require("./scanner");
13
+ Object.defineProperty(exports, "Scanner", { enumerable: true, get: function () { return scanner_1.Scanner; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,6BAA4B;AAAnB,0FAAA,GAAG,OAAA;AACZ,qCAAoC;AAA3B,kGAAA,OAAO,OAAA"}
@@ -0,0 +1,40 @@
1
+ import type { MergeStrategy } from '../types';
2
+ /**
3
+ * 文件合并器
4
+ */
5
+ export declare class Merger {
6
+ private strategies;
7
+ constructor(customStrategies?: Record<string, MergeStrategy>);
8
+ /**
9
+ * 获取文件的合并策略
10
+ */
11
+ getStrategy(filePath: string): MergeStrategy;
12
+ /**
13
+ * 合并文件
14
+ */
15
+ merge(templatePath: string, currentPath: string, targetPath: string): {
16
+ success: boolean;
17
+ message: string;
18
+ };
19
+ /**
20
+ * 智能合并
21
+ */
22
+ private smartMerge;
23
+ /**
24
+ * 合并 package.json
25
+ */
26
+ private mergePackageJson;
27
+ /**
28
+ * 合并普通 JSON 文件
29
+ */
30
+ private mergeJson;
31
+ /**
32
+ * 深度合并对象
33
+ */
34
+ private deepMerge;
35
+ /**
36
+ * 设置合并策略
37
+ */
38
+ setStrategy(pattern: string, strategy: MergeStrategy): void;
39
+ }
40
+ //# sourceMappingURL=merger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merger.d.ts","sourceRoot":"","sources":["../../src/utils/merger.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,UAAU,CAAgC;gBAEtC,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAM;IAUhE;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa;IAK5C;;OAEG;IACH,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAkB3G;;OAEG;IACH,OAAO,CAAC,UAAU;IA0BlB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqFxB;;OAEG;IACH,OAAO,CAAC,SAAS;IAwBjB;;OAEG;IACH,OAAO,CAAC,SAAS;IA2BjB;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;CAG5D"}