obsidigen 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.
- package/LICENSE +22 -0
- package/README.md +521 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +115 -0
- package/dist/cli.js.map +1 -0
- package/dist/cloudflare/access.d.ts +31 -0
- package/dist/cloudflare/access.d.ts.map +1 -0
- package/dist/cloudflare/access.js +194 -0
- package/dist/cloudflare/access.js.map +1 -0
- package/dist/cloudflare/tunnel.d.ts +49 -0
- package/dist/cloudflare/tunnel.d.ts.map +1 -0
- package/dist/cloudflare/tunnel.js +333 -0
- package/dist/cloudflare/tunnel.js.map +1 -0
- package/dist/commands/access.d.ts +2 -0
- package/dist/commands/access.d.ts.map +1 -0
- package/dist/commands/access.js +162 -0
- package/dist/commands/access.js.map +1 -0
- package/dist/commands/config.d.ts +8 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +94 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/daemon.d.ts +5 -0
- package/dist/commands/daemon.d.ts.map +1 -0
- package/dist/commands/daemon.js +135 -0
- package/dist/commands/daemon.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +74 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/service.d.ts +2 -0
- package/dist/commands/service.d.ts.map +1 -0
- package/dist/commands/service.js +334 -0
- package/dist/commands/service.js.map +1 -0
- package/dist/commands/start.d.ts +9 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +185 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/tunnel.d.ts +7 -0
- package/dist/commands/tunnel.d.ts.map +1 -0
- package/dist/commands/tunnel.js +174 -0
- package/dist/commands/tunnel.js.map +1 -0
- package/dist/config/global.d.ts +16 -0
- package/dist/config/global.d.ts.map +1 -0
- package/dist/config/global.js +102 -0
- package/dist/config/global.js.map +1 -0
- package/dist/config/types.d.ts +45 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +3 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/vault.d.ts +12 -0
- package/dist/config/vault.d.ts.map +1 -0
- package/dist/config/vault.js +87 -0
- package/dist/config/vault.js.map +1 -0
- package/dist/server/index.d.ts +8 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +84 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/routes/graph.d.ts +11 -0
- package/dist/server/routes/graph.d.ts.map +1 -0
- package/dist/server/routes/graph.js +97 -0
- package/dist/server/routes/graph.js.map +1 -0
- package/dist/server/routes/preview.d.ts +11 -0
- package/dist/server/routes/preview.d.ts.map +1 -0
- package/dist/server/routes/preview.js +41 -0
- package/dist/server/routes/preview.js.map +1 -0
- package/dist/server/routes/search.d.ts +11 -0
- package/dist/server/routes/search.d.ts.map +1 -0
- package/dist/server/routes/search.js +38 -0
- package/dist/server/routes/search.js.map +1 -0
- package/dist/server/routes/static.d.ts +9 -0
- package/dist/server/routes/static.d.ts.map +1 -0
- package/dist/server/routes/static.js +45 -0
- package/dist/server/routes/static.js.map +1 -0
- package/dist/server/routes/tree.d.ts +18 -0
- package/dist/server/routes/tree.d.ts.map +1 -0
- package/dist/server/routes/tree.js +61 -0
- package/dist/server/routes/tree.js.map +1 -0
- package/dist/server/routes/wiki.d.ts +11 -0
- package/dist/server/routes/wiki.d.ts.map +1 -0
- package/dist/server/routes/wiki.js +102 -0
- package/dist/server/routes/wiki.js.map +1 -0
- package/dist/templates/page.d.ts +23 -0
- package/dist/templates/page.d.ts.map +1 -0
- package/dist/templates/page.js +1913 -0
- package/dist/templates/page.js.map +1 -0
- package/dist/utils/plist.d.ts +60 -0
- package/dist/utils/plist.d.ts.map +1 -0
- package/dist/utils/plist.js +185 -0
- package/dist/utils/plist.js.map +1 -0
- package/dist/utils/systemd.d.ts +75 -0
- package/dist/utils/systemd.d.ts.map +1 -0
- package/dist/utils/systemd.js +220 -0
- package/dist/utils/systemd.js.map +1 -0
- package/dist/vault/indexer.d.ts +92 -0
- package/dist/vault/indexer.d.ts.map +1 -0
- package/dist/vault/indexer.js +360 -0
- package/dist/vault/indexer.js.map +1 -0
- package/dist/vault/parser.d.ts +14 -0
- package/dist/vault/parser.d.ts.map +1 -0
- package/dist/vault/parser.js +206 -0
- package/dist/vault/parser.js.map +1 -0
- package/dist/vault/resolver.d.ts +27 -0
- package/dist/vault/resolver.d.ts.map +1 -0
- package/dist/vault/resolver.js +111 -0
- package/dist/vault/resolver.js.map +1 -0
- package/dist/vault/watcher.d.ts +28 -0
- package/dist/vault/watcher.d.ts.map +1 -0
- package/dist/vault/watcher.js +86 -0
- package/dist/vault/watcher.js.map +1 -0
- package/package.json +77 -0
- package/public/styles/.gitkeep +0 -0
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
// obsidigen service commands - cross-platform
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import { resolve, join } from 'path';
|
|
5
|
+
import { existsSync, mkdirSync } from 'fs';
|
|
6
|
+
import { homedir, platform } from 'os';
|
|
7
|
+
import { execSync } from 'child_process';
|
|
8
|
+
import { isInitialized, getVaultConfig } from '../config/vault.js';
|
|
9
|
+
import { getGlobalDir, registerVault, unregisterVault, getRegisteredVaults, } from '../config/global.js';
|
|
10
|
+
// macOS (launchd) support
|
|
11
|
+
import { generatePlist, plistExists, writePlist, removePlist, loadService as loadLaunchdService, unloadService as unloadLaunchdService, isServiceLoaded as isLaunchdServiceLoaded, startService as startLaunchdService, stopService as stopLaunchdService, getServiceStatus as getLaunchdServiceStatus, } from '../utils/plist.js';
|
|
12
|
+
// Linux (systemd) support
|
|
13
|
+
import { generateSystemdService, systemdServiceExists, writeSystemdService, removeSystemdService, enableSystemdService, disableSystemdService, startSystemdService, stopSystemdService, isSystemdServiceActive, getSystemdServiceStatus, isSystemdAvailable, } from '../utils/systemd.js';
|
|
14
|
+
function getPlatform() {
|
|
15
|
+
const p = platform();
|
|
16
|
+
if (p === 'darwin')
|
|
17
|
+
return 'darwin';
|
|
18
|
+
if (p === 'linux')
|
|
19
|
+
return 'linux';
|
|
20
|
+
return 'unknown';
|
|
21
|
+
}
|
|
22
|
+
export async function serviceCommand(action) {
|
|
23
|
+
const currentPlatform = getPlatform();
|
|
24
|
+
if (currentPlatform === 'unknown') {
|
|
25
|
+
console.log(chalk.red('ā Unsupported platform'));
|
|
26
|
+
console.log(chalk.gray(' Service management is only available on macOS and Linux'));
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
if (currentPlatform === 'linux' && !isSystemdAvailable()) {
|
|
30
|
+
console.log(chalk.red('ā systemd not available'));
|
|
31
|
+
console.log(chalk.gray(' Linux service management requires systemd'));
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
switch (action) {
|
|
35
|
+
case 'install':
|
|
36
|
+
await handleInstall(currentPlatform);
|
|
37
|
+
break;
|
|
38
|
+
case 'remove':
|
|
39
|
+
await handleRemove(currentPlatform);
|
|
40
|
+
break;
|
|
41
|
+
case 'start':
|
|
42
|
+
await handleStart(currentPlatform);
|
|
43
|
+
break;
|
|
44
|
+
case 'stop':
|
|
45
|
+
await handleStop(currentPlatform);
|
|
46
|
+
break;
|
|
47
|
+
case 'list':
|
|
48
|
+
await handleList(currentPlatform);
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async function handleInstall(platform) {
|
|
53
|
+
const vaultPath = resolve(process.cwd());
|
|
54
|
+
if (!isInitialized(vaultPath)) {
|
|
55
|
+
console.log(chalk.red('ā This directory is not initialized'));
|
|
56
|
+
console.log(chalk.gray(' Run `obsidigen init` first'));
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
const vaultConfig = getVaultConfig(vaultPath);
|
|
60
|
+
if (!vaultConfig) {
|
|
61
|
+
console.log(chalk.red('ā Could not read vault configuration'));
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
console.log(chalk.bold('\nRegistering vault with boot service\n'));
|
|
65
|
+
const spinner = ora('Installing service...').start();
|
|
66
|
+
try {
|
|
67
|
+
// Register vault in global config
|
|
68
|
+
registerVault({
|
|
69
|
+
path: vaultPath,
|
|
70
|
+
name: vaultConfig.name,
|
|
71
|
+
port: vaultConfig.port,
|
|
72
|
+
autostart: true,
|
|
73
|
+
});
|
|
74
|
+
// Find obsidigen binary
|
|
75
|
+
const obsidigenPath = getObsidigenPath();
|
|
76
|
+
if (platform === 'darwin') {
|
|
77
|
+
await installMacOSService(obsidigenPath);
|
|
78
|
+
}
|
|
79
|
+
else if (platform === 'linux') {
|
|
80
|
+
await installLinuxService(obsidigenPath);
|
|
81
|
+
}
|
|
82
|
+
spinner.succeed('Service installed');
|
|
83
|
+
console.log('');
|
|
84
|
+
console.log(chalk.green('ā Vault registered for autostart'));
|
|
85
|
+
console.log(` Name: ${chalk.cyan(vaultConfig.name)}`);
|
|
86
|
+
console.log(` Path: ${chalk.gray(vaultPath)}`);
|
|
87
|
+
console.log(` Port: ${chalk.cyan(vaultConfig.port.toString())}`);
|
|
88
|
+
console.log('');
|
|
89
|
+
console.log('The service will start automatically on login.');
|
|
90
|
+
console.log(`To start now: ${chalk.cyan('obsidigen service start')}`);
|
|
91
|
+
console.log('');
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
spinner.fail('Failed to install service');
|
|
95
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async function installMacOSService(obsidigenPath) {
|
|
100
|
+
// Ensure LaunchAgents directory exists
|
|
101
|
+
const launchAgentsDir = join(homedir(), 'Library', 'LaunchAgents');
|
|
102
|
+
if (!existsSync(launchAgentsDir)) {
|
|
103
|
+
mkdirSync(launchAgentsDir, { recursive: true });
|
|
104
|
+
}
|
|
105
|
+
// Generate and write plist
|
|
106
|
+
const plist = generatePlist({
|
|
107
|
+
label: 'com.obsidigen.daemon',
|
|
108
|
+
program: obsidigenPath,
|
|
109
|
+
programArguments: [obsidigenPath, 'daemon'],
|
|
110
|
+
runAtLoad: true,
|
|
111
|
+
keepAlive: true,
|
|
112
|
+
standardOutPath: join(getGlobalDir(), 'daemon.log'),
|
|
113
|
+
standardErrorPath: join(getGlobalDir(), 'daemon.error.log'),
|
|
114
|
+
workingDirectory: homedir(),
|
|
115
|
+
});
|
|
116
|
+
writePlist(plist);
|
|
117
|
+
// Load the service
|
|
118
|
+
if (isLaunchdServiceLoaded()) {
|
|
119
|
+
unloadLaunchdService();
|
|
120
|
+
}
|
|
121
|
+
loadLaunchdService();
|
|
122
|
+
}
|
|
123
|
+
async function installLinuxService(obsidigenPath) {
|
|
124
|
+
// Generate systemd service
|
|
125
|
+
const serviceContent = generateSystemdService({
|
|
126
|
+
description: 'Obsidigen Wiki Daemon',
|
|
127
|
+
execStart: `${obsidigenPath} daemon`,
|
|
128
|
+
workingDirectory: homedir(),
|
|
129
|
+
restart: 'on-failure',
|
|
130
|
+
restartSec: 5,
|
|
131
|
+
});
|
|
132
|
+
writeSystemdService(serviceContent);
|
|
133
|
+
enableSystemdService();
|
|
134
|
+
}
|
|
135
|
+
async function handleRemove(platform) {
|
|
136
|
+
const vaultPath = resolve(process.cwd());
|
|
137
|
+
if (!isInitialized(vaultPath)) {
|
|
138
|
+
console.log(chalk.red('ā This directory is not initialized'));
|
|
139
|
+
process.exit(1);
|
|
140
|
+
}
|
|
141
|
+
const spinner = ora('Removing from service...').start();
|
|
142
|
+
try {
|
|
143
|
+
// Unregister vault
|
|
144
|
+
const removed = unregisterVault(vaultPath);
|
|
145
|
+
if (!removed) {
|
|
146
|
+
spinner.warn('Vault was not registered');
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
// Check if any vaults still registered
|
|
150
|
+
const vaults = getRegisteredVaults();
|
|
151
|
+
if (vaults.length === 0) {
|
|
152
|
+
// No more vaults, remove the service entirely
|
|
153
|
+
if (platform === 'darwin') {
|
|
154
|
+
if (isLaunchdServiceLoaded()) {
|
|
155
|
+
unloadLaunchdService();
|
|
156
|
+
}
|
|
157
|
+
removePlist();
|
|
158
|
+
}
|
|
159
|
+
else if (platform === 'linux') {
|
|
160
|
+
if (isSystemdServiceActive()) {
|
|
161
|
+
stopSystemdService();
|
|
162
|
+
}
|
|
163
|
+
disableSystemdService();
|
|
164
|
+
removeSystemdService();
|
|
165
|
+
}
|
|
166
|
+
spinner.succeed('Service removed (no more vaults registered)');
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
spinner.succeed('Vault removed from service');
|
|
170
|
+
console.log(chalk.gray(` ${vaults.length} vault(s) still registered`));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
spinner.fail('Failed to remove from service');
|
|
175
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
176
|
+
process.exit(1);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
async function handleStart(platform) {
|
|
180
|
+
const serviceExists = platform === 'darwin' ? plistExists() : systemdServiceExists();
|
|
181
|
+
if (!serviceExists) {
|
|
182
|
+
console.log(chalk.red('ā Service not installed'));
|
|
183
|
+
console.log(chalk.gray(' Run `obsidigen service install` first'));
|
|
184
|
+
process.exit(1);
|
|
185
|
+
}
|
|
186
|
+
const spinner = ora('Starting service...').start();
|
|
187
|
+
try {
|
|
188
|
+
if (platform === 'darwin') {
|
|
189
|
+
if (!isLaunchdServiceLoaded()) {
|
|
190
|
+
loadLaunchdService();
|
|
191
|
+
}
|
|
192
|
+
startLaunchdService();
|
|
193
|
+
}
|
|
194
|
+
else if (platform === 'linux') {
|
|
195
|
+
startSystemdService();
|
|
196
|
+
}
|
|
197
|
+
// Wait a moment and check status
|
|
198
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
199
|
+
let isRunning = false;
|
|
200
|
+
let pid;
|
|
201
|
+
if (platform === 'darwin') {
|
|
202
|
+
const status = getLaunchdServiceStatus();
|
|
203
|
+
isRunning = status.running;
|
|
204
|
+
pid = status.pid;
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
const status = getSystemdServiceStatus();
|
|
208
|
+
isRunning = status.active;
|
|
209
|
+
pid = status.pid;
|
|
210
|
+
}
|
|
211
|
+
if (isRunning) {
|
|
212
|
+
spinner.succeed(`Service started${pid ? ` (PID: ${pid})` : ''}`);
|
|
213
|
+
// Show registered vaults
|
|
214
|
+
const vaults = getRegisteredVaults().filter(v => v.autostart);
|
|
215
|
+
if (vaults.length > 0) {
|
|
216
|
+
console.log('');
|
|
217
|
+
console.log(chalk.bold('Running vaults:'));
|
|
218
|
+
for (const vault of vaults) {
|
|
219
|
+
console.log(` ${chalk.cyan(vault.name)} - http://localhost:${vault.port}`);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
spinner.warn('Service started but may not be running');
|
|
225
|
+
const logPath = platform === 'darwin'
|
|
226
|
+
? '~/.obsidigen/daemon.log'
|
|
227
|
+
: 'journalctl --user -u obsidigen-daemon';
|
|
228
|
+
console.log(chalk.gray(` Check logs: ${logPath}`));
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
spinner.fail('Failed to start service');
|
|
233
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
234
|
+
process.exit(1);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
async function handleStop(platform) {
|
|
238
|
+
const serviceExists = platform === 'darwin' ? plistExists() : systemdServiceExists();
|
|
239
|
+
if (!serviceExists) {
|
|
240
|
+
console.log(chalk.yellow('ā Service not installed'));
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
const spinner = ora('Stopping service...').start();
|
|
244
|
+
try {
|
|
245
|
+
if (platform === 'darwin') {
|
|
246
|
+
stopLaunchdService();
|
|
247
|
+
}
|
|
248
|
+
else if (platform === 'linux') {
|
|
249
|
+
stopSystemdService();
|
|
250
|
+
}
|
|
251
|
+
spinner.succeed('Service stopped');
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
spinner.fail('Failed to stop service');
|
|
255
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
async function handleList(platform) {
|
|
259
|
+
let isRunning = false;
|
|
260
|
+
let isLoaded = false;
|
|
261
|
+
let pid;
|
|
262
|
+
let enabled;
|
|
263
|
+
if (platform === 'darwin') {
|
|
264
|
+
const status = getLaunchdServiceStatus();
|
|
265
|
+
isRunning = status.running;
|
|
266
|
+
isLoaded = status.loaded;
|
|
267
|
+
pid = status.pid;
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
const status = getSystemdServiceStatus();
|
|
271
|
+
isRunning = status.active;
|
|
272
|
+
isLoaded = status.loaded;
|
|
273
|
+
pid = status.pid;
|
|
274
|
+
enabled = status.enabled;
|
|
275
|
+
}
|
|
276
|
+
const vaults = getRegisteredVaults();
|
|
277
|
+
console.log('');
|
|
278
|
+
console.log(chalk.bold('Obsidigen Service'));
|
|
279
|
+
console.log('');
|
|
280
|
+
if (isLoaded) {
|
|
281
|
+
console.log(` Status: ${isRunning ? chalk.green('ā Running') : chalk.yellow('ā Stopped')}`);
|
|
282
|
+
if (pid) {
|
|
283
|
+
console.log(` PID: ${pid}`);
|
|
284
|
+
}
|
|
285
|
+
if (platform === 'linux' && enabled !== undefined) {
|
|
286
|
+
console.log(` Enabled: ${enabled ? 'Yes' : 'No'}`);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
console.log(` Status: ${chalk.gray('ā Not installed')}`);
|
|
291
|
+
}
|
|
292
|
+
console.log('');
|
|
293
|
+
console.log(chalk.bold('Registered Vaults'));
|
|
294
|
+
console.log('');
|
|
295
|
+
if (vaults.length === 0) {
|
|
296
|
+
console.log(chalk.gray(' No vaults registered'));
|
|
297
|
+
console.log(chalk.gray(' Run `obsidigen service install` in a vault directory'));
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
for (const vault of vaults) {
|
|
301
|
+
const statusIcon = vault.autostart ? chalk.green('ā') : chalk.gray('ā');
|
|
302
|
+
console.log(` ${statusIcon} ${chalk.cyan(vault.name)}`);
|
|
303
|
+
console.log(` Path: ${chalk.gray(vault.path)}`);
|
|
304
|
+
console.log(` Port: ${vault.port}`);
|
|
305
|
+
console.log(` Autostart: ${vault.autostart ? 'Yes' : 'No'}`);
|
|
306
|
+
console.log('');
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Find the obsidigen binary path
|
|
312
|
+
*/
|
|
313
|
+
function getObsidigenPath() {
|
|
314
|
+
try {
|
|
315
|
+
const result = execSync('which obsidigen', { encoding: 'utf-8' });
|
|
316
|
+
return result.trim();
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
// Fallback to npm global path
|
|
320
|
+
try {
|
|
321
|
+
const npmRoot = execSync('npm root -g', { encoding: 'utf-8' }).trim();
|
|
322
|
+
const possiblePath = join(npmRoot, 'obsidigen', 'dist', 'cli.js');
|
|
323
|
+
if (existsSync(possiblePath)) {
|
|
324
|
+
return `${process.execPath} ${possiblePath}`;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
catch {
|
|
328
|
+
// Ignore
|
|
329
|
+
}
|
|
330
|
+
// Last resort - use node to run from current location
|
|
331
|
+
return `${process.execPath} ${process.argv[1]}`;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/commands/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface StartOptions {
|
|
2
|
+
daemon?: boolean;
|
|
3
|
+
port?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function startCommand(options: StartOptions): Promise<void>;
|
|
6
|
+
export declare function stopCommand(): Promise<void>;
|
|
7
|
+
export declare function statusCommand(): Promise<void>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=start.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAYA,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmGvE;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA8BjD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAgEnD"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
// obsidigen start/stop/status commands
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import { fork } from 'child_process';
|
|
5
|
+
import { resolve, dirname } from 'path';
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
7
|
+
import { isInitialized, getVaultConfig, getProcessInfo, saveProcessInfo, clearProcessInfo } from '../config/vault.js';
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
const __dirname = dirname(__filename);
|
|
10
|
+
export async function startCommand(options) {
|
|
11
|
+
const vaultPath = resolve(process.cwd());
|
|
12
|
+
if (!isInitialized(vaultPath)) {
|
|
13
|
+
console.log(chalk.red('ā This directory is not initialized.'));
|
|
14
|
+
console.log(chalk.gray(' Run `obsidigen init` first.'));
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
const config = getVaultConfig(vaultPath);
|
|
18
|
+
if (!config) {
|
|
19
|
+
console.log(chalk.red('ā Could not read configuration.'));
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
// Check if already running
|
|
23
|
+
const processInfo = getProcessInfo(vaultPath);
|
|
24
|
+
if (processInfo) {
|
|
25
|
+
try {
|
|
26
|
+
process.kill(processInfo.pid, 0);
|
|
27
|
+
console.log(chalk.yellow(`ā Server already running on port ${processInfo.port} (PID: ${processInfo.pid})`));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Process not running, clear stale PID
|
|
32
|
+
clearProcessInfo(vaultPath);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const port = options.port ? parseInt(options.port, 10) : config.port;
|
|
36
|
+
if (options.daemon) {
|
|
37
|
+
// Start as daemon (background process)
|
|
38
|
+
const spinner = ora('Starting server in background...').start();
|
|
39
|
+
try {
|
|
40
|
+
const serverPath = resolve(__dirname, '../server/index.js');
|
|
41
|
+
const child = fork(serverPath, [], {
|
|
42
|
+
detached: true,
|
|
43
|
+
stdio: 'ignore',
|
|
44
|
+
env: {
|
|
45
|
+
...process.env,
|
|
46
|
+
OBSIDIGEN_VAULT_PATH: vaultPath,
|
|
47
|
+
OBSIDIGEN_PORT: port.toString(),
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
child.unref();
|
|
51
|
+
if (child.pid) {
|
|
52
|
+
saveProcessInfo(vaultPath, {
|
|
53
|
+
pid: child.pid,
|
|
54
|
+
port,
|
|
55
|
+
startedAt: new Date().toISOString(),
|
|
56
|
+
});
|
|
57
|
+
spinner.succeed(`Server started on port ${port} (PID: ${child.pid})`);
|
|
58
|
+
console.log(` ${chalk.cyan(`http://localhost:${port}`)}`);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
spinner.fail('Failed to start server');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
spinner.fail('Failed to start server');
|
|
66
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// Start in foreground
|
|
72
|
+
console.log(chalk.bold(`\nš Starting Obsidigen server...\n`));
|
|
73
|
+
console.log(` Wiki: ${chalk.cyan(config.name)}`);
|
|
74
|
+
console.log(` Path: ${chalk.gray(vaultPath)}`);
|
|
75
|
+
console.log(` URL: ${chalk.cyan(`http://localhost:${port}`)}`);
|
|
76
|
+
console.log('');
|
|
77
|
+
console.log(chalk.gray(' Press Ctrl+C to stop\n'));
|
|
78
|
+
// Save process info for status command
|
|
79
|
+
saveProcessInfo(vaultPath, {
|
|
80
|
+
pid: process.pid,
|
|
81
|
+
port,
|
|
82
|
+
startedAt: new Date().toISOString(),
|
|
83
|
+
});
|
|
84
|
+
// Import and start server
|
|
85
|
+
const { startServer } = await import('../server/index.js');
|
|
86
|
+
// Handle shutdown
|
|
87
|
+
process.on('SIGINT', () => {
|
|
88
|
+
console.log(chalk.yellow('\n\nShutting down...'));
|
|
89
|
+
clearProcessInfo(vaultPath);
|
|
90
|
+
process.exit(0);
|
|
91
|
+
});
|
|
92
|
+
process.on('SIGTERM', () => {
|
|
93
|
+
clearProcessInfo(vaultPath);
|
|
94
|
+
process.exit(0);
|
|
95
|
+
});
|
|
96
|
+
await startServer(vaultPath, port);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export async function stopCommand() {
|
|
100
|
+
const vaultPath = resolve(process.cwd());
|
|
101
|
+
if (!isInitialized(vaultPath)) {
|
|
102
|
+
console.log(chalk.red('ā This directory is not initialized.'));
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
const processInfo = getProcessInfo(vaultPath);
|
|
106
|
+
if (!processInfo) {
|
|
107
|
+
console.log(chalk.yellow('ā No server running for this vault.'));
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const spinner = ora('Stopping server...').start();
|
|
111
|
+
try {
|
|
112
|
+
process.kill(processInfo.pid, 'SIGTERM');
|
|
113
|
+
clearProcessInfo(vaultPath);
|
|
114
|
+
spinner.succeed(`Server stopped (was PID: ${processInfo.pid})`);
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
if (error.code === 'ESRCH') {
|
|
118
|
+
clearProcessInfo(vaultPath);
|
|
119
|
+
spinner.warn('Server was not running (cleaned up stale PID file)');
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
spinner.fail('Failed to stop server');
|
|
123
|
+
console.error(chalk.red(error.message));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
export async function statusCommand() {
|
|
128
|
+
const vaultPath = resolve(process.cwd());
|
|
129
|
+
if (!isInitialized(vaultPath)) {
|
|
130
|
+
console.log(chalk.red('ā This directory is not initialized.'));
|
|
131
|
+
console.log(chalk.gray(' Run `obsidigen init` first.'));
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
const config = getVaultConfig(vaultPath);
|
|
135
|
+
const processInfo = getProcessInfo(vaultPath);
|
|
136
|
+
console.log('');
|
|
137
|
+
console.log(chalk.bold('Obsidigen Status'));
|
|
138
|
+
console.log('');
|
|
139
|
+
if (config) {
|
|
140
|
+
console.log(` Wiki Name: ${chalk.cyan(config.name)}`);
|
|
141
|
+
console.log(` Vault Path: ${chalk.gray(config.vaultPath)}`);
|
|
142
|
+
console.log(` Port: ${chalk.cyan(config.port.toString())}`);
|
|
143
|
+
}
|
|
144
|
+
console.log('');
|
|
145
|
+
if (processInfo) {
|
|
146
|
+
// Check if process is actually running
|
|
147
|
+
let isRunning = false;
|
|
148
|
+
try {
|
|
149
|
+
process.kill(processInfo.pid, 0);
|
|
150
|
+
isRunning = true;
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
isRunning = false;
|
|
154
|
+
}
|
|
155
|
+
if (isRunning) {
|
|
156
|
+
console.log(` Server: ${chalk.green('ā Running')}`);
|
|
157
|
+
console.log(` PID: ${processInfo.pid}`);
|
|
158
|
+
console.log(` URL: ${chalk.cyan(`http://localhost:${processInfo.port}`)}`);
|
|
159
|
+
console.log(` Started: ${processInfo.startedAt}`);
|
|
160
|
+
if (processInfo.tunnelPid) {
|
|
161
|
+
console.log('');
|
|
162
|
+
console.log(` Tunnel: ${chalk.green('ā Connected')}`);
|
|
163
|
+
console.log(` Tunnel PID: ${processInfo.tunnelPid}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
console.log(` Server: ${chalk.gray('ā Stopped')}`);
|
|
168
|
+
clearProcessInfo(vaultPath);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
console.log(` Server: ${chalk.gray('ā Stopped')}`);
|
|
173
|
+
}
|
|
174
|
+
// Show tunnel config if present
|
|
175
|
+
if (config?.tunnel) {
|
|
176
|
+
console.log('');
|
|
177
|
+
console.log(chalk.bold('Tunnel Configuration'));
|
|
178
|
+
console.log(` Name: ${config.tunnel.name}`);
|
|
179
|
+
if (config.tunnel.hostname) {
|
|
180
|
+
console.log(` Hostname: ${chalk.cyan(config.tunnel.hostname)}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
console.log('');
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/commands/tunnel.ts"],"names":[],"mappings":"AAkBA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,EACxD,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
|