obsidian-plugin-config 1.4.4 ā 1.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.injection-info.json +5 -1
- package/.vscode/tasks.json +116 -116
- package/bin/obsidian-inject.js +1 -1
- package/package.json +3 -1
- package/scripts/acp.ts +64 -56
- package/scripts/build-npm.ts +152 -135
- package/scripts/esbuild.config.ts +221 -196
- package/scripts/inject-core.ts +613 -619
- package/scripts/inject-path.ts +144 -130
- package/scripts/inject-prompt.ts +85 -78
- package/scripts/sync-template-deps.ts +44 -44
- package/scripts/update-version-config.ts +117 -98
- package/scripts/utils.ts +121 -118
- package/templates/.vscode/settings.json +9 -9
- package/templates/.vscode/tasks.json +61 -53
- package/templates/package.json +4 -2
- package/templates/scripts/acp.ts +64 -56
- package/templates/scripts/esbuild.config.ts +268 -232
- package/templates/scripts/release.ts +78 -79
- package/templates/scripts/update-version.ts +129 -106
- package/templates/scripts/utils.ts +129 -126
- package/tsconfig.json +30 -41
- package/versions.json +4 -1
package/scripts/build-npm.ts
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
#!/usr/bin/env tsx
|
|
2
2
|
|
|
3
|
-
import fs from
|
|
4
|
-
import path from
|
|
5
|
-
import { execSync } from
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import { execSync } from 'child_process';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Generate bin/obsidian-inject.js from template
|
|
9
9
|
*/
|
|
10
10
|
async function generateBinFile(): Promise<void> {
|
|
11
|
-
|
|
11
|
+
console.log(`\nš§ Generating bin/obsidian-inject.js...`);
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
const binDir = 'bin';
|
|
14
|
+
const binPath = path.join(binDir, 'obsidian-inject.js');
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
// Ensure bin directory exists
|
|
17
|
+
if (!fs.existsSync(binDir)) {
|
|
18
|
+
fs.mkdirSync(binDir, { recursive: true });
|
|
19
|
+
console.log(` š Created ${binDir} directory`);
|
|
20
|
+
}
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
// Read package.json for version info
|
|
23
|
+
const packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8'));
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
const binContent = `#!/usr/bin/env node
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* Obsidian Plugin Config - CLI Entry Point
|
|
@@ -190,139 +190,156 @@ function main() {
|
|
|
190
190
|
main();
|
|
191
191
|
`;
|
|
192
192
|
|
|
193
|
-
|
|
194
|
-
|
|
193
|
+
fs.writeFileSync(binPath, binContent, 'utf8');
|
|
194
|
+
console.log(` ā
Generated ${binPath}`);
|
|
195
195
|
}
|
|
196
196
|
|
|
197
197
|
/**
|
|
198
198
|
* Complete NPM workflow - Version, Commit, Push, Publish
|
|
199
199
|
*/
|
|
200
200
|
async function buildAndPublishNpm(): Promise<void> {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
201
|
+
console.log(`š Obsidian Plugin Config - Complete NPM Workflow`);
|
|
202
|
+
console.log(`Full automation: version ā exports ā bin ā commit ā publish\n`);
|
|
203
|
+
|
|
204
|
+
try {
|
|
205
|
+
// Step 0: Check NPM login
|
|
206
|
+
console.log(`š Checking NPM authentication...`);
|
|
207
|
+
try {
|
|
208
|
+
const whoami = execSync('npm whoami --registry https://registry.npmjs.org/', {
|
|
209
|
+
stdio: 'pipe',
|
|
210
|
+
encoding: 'utf8'
|
|
211
|
+
}).trim();
|
|
212
|
+
console.log(` ā
Logged in as: ${whoami}\n`);
|
|
213
|
+
} catch {
|
|
214
|
+
console.error(` ā Not logged in to NPM. Run: npm login`);
|
|
215
|
+
process.exit(1);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// Step 1: Update version
|
|
219
|
+
console.log(`š Step 1/7: Updating version...`);
|
|
220
|
+
execSync('tsx scripts/update-version-config.ts', { stdio: 'inherit' });
|
|
221
|
+
|
|
222
|
+
// Step 2: Update exports
|
|
223
|
+
console.log(`\nš¦ Step 2/7: Updating exports...`);
|
|
224
|
+
execSync('yarn update-exports', { stdio: 'inherit' });
|
|
225
|
+
|
|
226
|
+
// Step 3: Generate bin file
|
|
227
|
+
console.log(`\nš§ Step 3/7: Generating bin/obsidian-inject.js...`);
|
|
228
|
+
await generateBinFile();
|
|
229
|
+
|
|
230
|
+
// Step 4: Verify package and sync versions.json
|
|
231
|
+
console.log(`\nš Step 4/7: Verifying package...`);
|
|
232
|
+
verifyPackage();
|
|
233
|
+
|
|
234
|
+
// Step 5: Commit and push
|
|
235
|
+
console.log(`\nš¤ Step 5/7: Committing and pushing changes...`);
|
|
236
|
+
try {
|
|
237
|
+
execSync('echo "Publish NPM package" | tsx scripts/acp.ts -b', {
|
|
238
|
+
stdio: 'inherit'
|
|
239
|
+
});
|
|
240
|
+
} catch {
|
|
241
|
+
console.log(` ā¹ļø No additional changes to commit`);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// Step 6: Publish to NPM
|
|
245
|
+
console.log(`\nš¤ Step 6/7: Publishing to NPM...`);
|
|
246
|
+
execSync('npm publish --registry https://registry.npmjs.org/', {
|
|
247
|
+
stdio: 'inherit'
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
// Step 7: Offer global update
|
|
251
|
+
console.log(`\nš Step 7/7: Update global CLI?`);
|
|
252
|
+
const { askConfirmation, createReadlineInterface } = await import('./utils.js');
|
|
253
|
+
const rl = createReadlineInterface();
|
|
254
|
+
const doUpdate = await askConfirmation(
|
|
255
|
+
`Install npm install -g obsidian-plugin-config@latest?`,
|
|
256
|
+
rl
|
|
257
|
+
);
|
|
258
|
+
rl.close();
|
|
259
|
+
if (doUpdate) {
|
|
260
|
+
execSync(
|
|
261
|
+
'npm install -g obsidian-plugin-config@latest --force --engine-strict=false',
|
|
262
|
+
{ stdio: 'inherit' }
|
|
263
|
+
);
|
|
264
|
+
console.log(` ā
Global CLI updated`);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
console.log(`\nš Complete workflow successful!`);
|
|
268
|
+
console.log(` Test: cd any-plugin && obsidian-inject`);
|
|
269
|
+
} catch (error) {
|
|
270
|
+
console.error(
|
|
271
|
+
`\nā Workflow failed: ${error instanceof Error ? error.message : String(error)}`
|
|
272
|
+
);
|
|
273
|
+
process.exit(1);
|
|
274
|
+
}
|
|
265
275
|
}
|
|
266
276
|
|
|
267
277
|
/**
|
|
268
278
|
* Verify package is ready for publication
|
|
269
279
|
*/
|
|
270
280
|
function verifyPackage(): void {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
281
|
+
// Check required scripts
|
|
282
|
+
const requiredScripts = [
|
|
283
|
+
'scripts/inject-path.ts',
|
|
284
|
+
'scripts/inject-prompt.ts',
|
|
285
|
+
'scripts/utils.ts',
|
|
286
|
+
'scripts/esbuild.config.ts',
|
|
287
|
+
'scripts/acp.ts',
|
|
288
|
+
'scripts/update-version-config.ts',
|
|
289
|
+
'scripts/help.ts'
|
|
290
|
+
];
|
|
291
|
+
|
|
292
|
+
for (const script of requiredScripts) {
|
|
293
|
+
if (!fs.existsSync(script)) {
|
|
294
|
+
throw new Error(`Missing required script: ${script}`);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
console.log(` ā
All required scripts present`);
|
|
298
|
+
|
|
299
|
+
// Check package.json
|
|
300
|
+
const packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8'));
|
|
301
|
+
const requiredFields = [
|
|
302
|
+
'name',
|
|
303
|
+
'version',
|
|
304
|
+
'description',
|
|
305
|
+
'bin',
|
|
306
|
+
'repository',
|
|
307
|
+
'author'
|
|
308
|
+
];
|
|
309
|
+
|
|
310
|
+
for (const field of requiredFields) {
|
|
311
|
+
if (!packageJson[field]) {
|
|
312
|
+
throw new Error(`Missing required package.json field: ${field}`);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
console.log(` ā
Package.json valid (v${packageJson.version})`);
|
|
316
|
+
|
|
317
|
+
// Check bin file exists
|
|
318
|
+
if (!fs.existsSync('bin/obsidian-inject.js')) {
|
|
319
|
+
throw new Error(`Missing bin file: bin/obsidian-inject.js`);
|
|
320
|
+
}
|
|
321
|
+
console.log(` ā
Bin file ready`);
|
|
322
|
+
|
|
323
|
+
// Sync versions.json
|
|
324
|
+
const versionsPath = 'versions.json';
|
|
325
|
+
let versions: Record<string, string> = {};
|
|
326
|
+
|
|
327
|
+
if (fs.existsSync(versionsPath)) {
|
|
328
|
+
versions = JSON.parse(fs.readFileSync(versionsPath, 'utf8'));
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
if (!versions[packageJson.version]) {
|
|
332
|
+
const manifest = JSON.parse(fs.readFileSync('manifest.json', 'utf8'));
|
|
333
|
+
versions[packageJson.version] = manifest.minAppVersion;
|
|
334
|
+
fs.writeFileSync(versionsPath, JSON.stringify(versions, null, '\t'), 'utf8');
|
|
335
|
+
console.log(` ā
Added version ${packageJson.version} to versions.json`);
|
|
336
|
+
} else {
|
|
337
|
+
console.log(` ā
Version ${packageJson.version} in versions.json`);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
// Quick build test
|
|
341
|
+
execSync('yarn build', { stdio: 'pipe' });
|
|
342
|
+
console.log(` ā
Build test passed`);
|
|
326
343
|
}
|
|
327
344
|
|
|
328
345
|
// Run the script
|