@kud/foxhop-cli 1.0.1 → 1.0.3
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 +34 -13
- 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/");
|
|
@@ -207,8 +213,8 @@ var scriptBody = (node, cli, target) => {
|
|
|
207
213
|
# @raycast.schemaVersion 1
|
|
208
214
|
# @raycast.title Focus ${title}
|
|
209
215
|
# @raycast.mode silent
|
|
210
|
-
# @raycast.packageName
|
|
211
|
-
# @raycast.icon
|
|
216
|
+
# @raycast.packageName Fox Hop
|
|
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));
|
|
@@ -390,7 +397,8 @@ var syncCommand = defineCommand({
|
|
|
390
397
|
dir: {
|
|
391
398
|
type: "string",
|
|
392
399
|
description: `Output directory (default: ${defaultScriptsDir()})`
|
|
393
|
-
}
|
|
400
|
+
},
|
|
401
|
+
json: { type: "boolean", description: "Output the result as JSON" }
|
|
394
402
|
},
|
|
395
403
|
run: ({ args }) => {
|
|
396
404
|
const result = sync(
|
|
@@ -398,6 +406,10 @@ var syncCommand = defineCommand({
|
|
|
398
406
|
fileURLToPath2(import.meta.url),
|
|
399
407
|
args.dir
|
|
400
408
|
);
|
|
409
|
+
if (args.json) {
|
|
410
|
+
process.stdout.write(JSON.stringify(result) + "\n");
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
401
413
|
console.log(
|
|
402
414
|
`foxhop: wrote ${result.written} script(s)` + (result.removed ? `, removed ${result.removed} stale` : "") + ` in ${result.dir}`
|
|
403
415
|
);
|
|
@@ -460,21 +472,30 @@ var remove = defineCommand({
|
|
|
460
472
|
console.log(`foxhop: removed "${args.name}"`);
|
|
461
473
|
}
|
|
462
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
|
+
};
|
|
463
486
|
runMain(
|
|
464
487
|
defineCommand({
|
|
465
488
|
meta: {
|
|
466
|
-
name:
|
|
489
|
+
name: NAME,
|
|
467
490
|
description: "Focus specific Firefox tabs from anywhere on macOS"
|
|
468
491
|
},
|
|
469
|
-
subCommands
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
sync: syncCommand,
|
|
477
|
-
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
|
+
);
|
|
478
499
|
}
|
|
479
500
|
})
|
|
480
501
|
);
|