@kud/foxhop-cli 1.0.0 → 1.0.2
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/cli.js +44 -17
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -192,7 +192,13 @@ import {
|
|
|
192
192
|
rmSync
|
|
193
193
|
} from "fs";
|
|
194
194
|
import { join as join4 } from "path";
|
|
195
|
+
|
|
196
|
+
// src/icon.ts
|
|
197
|
+
var ICON_PNG_BASE64 = "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";
|
|
198
|
+
|
|
199
|
+
// src/sync.ts
|
|
195
200
|
var MARKER = "@foxhop.generated";
|
|
201
|
+
var ICON_FILE = "foxhop.png";
|
|
196
202
|
var defaultScriptsDir = () => join4(CONFIG_DIR, "scripts");
|
|
197
203
|
var stableNode = (node) => {
|
|
198
204
|
const index = node.indexOf("/installs/node/");
|
|
@@ -208,7 +214,7 @@ var scriptBody = (node, cli, target) => {
|
|
|
208
214
|
# @raycast.title Focus ${title}
|
|
209
215
|
# @raycast.mode silent
|
|
210
216
|
# @raycast.packageName foxhop
|
|
211
|
-
# @raycast.icon
|
|
217
|
+
# @raycast.icon ${ICON_FILE}
|
|
212
218
|
|
|
213
219
|
# Documentation:
|
|
214
220
|
# @raycast.description Focus the ${title} tab in Firefox (opens it if not already open).
|
|
@@ -228,6 +234,7 @@ var isGenerated = (path) => {
|
|
|
228
234
|
var sync = (node, cli, dir = defaultScriptsDir()) => {
|
|
229
235
|
const { targets } = readConfig();
|
|
230
236
|
mkdirSync3(dir, { recursive: true });
|
|
237
|
+
writeFileSync3(join4(dir, ICON_FILE), Buffer.from(ICON_PNG_BASE64, "base64"));
|
|
231
238
|
const wanted = new Set(targets.map((target) => `focus-${target.name}.sh`));
|
|
232
239
|
const removed = (existsSync2(dir) ? readdirSync(dir) : []).filter((file) => file.startsWith("focus-") && file.endsWith(".sh")).filter((file) => !wanted.has(file) && isGenerated(join4(dir, file)));
|
|
233
240
|
for (const file of removed) rmSync(join4(dir, file));
|
|
@@ -242,11 +249,17 @@ var sync = (node, cli, dir = defaultScriptsDir()) => {
|
|
|
242
249
|
// src/cli.ts
|
|
243
250
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
244
251
|
var browserApp = () => process.env.FOXHOP_BROWSER ?? "Firefox Nightly";
|
|
245
|
-
var
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
252
|
+
var runOpen = (args) => {
|
|
253
|
+
const child = spawn("/usr/bin/open", args, {
|
|
254
|
+
stdio: "ignore",
|
|
255
|
+
detached: true
|
|
256
|
+
});
|
|
257
|
+
child.on("error", () => {
|
|
258
|
+
});
|
|
259
|
+
child.unref();
|
|
260
|
+
};
|
|
261
|
+
var foreground = () => runOpen(["-a", browserApp()]);
|
|
262
|
+
var openUrl = (url) => runOpen([url]);
|
|
250
263
|
var focus = defineCommand({
|
|
251
264
|
meta: {
|
|
252
265
|
name: "focus",
|
|
@@ -384,7 +397,8 @@ var syncCommand = defineCommand({
|
|
|
384
397
|
dir: {
|
|
385
398
|
type: "string",
|
|
386
399
|
description: `Output directory (default: ${defaultScriptsDir()})`
|
|
387
|
-
}
|
|
400
|
+
},
|
|
401
|
+
json: { type: "boolean", description: "Output the result as JSON" }
|
|
388
402
|
},
|
|
389
403
|
run: ({ args }) => {
|
|
390
404
|
const result = sync(
|
|
@@ -392,6 +406,10 @@ var syncCommand = defineCommand({
|
|
|
392
406
|
fileURLToPath2(import.meta.url),
|
|
393
407
|
args.dir
|
|
394
408
|
);
|
|
409
|
+
if (args.json) {
|
|
410
|
+
process.stdout.write(JSON.stringify(result) + "\n");
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
395
413
|
console.log(
|
|
396
414
|
`foxhop: wrote ${result.written} script(s)` + (result.removed ? `, removed ${result.removed} stale` : "") + ` in ${result.dir}`
|
|
397
415
|
);
|
|
@@ -454,21 +472,30 @@ var remove = defineCommand({
|
|
|
454
472
|
console.log(`foxhop: removed "${args.name}"`);
|
|
455
473
|
}
|
|
456
474
|
});
|
|
475
|
+
var NAME = "foxhop";
|
|
476
|
+
var subCommands = {
|
|
477
|
+
focus,
|
|
478
|
+
list,
|
|
479
|
+
tabs,
|
|
480
|
+
add,
|
|
481
|
+
remove,
|
|
482
|
+
init,
|
|
483
|
+
sync: syncCommand,
|
|
484
|
+
install: installCommand
|
|
485
|
+
};
|
|
457
486
|
runMain(
|
|
458
487
|
defineCommand({
|
|
459
488
|
meta: {
|
|
460
|
-
name:
|
|
489
|
+
name: NAME,
|
|
461
490
|
description: "Focus specific Firefox tabs from anywhere on macOS"
|
|
462
491
|
},
|
|
463
|
-
subCommands
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
sync: syncCommand,
|
|
471
|
-
install: installCommand
|
|
492
|
+
subCommands,
|
|
493
|
+
run: ({ rawArgs }) => {
|
|
494
|
+
if (rawArgs.some((arg) => arg in subCommands)) return;
|
|
495
|
+
console.log(
|
|
496
|
+
`Usage: ${NAME} <command>
|
|
497
|
+
Run \`${NAME} --help\` to list commands.`
|
|
498
|
+
);
|
|
472
499
|
}
|
|
473
500
|
})
|
|
474
501
|
);
|