grf-cli 1.0.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 (68) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +503 -0
  3. package/README.zh-CN.md +503 -0
  4. package/dist/cli.d.ts +3 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +74 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/add.d.ts +7 -0
  9. package/dist/commands/add.d.ts.map +1 -0
  10. package/dist/commands/add.js +92 -0
  11. package/dist/commands/add.js.map +1 -0
  12. package/dist/commands/clean.d.ts +7 -0
  13. package/dist/commands/clean.d.ts.map +1 -0
  14. package/dist/commands/clean.js +171 -0
  15. package/dist/commands/clean.js.map +1 -0
  16. package/dist/commands/config.d.ts +7 -0
  17. package/dist/commands/config.d.ts.map +1 -0
  18. package/dist/commands/config.js +170 -0
  19. package/dist/commands/config.js.map +1 -0
  20. package/dist/commands/list.d.ts +7 -0
  21. package/dist/commands/list.d.ts.map +1 -0
  22. package/dist/commands/list.js +149 -0
  23. package/dist/commands/list.js.map +1 -0
  24. package/dist/commands/load.d.ts +8 -0
  25. package/dist/commands/load.d.ts.map +1 -0
  26. package/dist/commands/load.js +239 -0
  27. package/dist/commands/load.js.map +1 -0
  28. package/dist/commands/unload.d.ts +7 -0
  29. package/dist/commands/unload.d.ts.map +1 -0
  30. package/dist/commands/unload.js +738 -0
  31. package/dist/commands/unload.js.map +1 -0
  32. package/dist/commands/update.d.ts +7 -0
  33. package/dist/commands/update.d.ts.map +1 -0
  34. package/dist/commands/update.js +471 -0
  35. package/dist/commands/update.js.map +1 -0
  36. package/dist/commands/use.d.ts +8 -0
  37. package/dist/commands/use.d.ts.map +1 -0
  38. package/dist/commands/use.js +224 -0
  39. package/dist/commands/use.js.map +1 -0
  40. package/dist/core/config.d.ts +55 -0
  41. package/dist/core/config.d.ts.map +1 -0
  42. package/dist/core/config.js +179 -0
  43. package/dist/core/config.js.map +1 -0
  44. package/dist/core/filesystem.d.ts +74 -0
  45. package/dist/core/filesystem.d.ts.map +1 -0
  46. package/dist/core/filesystem.js +300 -0
  47. package/dist/core/filesystem.js.map +1 -0
  48. package/dist/core/git.d.ts +75 -0
  49. package/dist/core/git.d.ts.map +1 -0
  50. package/dist/core/git.js +169 -0
  51. package/dist/core/git.js.map +1 -0
  52. package/dist/core/loading.d.ts +85 -0
  53. package/dist/core/loading.d.ts.map +1 -0
  54. package/dist/core/loading.js +224 -0
  55. package/dist/core/loading.js.map +1 -0
  56. package/dist/core/repository.d.ts +120 -0
  57. package/dist/core/repository.d.ts.map +1 -0
  58. package/dist/core/repository.js +374 -0
  59. package/dist/core/repository.js.map +1 -0
  60. package/dist/core/sync.d.ts +72 -0
  61. package/dist/core/sync.d.ts.map +1 -0
  62. package/dist/core/sync.js +226 -0
  63. package/dist/core/sync.js.map +1 -0
  64. package/dist/types/index.d.ts +135 -0
  65. package/dist/types/index.d.ts.map +1 -0
  66. package/dist/types/index.js +63 -0
  67. package/dist/types/index.js.map +1 -0
  68. package/package.json +59 -0
@@ -0,0 +1,7 @@
1
+ /**
2
+ * clean 命令
3
+ * 清理不需要的缓存仓库
4
+ */
5
+ import { Command } from "commander";
6
+ export declare const cleanCommand: Command;
7
+ //# sourceMappingURL=clean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BpC,eAAO,MAAM,YAAY,SAuItB,CAAC"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ /**
3
+ * clean 命令
4
+ * 清理不需要的缓存仓库
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.cleanCommand = void 0;
44
+ const commander_1 = require("commander");
45
+ const chalk_1 = __importDefault(require("chalk"));
46
+ const ora_1 = __importDefault(require("ora"));
47
+ const readline = __importStar(require("readline"));
48
+ const repository = __importStar(require("../core/repository.js"));
49
+ const index_js_1 = require("../types/index.js");
50
+ /**
51
+ * 确认提示
52
+ * @param message 提示消息
53
+ * @returns 用户是否确认
54
+ */
55
+ async function confirm(message) {
56
+ const rl = readline.createInterface({
57
+ input: process.stdin,
58
+ output: process.stdout,
59
+ });
60
+ return new Promise((resolve) => {
61
+ rl.question(`${message} (y/N) `, (answer) => {
62
+ rl.close();
63
+ resolve(answer.toLowerCase() === "y" || answer.toLowerCase() === "yes");
64
+ });
65
+ });
66
+ }
67
+ exports.cleanCommand = new commander_1.Command("clean")
68
+ .description("Clean cached repositories")
69
+ .argument("[name]", "Repository name to remove")
70
+ .option("--all", "Remove all cached repositories")
71
+ .option("-f, --force", "Skip confirmation")
72
+ .action(async (name, options) => {
73
+ try {
74
+ // 获取所有仓库列表
75
+ const repos = await repository.list();
76
+ // 如果没有仓库可清理
77
+ if (repos.length === 0) {
78
+ console.log(chalk_1.default.yellow("No repositories to clean."));
79
+ console.log();
80
+ console.log(`Use '${chalk_1.default.cyan("grf add <url>")}' to add a repository first.`);
81
+ return;
82
+ }
83
+ // 情况 1: 指定了 --all,删除所有仓库
84
+ if (options.all) {
85
+ // 显示将要删除的仓库列表
86
+ if (!options.force) {
87
+ console.log(`This will remove all ${chalk_1.default.bold(repos.length)} cached ${repos.length === 1 ? "repository" : "repositories"}:`);
88
+ for (const repo of repos) {
89
+ console.log(` - ${repo.name}`);
90
+ }
91
+ console.log();
92
+ const confirmed = await confirm("Are you sure?");
93
+ if (!confirmed) {
94
+ console.log(chalk_1.default.yellow("Operation cancelled."));
95
+ return;
96
+ }
97
+ }
98
+ // 删除所有仓库
99
+ const spinner = (0, ora_1.default)("Removing repositories...").start();
100
+ let removedCount = 0;
101
+ const errors = [];
102
+ for (const repo of repos) {
103
+ try {
104
+ await repository.remove(repo.name);
105
+ removedCount++;
106
+ }
107
+ catch (error) {
108
+ if (error instanceof Error) {
109
+ errors.push(`${repo.name}: ${error.message}`);
110
+ }
111
+ }
112
+ }
113
+ if (errors.length > 0) {
114
+ spinner.warn(`Removed ${removedCount} of ${repos.length} repositories.`);
115
+ console.log(chalk_1.default.yellow("Some repositories could not be removed:"));
116
+ for (const err of errors) {
117
+ console.log(chalk_1.default.red(` - ${err}`));
118
+ }
119
+ }
120
+ else {
121
+ spinner.succeed("All repositories removed!");
122
+ }
123
+ return;
124
+ }
125
+ // 情况 2: 指定了仓库名称,删除指定仓库
126
+ if (name) {
127
+ // 检查仓库是否存在
128
+ const repoInfo = await repository.get(name);
129
+ if (!repoInfo) {
130
+ console.error(chalk_1.default.red(`${chalk_1.default.bold("✗")} Repository not found: ${name}`));
131
+ console.log();
132
+ console.log(`Use '${chalk_1.default.cyan("grf list")}' to see all cached repositories.`);
133
+ process.exit(1);
134
+ }
135
+ // 确认删除
136
+ if (!options.force) {
137
+ const confirmed = await confirm(`Remove repository '${chalk_1.default.cyan(repoInfo.name)}'?`);
138
+ if (!confirmed) {
139
+ console.log(chalk_1.default.yellow("Operation cancelled."));
140
+ return;
141
+ }
142
+ }
143
+ // 删除仓库
144
+ const spinner = (0, ora_1.default)("Removing repository...").start();
145
+ await repository.remove(repoInfo.name);
146
+ spinner.succeed("Repository removed successfully!");
147
+ return;
148
+ }
149
+ // 情况 3: 没有指定名称也没有 --all,显示使用说明
150
+ console.log(chalk_1.default.yellow("No repository name specified."));
151
+ console.log();
152
+ console.log("Usage:");
153
+ console.log(` ${chalk_1.default.cyan("grf clean <name>")} Remove a specific repository`);
154
+ console.log(` ${chalk_1.default.cyan("grf clean --all")} Remove all repositories`);
155
+ console.log();
156
+ console.log(`Use '${chalk_1.default.cyan("grf list")}' to see all cached repositories.`);
157
+ }
158
+ catch (error) {
159
+ if (error instanceof index_js_1.GrfError) {
160
+ console.error(chalk_1.default.red(`${chalk_1.default.bold("✗")} ${error.message}`));
161
+ }
162
+ else if (error instanceof Error) {
163
+ console.error(chalk_1.default.red(`${chalk_1.default.bold("✗")} ${error.message}`));
164
+ }
165
+ else {
166
+ console.error(chalk_1.default.red(`${chalk_1.default.bold("✗")} An unknown error occurred`));
167
+ }
168
+ process.exit(1);
169
+ }
170
+ });
171
+ //# sourceMappingURL=clean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * config 命令
3
+ * 管理全局配置
4
+ */
5
+ import { Command } from "commander";
6
+ export declare const configCommand: Command;
7
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoHpC,eAAO,MAAM,aAAa,SA0EvB,CAAC"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ /**
3
+ * config 命令
4
+ * 管理全局配置
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.configCommand = void 0;
11
+ const commander_1 = require("commander");
12
+ const chalk_1 = __importDefault(require("chalk"));
13
+ const os_1 = __importDefault(require("os"));
14
+ const config_js_1 = require("../core/config.js");
15
+ /** 有效的配置项列表 */
16
+ const validKeys = ["defaultBranch", "shallowClone", "shallowDepth"];
17
+ /**
18
+ * 检查是否为有效的配置项
19
+ * @param key 配置项名称
20
+ * @returns 是否有效
21
+ */
22
+ function isValidKey(key) {
23
+ return validKeys.includes(key);
24
+ }
25
+ /**
26
+ * 解析配置值,根据配置项类型进行转换
27
+ * @param key 配置项名称
28
+ * @param value 配置值字符串
29
+ * @returns 转换后的值
30
+ */
31
+ function parseValue(key, value) {
32
+ // shallowClone 应该是布尔值
33
+ if (key === "shallowClone") {
34
+ if (value === "true" || value === "1") {
35
+ return true;
36
+ }
37
+ if (value === "false" || value === "0") {
38
+ return false;
39
+ }
40
+ throw new Error(`Invalid value for ${key}: expected 'true' or 'false'`);
41
+ }
42
+ // shallowDepth 应该是数字
43
+ if (key === "shallowDepth") {
44
+ const num = parseInt(value, 10);
45
+ if (isNaN(num) || num < 1) {
46
+ throw new Error(`Invalid value for ${key}: expected a positive number`);
47
+ }
48
+ return num;
49
+ }
50
+ // 其他都是字符串
51
+ return value;
52
+ }
53
+ /**
54
+ * 格式化配置值用于显示
55
+ * @param value 配置值
56
+ * @returns 格式化后的字符串
57
+ */
58
+ function formatValue(value) {
59
+ if (value === undefined) {
60
+ return chalk_1.default.gray("(not set)");
61
+ }
62
+ if (typeof value === "boolean") {
63
+ return value ? chalk_1.default.green("true") : chalk_1.default.yellow("false");
64
+ }
65
+ if (typeof value === "number") {
66
+ return chalk_1.default.cyan(String(value));
67
+ }
68
+ return chalk_1.default.cyan(value);
69
+ }
70
+ /**
71
+ * 将路径中的 home 目录替换为 ~
72
+ * @param filePath 文件路径
73
+ * @returns 替换后的路径
74
+ */
75
+ function shortenPath(filePath) {
76
+ const home = os_1.default.homedir();
77
+ if (filePath.startsWith(home)) {
78
+ return "~" + filePath.slice(home.length);
79
+ }
80
+ return filePath;
81
+ }
82
+ /**
83
+ * 显示所有配置
84
+ * @param config 配置对象
85
+ */
86
+ function showAllConfig(config) {
87
+ console.log(chalk_1.default.bold("Configuration:"));
88
+ console.log();
89
+ for (const key of validKeys) {
90
+ const value = config[key];
91
+ console.log(` ${chalk_1.default.white(key + ":")} ${formatValue(value)}`);
92
+ }
93
+ console.log();
94
+ console.log(chalk_1.default.gray(`Config file: ${shortenPath((0, config_js_1.getConfigPath)())}`));
95
+ }
96
+ /**
97
+ * 显示单个配置项的值
98
+ * @param config 配置对象
99
+ * @param key 配置项名称
100
+ */
101
+ function showConfigValue(config, key) {
102
+ const value = config[key];
103
+ if (value === undefined) {
104
+ console.log(chalk_1.default.gray("(not set)"));
105
+ }
106
+ else {
107
+ console.log(String(value));
108
+ }
109
+ }
110
+ exports.configCommand = new commander_1.Command("config")
111
+ .description("Manage global configuration")
112
+ .argument("[key]", "Configuration key")
113
+ .argument("[value]", "Configuration value")
114
+ .option("--list", "Show all configuration")
115
+ .option("--path", "Show configuration file path")
116
+ .action(async (key, value, options) => {
117
+ try {
118
+ // --path: 显示配置文件路径
119
+ if (options.path) {
120
+ console.log(shortenPath((0, config_js_1.getConfigPath)()));
121
+ return;
122
+ }
123
+ const config = await (0, config_js_1.readGlobalConfig)();
124
+ // --list 或无参数: 显示所有配置
125
+ if (options.list || (!key && !value)) {
126
+ showAllConfig(config);
127
+ return;
128
+ }
129
+ // 验证配置项名称
130
+ if (!isValidKey(key)) {
131
+ console.error(chalk_1.default.red(`Unknown configuration key: ${key}`));
132
+ console.log();
133
+ console.log(`Valid keys: ${validKeys.join(", ")}`);
134
+ process.exit(1);
135
+ }
136
+ // 只有 key,没有 value: 显示配置项的值
137
+ if (value === undefined) {
138
+ showConfigValue(config, key);
139
+ return;
140
+ }
141
+ // 有 key 和 value: 设置配置项
142
+ try {
143
+ const parsedValue = parseValue(key, value);
144
+ // 更新配置
145
+ config[key] = parsedValue;
146
+ await (0, config_js_1.writeGlobalConfig)(config);
147
+ console.log(chalk_1.default.green("✓") +
148
+ ` Configuration updated: ${chalk_1.default.white(key)} = ${formatValue(parsedValue)}`);
149
+ }
150
+ catch (error) {
151
+ if (error instanceof Error) {
152
+ console.error(chalk_1.default.red(`${chalk_1.default.bold("✗")} ${error.message}`));
153
+ }
154
+ else {
155
+ console.error(chalk_1.default.red(`${chalk_1.default.bold("✗")} Failed to set configuration`));
156
+ }
157
+ process.exit(1);
158
+ }
159
+ }
160
+ catch (error) {
161
+ if (error instanceof Error) {
162
+ console.error(chalk_1.default.red(`${chalk_1.default.bold("✗")} ${error.message}`));
163
+ }
164
+ else {
165
+ console.error(chalk_1.default.red(`${chalk_1.default.bold("✗")} An unknown error occurred`));
166
+ }
167
+ process.exit(1);
168
+ }
169
+ });
170
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * list 命令
3
+ * 列出所有缓存的仓库
4
+ */
5
+ import { Command } from "commander";
6
+ export declare const listCommand: Command;
7
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkDpC,eAAO,MAAM,WAAW,SAwEpB,CAAC"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ /**
3
+ * list 命令
4
+ * 列出所有缓存的仓库
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.listCommand = void 0;
44
+ const commander_1 = require("commander");
45
+ const chalk_1 = __importDefault(require("chalk"));
46
+ const repository = __importStar(require("../core/repository.js"));
47
+ /**
48
+ * 截断长字符串
49
+ * @param str 原始字符串
50
+ * @param maxLength 最大长度
51
+ * @returns 截断后的字符串
52
+ */
53
+ function truncate(str, maxLength) {
54
+ if (str.length <= maxLength)
55
+ return str;
56
+ return str.slice(0, maxLength - 3) + "...";
57
+ }
58
+ /**
59
+ * 格式化日期
60
+ * @param isoDate ISO 格式日期字符串
61
+ * @returns 格式化后的日期字符串
62
+ */
63
+ function formatDate(isoDate) {
64
+ return new Date(isoDate).toLocaleDateString();
65
+ }
66
+ /**
67
+ * 截断 commit ID
68
+ * @param commitId 完整的 commit ID
69
+ * @returns 截断后的 commit ID(7 字符)
70
+ */
71
+ function shortCommit(commitId) {
72
+ return commitId.slice(0, 7);
73
+ }
74
+ /**
75
+ * 填充字符串到指定宽度
76
+ * @param str 原始字符串
77
+ * @param width 目标宽度
78
+ * @returns 填充后的字符串
79
+ */
80
+ function padEnd(str, width) {
81
+ if (str.length >= width)
82
+ return str;
83
+ return str + " ".repeat(width - str.length);
84
+ }
85
+ // 列宽定义
86
+ const COL_NAME = 40;
87
+ const COL_BRANCH = 15;
88
+ const COL_COMMIT = 10;
89
+ const COL_ADDED = 12;
90
+ exports.listCommand = new commander_1.Command("list")
91
+ .description("List all cached repositories")
92
+ .option("--json", "Output in JSON format")
93
+ .action(async (options) => {
94
+ try {
95
+ const repos = await repository.list();
96
+ // 空列表处理
97
+ if (repos.length === 0) {
98
+ if (options.json) {
99
+ console.log("[]");
100
+ }
101
+ else {
102
+ console.log(chalk_1.default.yellow("No repositories cached yet."));
103
+ console.log();
104
+ console.log(`Use '${chalk_1.default.cyan("grf add <url>")}' to add a repository.`);
105
+ }
106
+ return;
107
+ }
108
+ // JSON 格式输出
109
+ if (options.json) {
110
+ console.log(JSON.stringify(repos, null, 2));
111
+ return;
112
+ }
113
+ // 表格格式输出
114
+ console.log(chalk_1.default.bold("Cached repositories:"));
115
+ console.log();
116
+ // 表头
117
+ const header = " " +
118
+ padEnd("NAME", COL_NAME) +
119
+ padEnd("BRANCH", COL_BRANCH) +
120
+ padEnd("COMMIT", COL_COMMIT) +
121
+ padEnd("ADDED", COL_ADDED);
122
+ console.log(chalk_1.default.gray(header));
123
+ // 仓库列表
124
+ for (const repo of repos) {
125
+ const name = truncate(repo.name, COL_NAME - 2);
126
+ const branch = truncate(repo.branch ?? "-", COL_BRANCH - 2);
127
+ const commit = shortCommit(repo.commitId);
128
+ const added = formatDate(repo.addedAt);
129
+ const row = " " +
130
+ padEnd(name, COL_NAME) +
131
+ padEnd(branch, COL_BRANCH) +
132
+ padEnd(commit, COL_COMMIT) +
133
+ padEnd(added, COL_ADDED);
134
+ console.log(row);
135
+ }
136
+ console.log();
137
+ console.log(chalk_1.default.gray(`Total: ${repos.length} ${repos.length === 1 ? "repository" : "repositories"}`));
138
+ }
139
+ catch (error) {
140
+ if (error instanceof Error) {
141
+ console.error(chalk_1.default.red(`${chalk_1.default.bold("✗")} ${error.message}`));
142
+ }
143
+ else {
144
+ console.error(chalk_1.default.red(`${chalk_1.default.bold("✗")} An unknown error occurred`));
145
+ }
146
+ process.exit(1);
147
+ }
148
+ });
149
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yCAAoC;AACpC,kDAA0B;AAC1B,kEAAoD;AAEpD;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,GAAW,EAAE,SAAiB;IAC9C,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,GAAG,CAAC;IACxC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,OAAe;IACjC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,kBAAkB,EAAE,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,SAAS,MAAM,CAAC,GAAW,EAAE,KAAa;IACxC,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,GAAG,CAAC;IACpC,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,OAAO;AACP,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,SAAS,GAAG,EAAE,CAAC;AAER,QAAA,WAAW,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QAEtC,QAAQ;QACR,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CACT,QAAQ,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAC5D,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAED,YAAY;QACZ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,SAAS;QACT,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,KAAK;QACL,MAAM,MAAM,GACV,IAAI;YACJ,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;YACxB,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC;YAC5B,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC;YAC5B,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAEhC,OAAO;QACP,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEvC,MAAM,GAAG,GACP,IAAI;gBACJ,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC;gBACtB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;gBAC1B,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;gBAC1B,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CACR,UAAU,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,EAAE,CAC/E,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAC1D,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * load 命令
3
+ * 将缓存的仓库内容复制到当前工作目录
4
+ * 支持直接传入 git URL,会自动先 add 再 load
5
+ */
6
+ import { Command } from "commander";
7
+ export declare const loadCommand: Command;
8
+ //# sourceMappingURL=load.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/commands/load.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBpC,eAAO,MAAM,WAAW,SAkPrB,CAAC"}