@kud/foxhop-cli 1.0.1 → 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.
Files changed (2) hide show
  1. package/dist/cli.js +33 -12
  2. 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 \u{1F98A}
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: "foxhop",
489
+ name: NAME,
467
490
  description: "Focus specific Firefox tabs from anywhere on macOS"
468
491
  },
469
- subCommands: {
470
- focus,
471
- list,
472
- tabs,
473
- add,
474
- remove,
475
- init,
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
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kud/foxhop-cli",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "foxhop CLI and native messaging host — focus specific Firefox tabs from macOS",
5
5
  "type": "module",
6
6
  "license": "MIT",