@stacksjs/actions 0.58.57 → 0.58.59

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/src/build.js CHANGED
@@ -1,48 +1,40 @@
1
1
  // @bun
2
2
  // src/helpers/utils.ts
3
3
  import * as storage from "@stacksjs/storage";
4
- import {italic, runCommand, runCommands, underline} from "@stacksjs/cli";
4
+ import {buddyOptions, runCommand, runCommands} from "@stacksjs/cli";
5
5
  import {log} from "@stacksjs/logging";
6
6
  import * as p from "@stacksjs/path";
7
7
  import {err, handleError} from "@stacksjs/error-handling";
8
- var parseOptions = function(options) {
9
- if (!options)
10
- return "";
11
- const parsedOptions = Object.entries(options).map(([key, value]) => {
12
- if (key.length === 1)
13
- return `-${key}=${value}`;
14
- if (typeof value === "boolean" && value)
15
- return `--${key}`;
16
- return `--${key}=${typeof value === "string" && value.includes(" ") ? `"${value}"` : value}`;
17
- });
18
- return parsedOptions.filter(Boolean).join(" ").replace("----=", "");
19
- };
20
8
  async function runAction(action, options) {
21
- if (!hasAction(action))
22
- return err(handleError(`The specified action "${action}" does not exist`));
23
- const opts = parseOptions(options);
9
+ const opts = buddyOptions();
24
10
  const path = p.relativeActionsPath(`${action}.ts`);
25
- const cmd = `bun --bun ${`${path} ${opts}`}`;
26
- const o = {
11
+ const cmd = `bun --bun ${path} ${opts}`.trimEnd();
12
+ const optionsWithCwd = {
27
13
  cwd: options?.cwd || p.projectPath(),
28
14
  ...options
29
15
  };
30
- if (options?.verbose) {
31
- log.debug("Running cmd:", underline(italic(cmd)));
32
- log.debug("Running action:", underline(italic(`./actions/${action}.ts`)));
33
- log.debug("with action options of:", o);
34
- }
35
- return await runCommand(cmd, o);
16
+ log.debug("runAction:", cmd);
17
+ log.debug("action options:", optionsWithCwd);
18
+ if (!hasAction(action))
19
+ return err(handleError(`The specified action "${action}" does not exist`));
20
+ return await runCommand(cmd, optionsWithCwd);
36
21
  }
37
22
  async function runActions(actions, options) {
23
+ log.debug("runActions:", actions);
24
+ log.debug("actions options:", options);
38
25
  if (!actions.length)
39
26
  return err("No actions were specified");
40
27
  for (const action of actions) {
41
28
  if (!hasAction(action))
42
29
  return err(`The specified action "${action}" does not exist`);
43
30
  }
44
- const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)}`);
45
- return await runCommands(commands, options);
31
+ const opts = buddyOptions();
32
+ const o = {
33
+ cwd: options?.cwd || p.projectPath(),
34
+ ...options
35
+ };
36
+ const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)} ${opts}`);
37
+ return await runCommands(commands, o);
46
38
  }
47
39
  function hasAction(action) {
48
40
  if (storage.isFile(p.functionsPath(`actions/${action}.ts`)))
package/dist/src/bump.js CHANGED
@@ -1,8 +1,14 @@
1
1
  // @bun
2
2
  // src/bump.ts
3
- import {runCommand} from "@stacksjs/cli";
3
+ import {parseOptions, runCommand} from "@stacksjs/cli";
4
4
  import {path as p} from "@stacksjs/path";
5
- await runCommand("buddy changelog --quiet", {
5
+ var options = parseOptions();
6
+ var changelogCommand = options?.dryRun ? "buddy changelog --quiet --dry-run" : "buddy changelog --quiet";
7
+ await runCommand(changelogCommand, {
6
8
  cwd: p.projectPath()
7
9
  });
8
- await runCommand("bunx bumpp ./package.json ./core/**/package.json ./ide/vscode/package.json --all", { cwd: p.frameworkPath(), stdin: "inherit" });
10
+ var bumpCommand = options?.dryRun ? "bunx bumpp ./package.json ./core/**/package.json ./ide/vscode/package.json --no-push" : "bunx bumpp ./package.json ./core/**/package.json ./ide/vscode/package.json --all";
11
+ await runCommand(bumpCommand, {
12
+ cwd: p.frameworkPath(),
13
+ stdin: "inherit"
14
+ });
@@ -1,9 +1,17 @@
1
1
  // @bun
2
2
  // src/changelog.ts
3
- import {execSync, runCommand} from "@stacksjs/cli";
3
+ import {execSync, log, parseOptions, runCommand} from "@stacksjs/cli";
4
4
  import {projectPath} from "@stacksjs/path";
5
+ log.debug("Generating changelog");
5
6
  var fromRevision = await execSync("git describe --abbrev=0 --tags HEAD^");
7
+ log.debug("FromRevision", fromRevision);
6
8
  var toRevision = await execSync("git describe");
7
- await runCommand(`bunx changelogen --output CHANGELOG.md --from ${fromRevision} --to ${toRevision}`, {
8
- cwd: projectPath()
9
+ log.debug("ToRevision", toRevision);
10
+ var options = parseOptions();
11
+ log.debug("Changelog Options", options);
12
+ var command = options?.dryRun ? `bunx changelogen --no-output --from ${fromRevision} --to ${toRevision}` : `bunx changelogen --output CHANGELOG.md --from ${fromRevision} --to ${toRevision}`;
13
+ await runCommand(command, {
14
+ cwd: projectPath(),
15
+ quiet: options?.quiet,
16
+ verbose: options?.verbose
9
17
  });
@@ -1,48 +1,40 @@
1
1
  // @bun
2
2
  // src/helpers/utils.ts
3
3
  import * as storage from "@stacksjs/storage";
4
- import {italic, runCommand, runCommands, underline} from "@stacksjs/cli";
4
+ import {buddyOptions, runCommand, runCommands} from "@stacksjs/cli";
5
5
  import {log} from "@stacksjs/logging";
6
6
  import * as p from "@stacksjs/path";
7
7
  import {err, handleError} from "@stacksjs/error-handling";
8
- var parseOptions = function(options) {
9
- if (!options)
10
- return "";
11
- const parsedOptions = Object.entries(options).map(([key, value]) => {
12
- if (key.length === 1)
13
- return `-${key}=${value}`;
14
- if (typeof value === "boolean" && value)
15
- return `--${key}`;
16
- return `--${key}=${typeof value === "string" && value.includes(" ") ? `"${value}"` : value}`;
17
- });
18
- return parsedOptions.filter(Boolean).join(" ").replace("----=", "");
19
- };
20
8
  async function runAction(action, options) {
21
- if (!hasAction(action))
22
- return err(handleError(`The specified action "${action}" does not exist`));
23
- const opts = parseOptions(options);
9
+ const opts = buddyOptions();
24
10
  const path = p.relativeActionsPath(`${action}.ts`);
25
- const cmd = `bun --bun ${`${path} ${opts}`}`;
26
- const o = {
11
+ const cmd = `bun --bun ${path} ${opts}`.trimEnd();
12
+ const optionsWithCwd = {
27
13
  cwd: options?.cwd || p.projectPath(),
28
14
  ...options
29
15
  };
30
- if (options?.verbose) {
31
- log.debug("Running cmd:", underline(italic(cmd)));
32
- log.debug("Running action:", underline(italic(`./actions/${action}.ts`)));
33
- log.debug("with action options of:", o);
34
- }
35
- return await runCommand(cmd, o);
16
+ log.debug("runAction:", cmd);
17
+ log.debug("action options:", optionsWithCwd);
18
+ if (!hasAction(action))
19
+ return err(handleError(`The specified action "${action}" does not exist`));
20
+ return await runCommand(cmd, optionsWithCwd);
36
21
  }
37
22
  async function runActions(actions, options) {
23
+ log.debug("runActions:", actions);
24
+ log.debug("actions options:", options);
38
25
  if (!actions.length)
39
26
  return err("No actions were specified");
40
27
  for (const action of actions) {
41
28
  if (!hasAction(action))
42
29
  return err(`The specified action "${action}" does not exist`);
43
30
  }
44
- const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)}`);
45
- return await runCommands(commands, options);
31
+ const opts = buddyOptions();
32
+ const o = {
33
+ cwd: options?.cwd || p.projectPath(),
34
+ ...options
35
+ };
36
+ const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)} ${opts}`);
37
+ return await runCommands(commands, o);
46
38
  }
47
39
  function hasAction(action) {
48
40
  if (storage.isFile(p.functionsPath(`actions/${action}.ts`)))
@@ -1,48 +1,40 @@
1
1
  // @bun
2
2
  // src/helpers/utils.ts
3
3
  import * as storage from "@stacksjs/storage";
4
- import {italic, runCommand, runCommands, underline} from "@stacksjs/cli";
4
+ import {buddyOptions, runCommand, runCommands} from "@stacksjs/cli";
5
5
  import {log} from "@stacksjs/logging";
6
6
  import * as p from "@stacksjs/path";
7
7
  import {err, handleError} from "@stacksjs/error-handling";
8
- var parseOptions = function(options) {
9
- if (!options)
10
- return "";
11
- const parsedOptions = Object.entries(options).map(([key, value]) => {
12
- if (key.length === 1)
13
- return `-${key}=${value}`;
14
- if (typeof value === "boolean" && value)
15
- return `--${key}`;
16
- return `--${key}=${typeof value === "string" && value.includes(" ") ? `"${value}"` : value}`;
17
- });
18
- return parsedOptions.filter(Boolean).join(" ").replace("----=", "");
19
- };
20
8
  async function runAction(action, options) {
21
- if (!hasAction(action))
22
- return err(handleError(`The specified action "${action}" does not exist`));
23
- const opts = parseOptions(options);
9
+ const opts = buddyOptions();
24
10
  const path = p.relativeActionsPath(`${action}.ts`);
25
- const cmd = `bun --bun ${`${path} ${opts}`}`;
26
- const o = {
11
+ const cmd = `bun --bun ${path} ${opts}`.trimEnd();
12
+ const optionsWithCwd = {
27
13
  cwd: options?.cwd || p.projectPath(),
28
14
  ...options
29
15
  };
30
- if (options?.verbose) {
31
- log.debug("Running cmd:", underline(italic(cmd)));
32
- log.debug("Running action:", underline(italic(`./actions/${action}.ts`)));
33
- log.debug("with action options of:", o);
34
- }
35
- return await runCommand(cmd, o);
16
+ log.debug("runAction:", cmd);
17
+ log.debug("action options:", optionsWithCwd);
18
+ if (!hasAction(action))
19
+ return err(handleError(`The specified action "${action}" does not exist`));
20
+ return await runCommand(cmd, optionsWithCwd);
36
21
  }
37
22
  async function runActions(actions, options) {
23
+ log.debug("runActions:", actions);
24
+ log.debug("actions options:", options);
38
25
  if (!actions.length)
39
26
  return err("No actions were specified");
40
27
  for (const action of actions) {
41
28
  if (!hasAction(action))
42
29
  return err(`The specified action "${action}" does not exist`);
43
30
  }
44
- const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)}`);
45
- return await runCommands(commands, options);
31
+ const opts = buddyOptions();
32
+ const o = {
33
+ cwd: options?.cwd || p.projectPath(),
34
+ ...options
35
+ };
36
+ const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)} ${opts}`);
37
+ return await runCommands(commands, o);
46
38
  }
47
39
  function hasAction(action) {
48
40
  if (storage.isFile(p.functionsPath(`actions/${action}.ts`)))
@@ -1,48 +1,40 @@
1
1
  // @bun
2
2
  // src/helpers/utils.ts
3
3
  import * as storage from "@stacksjs/storage";
4
- import {italic, runCommand, runCommands, underline} from "@stacksjs/cli";
4
+ import {buddyOptions, runCommand, runCommands} from "@stacksjs/cli";
5
5
  import {log} from "@stacksjs/logging";
6
6
  import * as p from "@stacksjs/path";
7
7
  import {err, handleError} from "@stacksjs/error-handling";
8
- var parseOptions = function(options) {
9
- if (!options)
10
- return "";
11
- const parsedOptions = Object.entries(options).map(([key, value]) => {
12
- if (key.length === 1)
13
- return `-${key}=${value}`;
14
- if (typeof value === "boolean" && value)
15
- return `--${key}`;
16
- return `--${key}=${typeof value === "string" && value.includes(" ") ? `"${value}"` : value}`;
17
- });
18
- return parsedOptions.filter(Boolean).join(" ").replace("----=", "");
19
- };
20
8
  async function runAction(action, options) {
21
- if (!hasAction(action))
22
- return err(handleError(`The specified action "${action}" does not exist`));
23
- const opts = parseOptions(options);
9
+ const opts = buddyOptions();
24
10
  const path = p.relativeActionsPath(`${action}.ts`);
25
- const cmd = `bun --bun ${`${path} ${opts}`}`;
26
- const o = {
11
+ const cmd = `bun --bun ${path} ${opts}`.trimEnd();
12
+ const optionsWithCwd = {
27
13
  cwd: options?.cwd || p.projectPath(),
28
14
  ...options
29
15
  };
30
- if (options?.verbose) {
31
- log.debug("Running cmd:", underline(italic(cmd)));
32
- log.debug("Running action:", underline(italic(`./actions/${action}.ts`)));
33
- log.debug("with action options of:", o);
34
- }
35
- return await runCommand(cmd, o);
16
+ log.debug("runAction:", cmd);
17
+ log.debug("action options:", optionsWithCwd);
18
+ if (!hasAction(action))
19
+ return err(handleError(`The specified action "${action}" does not exist`));
20
+ return await runCommand(cmd, optionsWithCwd);
36
21
  }
37
22
  async function runActions(actions, options) {
23
+ log.debug("runActions:", actions);
24
+ log.debug("actions options:", options);
38
25
  if (!actions.length)
39
26
  return err("No actions were specified");
40
27
  for (const action of actions) {
41
28
  if (!hasAction(action))
42
29
  return err(`The specified action "${action}" does not exist`);
43
30
  }
44
- const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)}`);
45
- return await runCommands(commands, options);
31
+ const opts = buddyOptions();
32
+ const o = {
33
+ cwd: options?.cwd || p.projectPath(),
34
+ ...options
35
+ };
36
+ const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)} ${opts}`);
37
+ return await runCommands(commands, o);
46
38
  }
47
39
  function hasAction(action) {
48
40
  if (storage.isFile(p.functionsPath(`actions/${action}.ts`)))
@@ -1,48 +1,40 @@
1
1
  // @bun
2
2
  // src/helpers/utils.ts
3
3
  import * as storage from "@stacksjs/storage";
4
- import {italic, runCommand, runCommands, underline} from "@stacksjs/cli";
4
+ import {buddyOptions, runCommand, runCommands} from "@stacksjs/cli";
5
5
  import {log} from "@stacksjs/logging";
6
6
  import * as p from "@stacksjs/path";
7
7
  import {err, handleError} from "@stacksjs/error-handling";
8
- var parseOptions = function(options) {
9
- if (!options)
10
- return "";
11
- const parsedOptions = Object.entries(options).map(([key, value]) => {
12
- if (key.length === 1)
13
- return `-${key}=${value}`;
14
- if (typeof value === "boolean" && value)
15
- return `--${key}`;
16
- return `--${key}=${typeof value === "string" && value.includes(" ") ? `"${value}"` : value}`;
17
- });
18
- return parsedOptions.filter(Boolean).join(" ").replace("----=", "");
19
- };
20
8
  async function runAction(action, options) {
21
- if (!hasAction(action))
22
- return err(handleError(`The specified action "${action}" does not exist`));
23
- const opts = parseOptions(options);
9
+ const opts = buddyOptions();
24
10
  const path = p.relativeActionsPath(`${action}.ts`);
25
- const cmd = `bun --bun ${`${path} ${opts}`}`;
26
- const o = {
11
+ const cmd = `bun --bun ${path} ${opts}`.trimEnd();
12
+ const optionsWithCwd = {
27
13
  cwd: options?.cwd || p.projectPath(),
28
14
  ...options
29
15
  };
30
- if (options?.verbose) {
31
- log.debug("Running cmd:", underline(italic(cmd)));
32
- log.debug("Running action:", underline(italic(`./actions/${action}.ts`)));
33
- log.debug("with action options of:", o);
34
- }
35
- return await runCommand(cmd, o);
16
+ log.debug("runAction:", cmd);
17
+ log.debug("action options:", optionsWithCwd);
18
+ if (!hasAction(action))
19
+ return err(handleError(`The specified action "${action}" does not exist`));
20
+ return await runCommand(cmd, optionsWithCwd);
36
21
  }
37
22
  async function runActions(actions, options) {
23
+ log.debug("runActions:", actions);
24
+ log.debug("actions options:", options);
38
25
  if (!actions.length)
39
26
  return err("No actions were specified");
40
27
  for (const action of actions) {
41
28
  if (!hasAction(action))
42
29
  return err(`The specified action "${action}" does not exist`);
43
30
  }
44
- const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)}`);
45
- return await runCommands(commands, options);
31
+ const opts = buddyOptions();
32
+ const o = {
33
+ cwd: options?.cwd || p.projectPath(),
34
+ ...options
35
+ };
36
+ const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)} ${opts}`);
37
+ return await runCommands(commands, o);
46
38
  }
47
39
  function hasAction(action) {
48
40
  if (storage.isFile(p.functionsPath(`actions/${action}.ts`)))
package/dist/src/index.js CHANGED
@@ -1,48 +1,40 @@
1
1
  // @bun
2
2
  // src/helpers/utils.ts
3
3
  import * as storage from "@stacksjs/storage";
4
- import {italic, runCommand, runCommands, underline} from "@stacksjs/cli";
4
+ import {buddyOptions, runCommand, runCommands} from "@stacksjs/cli";
5
5
  import {log} from "@stacksjs/logging";
6
6
  import * as p from "@stacksjs/path";
7
7
  import {err, handleError} from "@stacksjs/error-handling";
8
- var parseOptions = function(options) {
9
- if (!options)
10
- return "";
11
- const parsedOptions = Object.entries(options).map(([key, value]) => {
12
- if (key.length === 1)
13
- return `-${key}=${value}`;
14
- if (typeof value === "boolean" && value)
15
- return `--${key}`;
16
- return `--${key}=${typeof value === "string" && value.includes(" ") ? `"${value}"` : value}`;
17
- });
18
- return parsedOptions.filter(Boolean).join(" ").replace("----=", "");
19
- };
20
8
  async function runAction(action, options) {
21
- if (!hasAction(action))
22
- return err(handleError(`The specified action "${action}" does not exist`));
23
- const opts = parseOptions(options);
9
+ const opts = buddyOptions();
24
10
  const path = p.relativeActionsPath(`${action}.ts`);
25
- const cmd = `bun --bun ${`${path} ${opts}`}`;
26
- const o = {
11
+ const cmd = `bun --bun ${path} ${opts}`.trimEnd();
12
+ const optionsWithCwd = {
27
13
  cwd: options?.cwd || p.projectPath(),
28
14
  ...options
29
15
  };
30
- if (options?.verbose) {
31
- log.debug("Running cmd:", underline(italic(cmd)));
32
- log.debug("Running action:", underline(italic(`./actions/${action}.ts`)));
33
- log.debug("with action options of:", o);
34
- }
35
- return await runCommand(cmd, o);
16
+ log.debug("runAction:", cmd);
17
+ log.debug("action options:", optionsWithCwd);
18
+ if (!hasAction(action))
19
+ return err(handleError(`The specified action "${action}" does not exist`));
20
+ return await runCommand(cmd, optionsWithCwd);
36
21
  }
37
22
  async function runActions(actions, options) {
23
+ log.debug("runActions:", actions);
24
+ log.debug("actions options:", options);
38
25
  if (!actions.length)
39
26
  return err("No actions were specified");
40
27
  for (const action of actions) {
41
28
  if (!hasAction(action))
42
29
  return err(`The specified action "${action}" does not exist`);
43
30
  }
44
- const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)}`);
45
- return await runCommands(commands, options);
31
+ const opts = buddyOptions();
32
+ const o = {
33
+ cwd: options?.cwd || p.projectPath(),
34
+ ...options
35
+ };
36
+ const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)} ${opts}`);
37
+ return await runCommands(commands, o);
46
38
  }
47
39
  function hasAction(action) {
48
40
  if (storage.isFile(p.functionsPath(`actions/${action}.ts`)))
@@ -254,7 +246,7 @@ async function installPackages(names) {
254
246
 
255
247
  // src/make.ts
256
248
  import process3 from "process";
257
- import {italic as italic2} from "@stacksjs/cli";
249
+ import {italic} from "@stacksjs/cli";
258
250
  import {log as log6} from "@stacksjs/logging";
259
251
  import {createFolder, doesFolderExist, writeTextFile} from "@stacksjs/storage";
260
252
  import {frameworkPath as frameworkPath2, projectPath as projectPath3, resolve} from "@stacksjs/path";
@@ -282,7 +274,7 @@ async function makeComponent(options) {
282
274
  const name = options.name;
283
275
  log6.info("Creating your component...");
284
276
  await createComponent(options);
285
- log6.success(`Created ${italic2(name)} component`);
277
+ log6.success(`Created ${italic(name)} component`);
286
278
  } catch (error) {
287
279
  log6.error("There was an error creating your component", error);
288
280
  process3.exit();
@@ -308,9 +300,9 @@ console.log('Hello World component created')
308
300
  function makeDatabase(options) {
309
301
  try {
310
302
  const name = options.name;
311
- log6.info(`Creating your ${italic2(name)} database...`);
303
+ log6.info(`Creating your ${italic(name)} database...`);
312
304
  createDatabase(options);
313
- log6.success(`Created ${italic2(name)} database`);
305
+ log6.success(`Created ${italic(name)} database`);
314
306
  } catch (error) {
315
307
  log6.error("There was an error creating your database", error);
316
308
  process3.exit();
@@ -322,9 +314,9 @@ function createDatabase(options) {
322
314
  function factory(options) {
323
315
  try {
324
316
  const name = options.name;
325
- log6.info(`Creating your ${italic2(name)} factory...`);
317
+ log6.info(`Creating your ${italic(name)} factory...`);
326
318
  createDatabase(options);
327
- log6.success(`Created ${italic2(name)} factory`);
319
+ log6.success(`Created ${italic(name)} factory`);
328
320
  } catch (error) {
329
321
  log6.error("There was an error creating your factory", error);
330
322
  process3.exit();
@@ -336,9 +328,9 @@ function createFactory(options) {
336
328
  async function makeNotification(options) {
337
329
  try {
338
330
  const name = options.name;
339
- log6.info(`Creating your ${italic2(name)} notification...`);
331
+ log6.info(`Creating your ${italic(name)} notification...`);
340
332
  await createNotification(options);
341
- log6.success(`Created ${italic2(name)} notification`);
333
+ log6.success(`Created ${italic(name)} notification`);
342
334
  } catch (error) {
343
335
  log6.error("There was an error creating your notification", error);
344
336
  process3.exit();
@@ -526,12 +518,18 @@ export default <Model> {
526
518
  class Action3 {
527
519
  name;
528
520
  description;
529
- longRunning;
521
+ rate;
522
+ tries;
523
+ backoff;
524
+ enabled;
530
525
  handle;
531
- constructor({ name, description, handle }) {
526
+ constructor({ name, description, handle, rate, tries, backoff, enabled }) {
532
527
  this.name = name;
533
528
  this.description = description;
534
- this.longRunning = false;
529
+ this.rate = rate;
530
+ this.tries = tries;
531
+ this.backoff = backoff;
532
+ this.enabled = enabled;
535
533
  this.handle = handle;
536
534
  }
537
535
  }
@@ -1,8 +1,9 @@
1
1
  // @bun
2
2
  // src/lint/fix.ts
3
- import {log, runCommands} from "@stacksjs/cli";
3
+ import {log, parseOptions, runCommand} from "@stacksjs/cli";
4
4
  import {projectPath} from "@stacksjs/path";
5
5
  import {NpmScript} from "@stacksjs/enums";
6
6
  log.info("Ensuring Code Style...");
7
- await runCommands([NpmScript.LintFix], { cwd: projectPath() });
7
+ var options = parseOptions();
8
+ await runCommand(NpmScript.LintFix, { cwd: projectPath() }, options);
8
9
  log.success("Linted");
@@ -3,48 +3,40 @@
3
3
 
4
4
  // src/helpers/utils.ts
5
5
  import * as storage from "@stacksjs/storage";
6
- import {italic, runCommand, runCommands, underline} from "@stacksjs/cli";
6
+ import {buddyOptions, runCommand, runCommands} from "@stacksjs/cli";
7
7
  import {log} from "@stacksjs/logging";
8
8
  import * as p from "@stacksjs/path";
9
9
  import {err, handleError} from "@stacksjs/error-handling";
10
- var parseOptions = function(options) {
11
- if (!options)
12
- return "";
13
- const parsedOptions = Object.entries(options).map(([key, value]) => {
14
- if (key.length === 1)
15
- return `-${key}=${value}`;
16
- if (typeof value === "boolean" && value)
17
- return `--${key}`;
18
- return `--${key}=${typeof value === "string" && value.includes(" ") ? `"${value}"` : value}`;
19
- });
20
- return parsedOptions.filter(Boolean).join(" ").replace("----=", "");
21
- };
22
10
  async function runAction(action, options) {
23
- if (!hasAction(action))
24
- return err(handleError(`The specified action "${action}" does not exist`));
25
- const opts = parseOptions(options);
11
+ const opts = buddyOptions();
26
12
  const path = p.relativeActionsPath(`${action}.ts`);
27
- const cmd = `bun --bun ${`${path} ${opts}`}`;
28
- const o = {
13
+ const cmd = `bun --bun ${path} ${opts}`.trimEnd();
14
+ const optionsWithCwd = {
29
15
  cwd: options?.cwd || p.projectPath(),
30
16
  ...options
31
17
  };
32
- if (options?.verbose) {
33
- log.debug("Running cmd:", underline(italic(cmd)));
34
- log.debug("Running action:", underline(italic(`./actions/${action}.ts`)));
35
- log.debug("with action options of:", o);
36
- }
37
- return await runCommand(cmd, o);
18
+ log.debug("runAction:", cmd);
19
+ log.debug("action options:", optionsWithCwd);
20
+ if (!hasAction(action))
21
+ return err(handleError(`The specified action "${action}" does not exist`));
22
+ return await runCommand(cmd, optionsWithCwd);
38
23
  }
39
24
  async function runActions(actions, options) {
25
+ log.debug("runActions:", actions);
26
+ log.debug("actions options:", options);
40
27
  if (!actions.length)
41
28
  return err("No actions were specified");
42
29
  for (const action of actions) {
43
30
  if (!hasAction(action))
44
31
  return err(`The specified action "${action}" does not exist`);
45
32
  }
46
- const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)}`);
47
- return await runCommands(commands, options);
33
+ const opts = buddyOptions();
34
+ const o = {
35
+ cwd: options?.cwd || p.projectPath(),
36
+ ...options
37
+ };
38
+ const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)} ${opts}`);
39
+ return await runCommands(commands, o);
48
40
  }
49
41
  function hasAction(action) {
50
42
  if (storage.isFile(p.functionsPath(`actions/${action}.ts`)))
@@ -256,7 +248,7 @@ async function installPackages(names) {
256
248
 
257
249
  // src/make.ts
258
250
  import process3 from "process";
259
- import {italic as italic2} from "@stacksjs/cli";
251
+ import {italic} from "@stacksjs/cli";
260
252
  import {log as log6} from "@stacksjs/logging";
261
253
  import {createFolder, doesFolderExist, writeTextFile} from "@stacksjs/storage";
262
254
  import {frameworkPath as frameworkPath2, projectPath as projectPath3, resolve} from "@stacksjs/path";
@@ -284,7 +276,7 @@ async function makeComponent(options) {
284
276
  const name = options.name;
285
277
  log6.info("Creating your component...");
286
278
  await createComponent(options);
287
- log6.success(`Created ${italic2(name)} component`);
279
+ log6.success(`Created ${italic(name)} component`);
288
280
  } catch (error) {
289
281
  log6.error("There was an error creating your component", error);
290
282
  process3.exit();
@@ -310,9 +302,9 @@ console.log('Hello World component created')
310
302
  function makeDatabase(options) {
311
303
  try {
312
304
  const name = options.name;
313
- log6.info(`Creating your ${italic2(name)} database...`);
305
+ log6.info(`Creating your ${italic(name)} database...`);
314
306
  createDatabase(options);
315
- log6.success(`Created ${italic2(name)} database`);
307
+ log6.success(`Created ${italic(name)} database`);
316
308
  } catch (error) {
317
309
  log6.error("There was an error creating your database", error);
318
310
  process3.exit();
@@ -324,9 +316,9 @@ function createDatabase(options) {
324
316
  function factory(options) {
325
317
  try {
326
318
  const name = options.name;
327
- log6.info(`Creating your ${italic2(name)} factory...`);
319
+ log6.info(`Creating your ${italic(name)} factory...`);
328
320
  createDatabase(options);
329
- log6.success(`Created ${italic2(name)} factory`);
321
+ log6.success(`Created ${italic(name)} factory`);
330
322
  } catch (error) {
331
323
  log6.error("There was an error creating your factory", error);
332
324
  process3.exit();
@@ -338,9 +330,9 @@ function createFactory(options) {
338
330
  async function makeNotification(options) {
339
331
  try {
340
332
  const name = options.name;
341
- log6.info(`Creating your ${italic2(name)} notification...`);
333
+ log6.info(`Creating your ${italic(name)} notification...`);
342
334
  await createNotification(options);
343
- log6.success(`Created ${italic2(name)} notification`);
335
+ log6.success(`Created ${italic(name)} notification`);
344
336
  } catch (error) {
345
337
  log6.error("There was an error creating your notification", error);
346
338
  process3.exit();
@@ -528,12 +520,18 @@ export default <Model> {
528
520
  class Action3 {
529
521
  name;
530
522
  description;
531
- longRunning;
523
+ rate;
524
+ tries;
525
+ backoff;
526
+ enabled;
532
527
  handle;
533
- constructor({ name, description, handle }) {
528
+ constructor({ name, description, handle, rate, tries, backoff, enabled }) {
534
529
  this.name = name;
535
530
  this.description = description;
536
- this.longRunning = false;
531
+ this.rate = rate;
532
+ this.tries = tries;
533
+ this.backoff = backoff;
534
+ this.enabled = enabled;
537
535
  this.handle = handle;
538
536
  }
539
537
  }
@@ -546,5 +544,8 @@ await runActions([
546
544
  Action4.GenerateLibraryEntries,
547
545
  Action4.LintFix,
548
546
  Action4.Bump
549
- ], { cwd: projectPath4(), stdin: "inherit" });
547
+ ], {
548
+ cwd: projectPath4(),
549
+ stdin: "inherit"
550
+ });
550
551
  log7.success(`Successfully released ${app.name}`);
@@ -1,48 +1,40 @@
1
1
  // @bun
2
2
  // src/helpers/utils.ts
3
3
  import * as storage from "@stacksjs/storage";
4
- import {italic, runCommand, runCommands, underline} from "@stacksjs/cli";
4
+ import {buddyOptions, runCommand, runCommands} from "@stacksjs/cli";
5
5
  import {log} from "@stacksjs/logging";
6
6
  import * as p from "@stacksjs/path";
7
7
  import {err, handleError} from "@stacksjs/error-handling";
8
- var parseOptions = function(options) {
9
- if (!options)
10
- return "";
11
- const parsedOptions = Object.entries(options).map(([key, value]) => {
12
- if (key.length === 1)
13
- return `-${key}=${value}`;
14
- if (typeof value === "boolean" && value)
15
- return `--${key}`;
16
- return `--${key}=${typeof value === "string" && value.includes(" ") ? `"${value}"` : value}`;
17
- });
18
- return parsedOptions.filter(Boolean).join(" ").replace("----=", "");
19
- };
20
8
  async function runAction(action, options) {
21
- if (!hasAction(action))
22
- return err(handleError(`The specified action "${action}" does not exist`));
23
- const opts = parseOptions(options);
9
+ const opts = buddyOptions();
24
10
  const path = p.relativeActionsPath(`${action}.ts`);
25
- const cmd = `bun --bun ${`${path} ${opts}`}`;
26
- const o = {
11
+ const cmd = `bun --bun ${path} ${opts}`.trimEnd();
12
+ const optionsWithCwd = {
27
13
  cwd: options?.cwd || p.projectPath(),
28
14
  ...options
29
15
  };
30
- if (options?.verbose) {
31
- log.debug("Running cmd:", underline(italic(cmd)));
32
- log.debug("Running action:", underline(italic(`./actions/${action}.ts`)));
33
- log.debug("with action options of:", o);
34
- }
35
- return await runCommand(cmd, o);
16
+ log.debug("runAction:", cmd);
17
+ log.debug("action options:", optionsWithCwd);
18
+ if (!hasAction(action))
19
+ return err(handleError(`The specified action "${action}" does not exist`));
20
+ return await runCommand(cmd, optionsWithCwd);
36
21
  }
37
22
  async function runActions(actions, options) {
23
+ log.debug("runActions:", actions);
24
+ log.debug("actions options:", options);
38
25
  if (!actions.length)
39
26
  return err("No actions were specified");
40
27
  for (const action of actions) {
41
28
  if (!hasAction(action))
42
29
  return err(`The specified action "${action}" does not exist`);
43
30
  }
44
- const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)}`);
45
- return await runCommands(commands, options);
31
+ const opts = buddyOptions();
32
+ const o = {
33
+ cwd: options?.cwd || p.projectPath(),
34
+ ...options
35
+ };
36
+ const commands = actions.map((action) => `bun --bun ${p.relativeActionsPath(`${action}.ts`)} ${opts}`);
37
+ return await runCommands(commands, o);
46
38
  }
47
39
  function hasAction(action) {
48
40
  if (storage.isFile(p.functionsPath(`actions/${action}.ts`)))
@@ -6,7 +6,7 @@ import {log} from "@stacksjs/logging";
6
6
  import {projectPath} from "@stacksjs/path";
7
7
  import * as storage from "@stacksjs/storage";
8
8
  // package.json
9
- var version = "0.58.57";
9
+ var version = "0.58.59";
10
10
 
11
11
  // src/upgrade.ts
12
12
  function checkForUncommittedChanges(options2) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stacksjs/actions",
3
3
  "type": "module",
4
- "version": "0.58.57",
4
+ "version": "0.58.59",
5
5
  "description": "The Stacks actions.",
6
6
  "author": "Chris Breuer",
7
7
  "license": "MIT",
package/src/action.ts CHANGED
@@ -1,13 +1,21 @@
1
+ import type { JobOptions } from '@stacksjs/types'
2
+
1
3
  export class Action {
2
4
  name: string
3
5
  description: string
4
- longRunning: boolean
6
+ rate: JobOptions['rate']
7
+ tries: JobOptions['tries']
8
+ backoff: JobOptions['backoff']
9
+ enabled: JobOptions['enabled']
5
10
  handle: () => Promise<string>
6
11
 
7
- constructor({ name, description, handle }: { name: string, description: string, handle: () => Promise<string> }) {
12
+ constructor({ name, description, handle, rate, tries, backoff, enabled }: { name: string, description: string, handle: () => Promise<string>, rate: JobOptions['rate'], tries: JobOptions['tries'], backoff: JobOptions['backoff'], enabled: JobOptions['enabled'] }) {
8
13
  this.name = name
9
14
  this.description = description
10
- this.longRunning = false // TODO: Implement long running actions
15
+ this.rate = rate
16
+ this.tries = tries
17
+ this.backoff = backoff
18
+ this.enabled = enabled
11
19
  this.handle = handle
12
20
  }
13
21
  }
package/src/bump.ts CHANGED
@@ -1,11 +1,18 @@
1
- import { runCommand } from '@stacksjs/cli'
1
+ import { parseOptions, runCommand } from '@stacksjs/cli'
2
2
  import { path as p } from '@stacksjs/path'
3
3
 
4
- await runCommand('buddy changelog --quiet', {
4
+ const options = parseOptions()
5
+ const changelogCommand = options?.dryRun ? 'buddy changelog --quiet --dry-run' : 'buddy changelog --quiet'
6
+
7
+ await runCommand(changelogCommand, {
5
8
  cwd: p.projectPath(),
6
9
  })
7
10
 
8
- await runCommand(
9
- 'bunx bumpp ./package.json ./core/**/package.json ./ide/vscode/package.json --all',
10
- { cwd: p.frameworkPath(), stdin: 'inherit' },
11
- )
11
+ const bumpCommand = options?.dryRun
12
+ ? 'bunx bumpp ./package.json ./core/**/package.json ./ide/vscode/package.json --no-push'
13
+ : 'bunx bumpp ./package.json ./core/**/package.json ./ide/vscode/package.json --all'
14
+
15
+ await runCommand(bumpCommand, {
16
+ cwd: p.frameworkPath(),
17
+ stdin: 'inherit',
18
+ })
package/src/changelog.ts CHANGED
@@ -1,11 +1,21 @@
1
- import { execSync, runCommand } from '@stacksjs/cli'
1
+ import { execSync, log, parseOptions, runCommand } from '@stacksjs/cli'
2
2
  import { projectPath } from '@stacksjs/path'
3
3
 
4
+ // when log.debug is used, only log to file in production
5
+ log.debug('Generating changelog')
4
6
  const fromRevision = await execSync('git describe --abbrev=0 --tags HEAD^')
5
- // console.log('fromRevision', fromRevision)
7
+ log.debug('FromRevision', fromRevision)
6
8
  const toRevision = await execSync('git describe')
7
- // console.log('toRevision', toRevision)
9
+ log.debug('ToRevision', toRevision)
10
+ const options = parseOptions()
11
+ log.debug('Changelog Options', options)
8
12
 
9
- await runCommand(`bunx changelogen --output CHANGELOG.md --from ${fromRevision} --to ${toRevision}`, {
13
+ const command = options?.dryRun
14
+ ? `bunx changelogen --no-output --from ${fromRevision} --to ${toRevision}`
15
+ : `bunx changelogen --output CHANGELOG.md --from ${fromRevision} --to ${toRevision}`
16
+
17
+ await runCommand(command, {
10
18
  cwd: projectPath(),
19
+ quiet: options?.quiet,
20
+ verbose: options?.verbose,
11
21
  })
@@ -1,29 +1,10 @@
1
1
  import * as storage from '@stacksjs/storage'
2
- import { italic, runCommand, runCommands, underline } from '@stacksjs/cli'
2
+ import { buddyOptions, runCommand, runCommands } from '@stacksjs/cli'
3
3
  import { log } from '@stacksjs/logging'
4
4
  import * as p from '@stacksjs/path'
5
5
  import type { ActionOptions, StacksError, Subprocess } from '@stacksjs/types'
6
- import { type Result, err, handleError } from '@stacksjs/error-handling'
7
-
8
- function parseOptions(options?: ActionOptions) {
9
- if (!options)
10
- return ''
11
-
12
- const parsedOptions = Object.entries(options).map(([key, value]) => {
13
- if (key.length === 1)
14
- return `-${key}=${value}`
15
-
16
- if (typeof value === 'boolean' && value) // if the value is `true`, just return the key
17
- return `--${key}`
18
-
19
- return `--${key}=${typeof value === 'string' && value.includes(' ') ? `"${value}"` : value}`
20
- })
21
-
22
- // filter out undefined values and join the array
23
- return parsedOptions.filter(Boolean).join(' ').replace('----=', '')
24
- }
25
-
26
- // export type ActionResult = CommandResult
6
+ import type { Result } from '@stacksjs/error-handling'
7
+ import { err, handleError } from '@stacksjs/error-handling'
27
8
 
28
9
  /**
29
10
  * Run an Action the Stacks way.
@@ -33,24 +14,21 @@ function parseOptions(options?: ActionOptions) {
33
14
  * @returns The result of the command.
34
15
  */
35
16
  export async function runAction(action: string, options?: ActionOptions): Promise<Result<Subprocess, StacksError>> {
36
- if (!hasAction(action))
37
- return err(handleError(`The specified action "${action}" does not exist`))
38
-
39
- const opts = parseOptions(options)
17
+ const opts = buddyOptions()
40
18
  const path = p.relativeActionsPath(`${action}.ts`)
41
- const cmd = `bun --bun ${`${path} ${opts}`}`
42
- const o = {
19
+ const cmd = `bun --bun ${path} ${opts}`.trimEnd()
20
+ const optionsWithCwd = {
43
21
  cwd: options?.cwd || p.projectPath(),
44
22
  ...options,
45
23
  }
46
24
 
47
- if (options?.verbose) {
48
- log.debug('Running cmd:', underline(italic(cmd)))
49
- log.debug('Running action:', underline(italic(`./actions/${action}.ts`)))
50
- log.debug('with action options of:', o)
51
- }
25
+ log.debug('runAction:', cmd)
26
+ log.debug('action options:', optionsWithCwd)
27
+
28
+ if (!hasAction(action))
29
+ return err(handleError(`The specified action "${action}" does not exist`))
52
30
 
53
- return await runCommand(cmd, o)
31
+ return await runCommand(cmd, optionsWithCwd)
54
32
  }
55
33
 
56
34
  /**
@@ -61,6 +39,9 @@ export async function runAction(action: string, options?: ActionOptions): Promis
61
39
  * @returns The result of the command.
62
40
  */
63
41
  export async function runActions(actions: string[], options?: ActionOptions) {
42
+ log.debug('runActions:', actions)
43
+ log.debug('actions options:', options)
44
+
64
45
  if (!actions.length)
65
46
  return err('No actions were specified')
66
47
 
@@ -69,9 +50,16 @@ export async function runActions(actions: string[], options?: ActionOptions) {
69
50
  return err(`The specified action "${action}" does not exist`)
70
51
  }
71
52
 
72
- const commands = actions.map(action => `bun --bun ${p.relativeActionsPath(`${action}.ts`)}`)
53
+ const opts = buddyOptions()
54
+
55
+ const o = {
56
+ cwd: options?.cwd || p.projectPath(),
57
+ ...options,
58
+ }
59
+
60
+ const commands = actions.map(action => `bun --bun ${p.relativeActionsPath(`${action}.ts`)} ${opts}`)
73
61
 
74
- return await runCommands(commands, options)
62
+ return await runCommands(commands, o)
75
63
  }
76
64
 
77
65
  export function hasAction(action: string) {
package/src/lint/fix.ts CHANGED
@@ -1,7 +1,8 @@
1
- import { log, runCommands } from '@stacksjs/cli'
1
+ import { log, parseOptions, runCommand } from '@stacksjs/cli'
2
2
  import { projectPath } from '@stacksjs/path'
3
3
  import { NpmScript } from '@stacksjs/enums'
4
4
 
5
5
  log.info('Ensuring Code Style...')
6
- await runCommands([NpmScript.LintFix], { cwd: projectPath() })
6
+ const options = parseOptions()
7
+ await runCommand(NpmScript.LintFix, { cwd: projectPath() }, options)
7
8
  log.success('Linted')
package/src/release.ts CHANGED
@@ -10,6 +10,9 @@ await runActions([
10
10
  Action.LintFix, // ensure there are no lint errors
11
11
  // Action.Test, // run the tests
12
12
  Action.Bump, // bump the versions, create the git tag, generate the changelog, commit & push the changes
13
- ], { cwd: projectPath(), stdin: 'inherit' }) // debug mode needs to be enabled to see the output due to the interactive prompts
13
+ ], { // debug mode needs to be enabled to see the output due to the interactive prompts
14
+ cwd: projectPath(),
15
+ stdin: 'inherit',
16
+ })
14
17
 
15
18
  log.success(`Successfully released ${app.name}`)