@hyperdoc/cli 0.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.
- package/dist/commands/clean-archived.d.ts +3 -0
- package/dist/commands/clean-archived.d.ts.map +1 -0
- package/dist/commands/clean-archived.js +44 -0
- package/dist/commands/clean-archived.js.map +1 -0
- package/dist/commands/create-instance.d.ts +3 -0
- package/dist/commands/create-instance.d.ts.map +1 -0
- package/dist/commands/create-instance.js +150 -0
- package/dist/commands/create-instance.js.map +1 -0
- package/dist/commands/read-config.d.ts +3 -0
- package/dist/commands/read-config.d.ts.map +1 -0
- package/dist/commands/read-config.js +27 -0
- package/dist/commands/read-config.js.map +1 -0
- package/dist/commands/read-projects.d.ts +3 -0
- package/dist/commands/read-projects.d.ts.map +1 -0
- package/dist/commands/read-projects.js +27 -0
- package/dist/commands/read-projects.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean-archived.d.ts","sourceRoot":"","sources":["../../src/commands/clean-archived.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,oBAAoB,SA4C7B,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.cleanArchivedCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const hyperdoc_config_1 = require("@maplab-oss/hyperdoc-config");
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
exports.cleanArchivedCommand = new commander_1.Command("clean-archived")
|
|
11
|
+
.description("Delete all archived agent chats from agents.json")
|
|
12
|
+
.option("--dry-run", "Show what would be deleted without modifying the file")
|
|
13
|
+
.action((opts) => {
|
|
14
|
+
try {
|
|
15
|
+
const agentsPath = (0, hyperdoc_config_1.getAgentsPath)();
|
|
16
|
+
if (!fs_1.default.existsSync(agentsPath)) {
|
|
17
|
+
console.log("No agents.json found at", agentsPath);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const raw = fs_1.default.readFileSync(agentsPath, "utf-8");
|
|
21
|
+
const agents = JSON.parse(raw);
|
|
22
|
+
const archived = agents.filter((a) => a.archived);
|
|
23
|
+
const kept = agents.filter((a) => !a.archived);
|
|
24
|
+
if (archived.length === 0) {
|
|
25
|
+
console.log("No archived chats found.");
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
console.log(`Found ${archived.length} archived chat(s):`);
|
|
29
|
+
for (const a of archived) {
|
|
30
|
+
console.log(` - ${a.id} (${a.name ?? "unnamed"})`);
|
|
31
|
+
}
|
|
32
|
+
if (opts.dryRun) {
|
|
33
|
+
console.log("\nDry run — no changes made.");
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
fs_1.default.writeFileSync(agentsPath, JSON.stringify(kept, null, 2), "utf-8");
|
|
37
|
+
console.log(`\nDeleted ${archived.length} archived chat(s). ${kept.length} remaining.`);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error("Error cleaning archived chats:", error);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=clean-archived.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean-archived.js","sourceRoot":"","sources":["../../src/commands/clean-archived.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,iEAA4D;AAC5D,4CAAoB;AAEP,QAAA,oBAAoB,GAAG,IAAI,mBAAO,CAAC,gBAAgB,CAAC;KAC9D,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,WAAW,EAAE,uDAAuD,CAAC;KAC5E,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IACf,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAA,+BAAa,GAAE,CAAC;QAEnC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEjD,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAElB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAE/C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,MAAM,oBAAoB,CAAC,CAAC;QAE1D,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CACT,aAAa,QAAQ,CAAC,MAAM,sBAAsB,IAAI,CAAC,MAAM,aAAa,CAC3E,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-instance.d.ts","sourceRoot":"","sources":["../../src/commands/create-instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,eAAO,MAAM,qBAAqB,SA+I9B,CAAC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createInstanceCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const hyperdoc_config_1 = require("@maplab-oss/hyperdoc-config");
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const child_process_1 = require("child_process");
|
|
12
|
+
const crypto_1 = require("crypto");
|
|
13
|
+
function generateRandomId() {
|
|
14
|
+
return (0, crypto_1.randomBytes)(2).toString('hex');
|
|
15
|
+
}
|
|
16
|
+
function generateUUID() {
|
|
17
|
+
return (0, crypto_1.randomBytes)(16).toString('hex').replace(/(.{8})(.{4})(.{4})(.{4})(.{12})/, '$1-$2-$3-$4-$5');
|
|
18
|
+
}
|
|
19
|
+
exports.createInstanceCommand = new commander_1.Command("create-instance")
|
|
20
|
+
.description("Create a new instance of a project using git worktrees")
|
|
21
|
+
.requiredOption("--home <path>", "Hyperdoc home directory")
|
|
22
|
+
.requiredOption("--project <id>", "Project ID to create an instance of")
|
|
23
|
+
.action(async (options) => {
|
|
24
|
+
try {
|
|
25
|
+
const { home, project: projectId } = options;
|
|
26
|
+
// Read config from the specified home directory
|
|
27
|
+
const configPath = path_1.default.join(home, "config.json");
|
|
28
|
+
let config;
|
|
29
|
+
if (!fs_1.default.existsSync(configPath)) {
|
|
30
|
+
console.error(`Config file not found: ${configPath}`);
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const rawConfig = fs_1.default.readFileSync(configPath, "utf-8");
|
|
35
|
+
config = JSON.parse(rawConfig);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
console.error(`Failed to read config: ${error}`);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
// Check if codeDir is set
|
|
42
|
+
if (!config.codeDir) {
|
|
43
|
+
console.error("No code directory configured. Please set codeDir in your config.json");
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
// Read projects from the specified home directory
|
|
47
|
+
const projectsPath = path_1.default.join(home, "projects.json");
|
|
48
|
+
const projects = (0, hyperdoc_config_1.loadProjectsFromFile)(projectsPath);
|
|
49
|
+
// Find the project by ID
|
|
50
|
+
const project = projects.find(p => p.id === projectId);
|
|
51
|
+
if (!project) {
|
|
52
|
+
console.error(`Project not found: ${projectId}`);
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
// Create worktrees directory if it doesn't exist
|
|
56
|
+
const worktreesDir = path_1.default.join(config.codeDir, "worktrees");
|
|
57
|
+
if (!fs_1.default.existsSync(worktreesDir)) {
|
|
58
|
+
fs_1.default.mkdirSync(worktreesDir, { recursive: true });
|
|
59
|
+
}
|
|
60
|
+
// Generate random suffix for this instance
|
|
61
|
+
const randomSuffix = generateRandomId();
|
|
62
|
+
const instanceDirName = `${projectId}-${randomSuffix}`;
|
|
63
|
+
// Create worktrees for each rootDir that has a .git directory
|
|
64
|
+
const newRootDirs = [];
|
|
65
|
+
for (const rootDir of project.rootDirs) {
|
|
66
|
+
const gitDir = path_1.default.join(rootDir, ".git");
|
|
67
|
+
if (fs_1.default.existsSync(gitDir)) {
|
|
68
|
+
console.log(`Creating worktree for ${rootDir}...`);
|
|
69
|
+
// Create worktree path
|
|
70
|
+
const worktreePath = path_1.default.join(worktreesDir, `${instanceDirName}-${path_1.default.basename(rootDir)}`);
|
|
71
|
+
try {
|
|
72
|
+
// Create git worktree
|
|
73
|
+
(0, child_process_1.execSync)(`git worktree add "${worktreePath}"`, {
|
|
74
|
+
cwd: rootDir,
|
|
75
|
+
stdio: 'inherit'
|
|
76
|
+
});
|
|
77
|
+
newRootDirs.push(worktreePath);
|
|
78
|
+
console.log(`Created worktree: ${worktreePath}`);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
console.error(`Failed to create worktree for ${rootDir}: ${error}`);
|
|
82
|
+
// Clean up any partial worktrees that were created
|
|
83
|
+
for (const createdDir of newRootDirs) {
|
|
84
|
+
try {
|
|
85
|
+
const originalDir = project.rootDirs.find(dir => fs_1.default.existsSync(path_1.default.join(dir, ".git")));
|
|
86
|
+
if (originalDir) {
|
|
87
|
+
(0, child_process_1.execSync)(`git worktree remove "${createdDir}"`, {
|
|
88
|
+
cwd: originalDir,
|
|
89
|
+
stdio: 'inherit'
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch (cleanupError) {
|
|
94
|
+
console.error(`Failed to clean up ${createdDir}: ${cleanupError}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// For directories without .git, just copy the path (they might be shared resources)
|
|
102
|
+
newRootDirs.push(rootDir);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (newRootDirs.length === 0) {
|
|
106
|
+
console.error("No git repositories found in project root directories");
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
// Create new project instance
|
|
110
|
+
const newInstance = {
|
|
111
|
+
...project,
|
|
112
|
+
id: generateUUID(),
|
|
113
|
+
name: `${project.name} (Instance)`,
|
|
114
|
+
rootDirs: newRootDirs
|
|
115
|
+
};
|
|
116
|
+
// Update projects.json
|
|
117
|
+
const updatedProjects = [...projects, newInstance];
|
|
118
|
+
try {
|
|
119
|
+
fs_1.default.writeFileSync(projectsPath, JSON.stringify(updatedProjects, null, 2) + "\n", "utf-8");
|
|
120
|
+
console.log(`Created new project instance: ${newInstance.id}`);
|
|
121
|
+
console.log(`Root directories: ${newRootDirs.join(", ")}`);
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
console.error(`Failed to update projects.json: ${error}`);
|
|
125
|
+
// Clean up worktrees if we can't update the projects file
|
|
126
|
+
for (const worktreeDir of newRootDirs) {
|
|
127
|
+
if (worktreeDir.includes("worktrees")) {
|
|
128
|
+
try {
|
|
129
|
+
const originalDir = project.rootDirs.find(dir => fs_1.default.existsSync(path_1.default.join(dir, ".git")));
|
|
130
|
+
if (originalDir) {
|
|
131
|
+
(0, child_process_1.execSync)(`git worktree remove "${worktreeDir}"`, {
|
|
132
|
+
cwd: originalDir,
|
|
133
|
+
stdio: 'inherit'
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch (cleanupError) {
|
|
138
|
+
console.error(`Failed to clean up ${worktreeDir}: ${cleanupError}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
process.exit(1);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
console.error("Error creating project instance:", error);
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
//# sourceMappingURL=create-instance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-instance.js","sourceRoot":"","sources":["../../src/commands/create-instance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-config.d.ts","sourceRoot":"","sources":["../../src/commands/read-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,iBAAiB,SAiB1B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.readConfigCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const hyperdoc_config_1 = require("@maplab-oss/hyperdoc-config");
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
exports.readConfigCommand = new commander_1.Command("config")
|
|
11
|
+
.description("Print the raw config JSON")
|
|
12
|
+
.action(() => {
|
|
13
|
+
try {
|
|
14
|
+
const configPath = (0, hyperdoc_config_1.getConfigPath)();
|
|
15
|
+
if (!fs_1.default.existsSync(configPath)) {
|
|
16
|
+
console.log("{}");
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const rawConfig = fs_1.default.readFileSync(configPath, "utf-8");
|
|
20
|
+
console.log(rawConfig);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error("Error reading config:", error);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=read-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-config.js","sourceRoot":"","sources":["../../src/commands/read-config.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,iEAA4D;AAC5D,4CAAoB;AAEP,QAAA,iBAAiB,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;KACnD,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,GAAG,EAAE;IACX,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAA,+BAAa,GAAE,CAAC;QAEnC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-projects.d.ts","sourceRoot":"","sources":["../../src/commands/read-projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,mBAAmB,SAiB5B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.readProjectsCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const hyperdoc_config_1 = require("@maplab-oss/hyperdoc-config");
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
exports.readProjectsCommand = new commander_1.Command("projects")
|
|
11
|
+
.description("Print the raw projects JSON")
|
|
12
|
+
.action(() => {
|
|
13
|
+
try {
|
|
14
|
+
const projectsPath = (0, hyperdoc_config_1.getDefaultProjectsPath)();
|
|
15
|
+
if (!fs_1.default.existsSync(projectsPath)) {
|
|
16
|
+
console.log("[]");
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const rawProjects = fs_1.default.readFileSync(projectsPath, "utf-8");
|
|
20
|
+
console.log(rawProjects);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error("Error reading projects:", error);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=read-projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-projects.js","sourceRoot":"","sources":["../../src/commands/read-projects.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,iEAAqE;AACrE,4CAAoB;AAEP,QAAA,mBAAmB,GAAG,IAAI,mBAAO,CAAC,UAAU,CAAC;KACvD,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,GAAG,EAAE;IACX,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAA,wCAAsB,GAAE,CAAC;QAE9C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const read_config_1 = require("./commands/read-config");
|
|
9
|
+
const read_projects_1 = require("./commands/read-projects");
|
|
10
|
+
const clean_archived_1 = require("./commands/clean-archived");
|
|
11
|
+
const create_instance_1 = require("./commands/create-instance");
|
|
12
|
+
const fs_1 = __importDefault(require("fs"));
|
|
13
|
+
const path_1 = __importDefault(require("path"));
|
|
14
|
+
const packageJson = JSON.parse(fs_1.default.readFileSync(path_1.default.join(__dirname, "../package.json"), "utf8"));
|
|
15
|
+
const program = new commander_1.Command();
|
|
16
|
+
program
|
|
17
|
+
.name("hyperdoc")
|
|
18
|
+
.description("Hyperdoc CLI for managing projects and config")
|
|
19
|
+
.version(packageJson.version);
|
|
20
|
+
// Add subcommands
|
|
21
|
+
program.addCommand(read_config_1.readConfigCommand);
|
|
22
|
+
program.addCommand(read_projects_1.readProjectsCommand);
|
|
23
|
+
program.addCommand(clean_archived_1.cleanArchivedCommand);
|
|
24
|
+
program.addCommand(create_instance_1.createInstanceCommand);
|
|
25
|
+
program.parse();
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,wDAA2D;AAC3D,4DAA+D;AAC/D,8DAAiE;AACjE,gEAAmE;AACnE,4CAAoB;AACpB,gDAAwB;AAExB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CACjE,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,kBAAkB;AAClB,OAAO,CAAC,UAAU,CAAC,+BAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,mCAAmB,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,qCAAoB,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,uCAAqB,CAAC,CAAC;AAE1C,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hyperdoc/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Hyperdoc CLI for managing projects and config",
|
|
5
|
+
"type": "commonjs",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"hyperdoc": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
13
|
+
"publishConfig": {
|
|
14
|
+
"access": "public"
|
|
15
|
+
},
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=18.0.0"
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc",
|
|
21
|
+
"start": "node dist/index.js",
|
|
22
|
+
"dev": "tsx src/index.ts",
|
|
23
|
+
"typecheck": "tsc --noEmit"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"hyperdoc",
|
|
27
|
+
"cli",
|
|
28
|
+
"config"
|
|
29
|
+
],
|
|
30
|
+
"author": "",
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@maplab-oss/hyperdoc-config": "workspace:*",
|
|
34
|
+
"commander": "^14.0.0"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/node": "^20.0.0",
|
|
38
|
+
"tsx": "^4.0.0",
|
|
39
|
+
"typescript": "^5.0.0"
|
|
40
|
+
}
|
|
41
|
+
}
|