loop-task 1.0.1 → 1.1.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/README.md CHANGED
@@ -43,7 +43,7 @@ Options must come before the interval:
43
43
 
44
44
  | Option | Description |
45
45
  | ----------------- | -------------------------------- |
46
- | `--immediate` | Run immediately before waiting |
46
+ | `--now` | Run immediately before waiting |
47
47
  | `--max-runs <n>` | Stop after N executions |
48
48
  | `--verbose` | Show execution details |
49
49
  | `-h, --help` | Display help |
@@ -54,7 +54,7 @@ Options must come before the interval:
54
54
  ### Agent workflows
55
55
 
56
56
  ```bash
57
- npx loop-task 30m opencode --prompt "search for missing translation text and translate them, 3 maximum" --model "opencode/big-pickle"
57
+ npx loop-task 30m --now -- opencode run "search for missing translation text and translate them, 3 maximum" --model "opencode/big-pickle"
58
58
  ```
59
59
 
60
60
  ### Run tests every 30 minutes
@@ -66,7 +66,7 @@ loop-task 30m npm test
66
66
  ### Run immediately, then every hour
67
67
 
68
68
  ```bash
69
- loop-task --immediate 1h npm test
69
+ loop-task --now 1h npm test
70
70
  ```
71
71
 
72
72
  ### Run up to 5 times then stop
package/dist/cli.js CHANGED
@@ -1,60 +1,99 @@
1
1
  #!/usr/bin/env node
2
- import { Command } from "commander";
3
2
  import { parseDuration } from "./duration.js";
4
3
  import { Logger } from "./logger.js";
5
4
  import { runLoop } from "./loop.js";
6
- const program = new Command();
7
- program
8
- .name("loop-task")
9
- .description("Repeatedly execute a shell command at a human-readable interval")
10
- .version("1.0.0")
11
- .argument("<interval>", "Interval between runs (e.g. 10s, 5m, 1h, 1d, 1w)")
12
- .argument("<command...>", "Command to execute")
13
- .option("--immediate", "Run immediately before waiting", false)
14
- .option("--max-runs <n>", "Stop after N executions", (v) => {
15
- const n = parseInt(v, 10);
16
- if (isNaN(n) || n < 1) {
17
- throw new Error("--max-runs must be a positive integer");
5
+ const args = process.argv.slice(2);
6
+ const loopOptions = {
7
+ immediate: false,
8
+ maxRuns: null,
9
+ verbose: false,
10
+ };
11
+ const commandParts = [];
12
+ let i = 0;
13
+ while (i < args.length) {
14
+ const arg = args[i];
15
+ if (arg === "--now") {
16
+ loopOptions.immediate = true;
17
+ i++;
18
18
  }
19
- return n;
20
- }, null)
21
- .option("--verbose", "Show execution details", false)
22
- .enablePositionalOptions()
23
- .passThroughOptions()
24
- .addHelpText("before", `
19
+ else if (arg === "--max-runs") {
20
+ i++;
21
+ const n = parseInt(args[i], 10);
22
+ if (isNaN(n) || n < 1) {
23
+ console.error("Error: --max-runs must be a positive integer");
24
+ process.exit(1);
25
+ }
26
+ loopOptions.maxRuns = n;
27
+ i++;
28
+ }
29
+ else if (arg === "--verbose") {
30
+ loopOptions.verbose = true;
31
+ i++;
32
+ }
33
+ else if (arg === "--help" || arg === "-h") {
34
+ console.log(`
25
35
  Usage:
26
36
  loop-task [options] <interval> <command>
27
37
 
28
38
  Examples:
29
39
  loop-task 30m npm test
30
40
  loop-task 1h opencode --prompt '/ob-init'
31
- loop-task --immediate 1h npm test
41
+ loop-task 30s --now -- echo hello
32
42
  loop-task --max-runs 5 5m npm test
33
- `)
34
- .action(async (intervalStr, commandParts, opts) => {
35
- const logger = new Logger(opts.verbose);
36
- let interval;
37
- try {
38
- interval = parseDuration(intervalStr);
43
+
44
+ Options:
45
+ --now Run immediately before waiting
46
+ --max-runs <n> Stop after N executions
47
+ --verbose Show execution details
48
+ -h, --help Display help
49
+ -V, --version Display version
50
+ `);
51
+ process.exit(0);
52
+ }
53
+ else if (arg === "--version" || arg === "-V") {
54
+ console.log("1.0.0");
55
+ process.exit(0);
56
+ }
57
+ else if (arg === "--") {
58
+ i++;
59
+ commandParts.push(...args.slice(i));
60
+ break;
39
61
  }
40
- catch (error) {
41
- const message = error instanceof Error ? error.message : String(error);
42
- logger.error(`Error: ${message}`);
43
- process.exit(1);
62
+ else {
63
+ commandParts.push(arg);
64
+ i++;
44
65
  }
45
- const command = commandParts.join(" ");
46
- const options = {
47
- interval,
48
- command,
49
- immediate: opts.immediate,
50
- maxRuns: opts.maxRuns,
51
- verbose: opts.verbose,
52
- };
53
- const controller = new AbortController();
54
- process.on("SIGINT", () => controller.abort());
55
- process.on("SIGTERM", () => controller.abort());
56
- await runLoop(options, logger, controller.signal);
57
- process.exit(0);
58
- });
59
- program.parse();
66
+ }
67
+ if (commandParts.length < 2) {
68
+ console.error("Error: missing required arguments");
69
+ console.error("Usage: loop-task [options] <interval> <command>");
70
+ process.exit(1);
71
+ }
72
+ const intervalStr = commandParts[0];
73
+ const cmdArgs = commandParts.slice(1);
74
+ const command = cmdArgs[0];
75
+ const commandArgs = cmdArgs.slice(1);
76
+ const logger = new Logger(loopOptions.verbose);
77
+ let interval;
78
+ try {
79
+ interval = parseDuration(intervalStr);
80
+ }
81
+ catch (error) {
82
+ const message = error instanceof Error ? error.message : String(error);
83
+ logger.error(`Error: ${message}`);
84
+ process.exit(1);
85
+ }
86
+ const options = {
87
+ interval,
88
+ command,
89
+ commandArgs,
90
+ immediate: loopOptions.immediate,
91
+ maxRuns: loopOptions.maxRuns,
92
+ verbose: loopOptions.verbose,
93
+ };
94
+ const controller = new AbortController();
95
+ process.on("SIGINT", () => controller.abort());
96
+ process.on("SIGTERM", () => controller.abort());
97
+ await runLoop(options, logger, controller.signal);
98
+ process.exit(0);
60
99
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CACV,iEAAiE,CAClE;KACA,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,YAAY,EAAE,kDAAkD,CAAC;KAC1E,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;KAC9C,MAAM,CAAC,aAAa,EAAE,gCAAgC,EAAE,KAAK,CAAC;KAC9D,MAAM,CAAC,gBAAgB,EAAE,yBAAyB,EAAE,CAAC,CAAC,EAAE,EAAE;IACzD,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1B,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,EAAE,IAAI,CAAC;KACP,MAAM,CAAC,WAAW,EAAE,wBAAwB,EAAE,KAAK,CAAC;KACpD,uBAAuB,EAAE;KACzB,kBAAkB,EAAE;KACpB,WAAW,CACV,QAAQ,EACR;;;;;;;;;CASH,CACE;KACA,MAAM,CAAC,KAAK,EAAE,WAAmB,EAAE,YAAsB,EAAE,IAA6B,EAAE,EAAE;IAC3F,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAkB,CAAC,CAAC;IAEnD,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEvC,MAAM,OAAO,GAAgB;QAC3B,QAAQ;QACR,OAAO;QACP,SAAS,EAAE,IAAI,CAAC,SAAoB;QACpC,OAAO,EAAE,IAAI,CAAC,OAAwB;QACtC,OAAO,EAAE,IAAI,CAAC,OAAkB;KACjC,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IAEzC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAEhD,MAAM,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/loop.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { LoopOptions, ExecutionResult } from "./types.js";
2
2
  import { Logger } from "./logger.js";
3
- export declare function executeCommand(command: string, logger: Logger): Promise<ExecutionResult>;
3
+ export declare function executeCommand(command: string, commandArgs: string[], logger: Logger): Promise<ExecutionResult>;
4
4
  export declare function runLoop(options: LoopOptions, logger: Logger, signal: AbortSignal): Promise<void>;
5
5
  //# sourceMappingURL=loop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAa,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAwBrC,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC,CAiC1B;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAyFf"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAa,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAwBrC,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC,CAiC1B;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAyFf"}
package/dist/loop.js CHANGED
@@ -1,4 +1,4 @@
1
- import { execaCommand } from "execa";
1
+ import { execa } from "execa";
2
2
  import { formatDuration } from "./duration.js";
3
3
  function sleep(ms, signal) {
4
4
  return new Promise((resolve, reject) => {
@@ -17,11 +17,11 @@ function sleep(ms, signal) {
17
17
  signal.addEventListener("abort", onAbort, { once: true });
18
18
  });
19
19
  }
20
- export async function executeCommand(command, logger) {
20
+ export async function executeCommand(command, commandArgs, logger) {
21
21
  const startedAt = new Date();
22
- logger.debug(`Executing: ${command}`);
22
+ logger.debug(`Executing: ${command} ${commandArgs.join(" ")}`);
23
23
  try {
24
- const result = await execaCommand(command, {
24
+ const result = await execa(command, commandArgs, {
25
25
  stdout: "inherit",
26
26
  stderr: "inherit",
27
27
  stdin: "inherit",
@@ -82,7 +82,7 @@ export async function runLoop(options, logger, signal) {
82
82
  state.running = true;
83
83
  state.runCount++;
84
84
  logger.info(`\n--- Run ${state.runCount}${options.maxRuns !== null ? `/${options.maxRuns}` : ""} ---`);
85
- const result = await executeCommand(options.command, logger);
85
+ const result = await executeCommand(options.command, options.commandArgs, logger);
86
86
  state.running = false;
87
87
  if (result.exitCode !== 0) {
88
88
  logger.error(`Command failed with exit code ${result.exitCode}`);
package/dist/loop.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export interface LoopOptions {
2
2
  interval: number;
3
3
  command: string;
4
+ commandArgs: string[];
4
5
  immediate: boolean;
5
6
  maxRuns: number | null;
6
7
  verbose: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;CACvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;CACvB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "loop-task",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "description": "A cross-platform CLI that repeatedly executes a shell command at a human-readable interval",
5
5
  "type": "module",
6
6
  "bin": {