@cartesi/cli 2.0.0-alpha.2 → 2.0.0-alpha.20

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 (170) hide show
  1. package/dist/base.d.ts +28 -0
  2. package/dist/base.d.ts.map +1 -0
  3. package/dist/base.js +109 -0
  4. package/dist/builder/directory.d.ts +2 -2
  5. package/dist/builder/directory.d.ts.map +1 -1
  6. package/dist/builder/directory.js +5 -3
  7. package/dist/builder/docker.d.ts +2 -2
  8. package/dist/builder/docker.d.ts.map +1 -1
  9. package/dist/builder/docker.js +39 -37
  10. package/dist/builder/empty.d.ts +1 -1
  11. package/dist/builder/empty.d.ts.map +1 -1
  12. package/dist/builder/empty.js +1 -1
  13. package/dist/builder/none.d.ts +1 -1
  14. package/dist/builder/none.d.ts.map +1 -1
  15. package/dist/builder/none.js +1 -1
  16. package/dist/builder/tar.d.ts +1 -1
  17. package/dist/builder/tar.d.ts.map +1 -1
  18. package/dist/builder/tar.js +1 -1
  19. package/dist/commands/address-book.d.ts +5 -8
  20. package/dist/commands/address-book.d.ts.map +1 -1
  21. package/dist/commands/address-book.js +18 -14
  22. package/dist/commands/build.d.ts +7 -11
  23. package/dist/commands/build.d.ts.map +1 -1
  24. package/dist/commands/build.js +82 -58
  25. package/dist/commands/clean.d.ts +2 -7
  26. package/dist/commands/clean.d.ts.map +1 -1
  27. package/dist/commands/clean.js +9 -10
  28. package/dist/commands/create.d.ts +6 -15
  29. package/dist/commands/create.d.ts.map +1 -1
  30. package/dist/commands/create.js +25 -54
  31. package/dist/commands/deploy/build.d.ts +2 -14
  32. package/dist/commands/deploy/build.d.ts.map +1 -1
  33. package/dist/commands/deploy/build.js +8 -61
  34. package/dist/commands/deploy.d.ts +3 -0
  35. package/dist/commands/deploy.d.ts.map +1 -0
  36. package/dist/commands/deploy.js +12 -0
  37. package/dist/commands/deposit/erc1155.d.ts +18 -0
  38. package/dist/commands/deposit/erc1155.d.ts.map +1 -0
  39. package/dist/commands/deposit/erc1155.js +254 -0
  40. package/dist/commands/deposit/erc20.d.ts +10 -0
  41. package/dist/commands/deposit/erc20.d.ts.map +1 -0
  42. package/dist/commands/deposit/erc20.js +125 -0
  43. package/dist/commands/deposit/erc721.d.ts +10 -0
  44. package/dist/commands/deposit/erc721.d.ts.map +1 -0
  45. package/dist/commands/deposit/erc721.js +143 -0
  46. package/dist/commands/deposit/ether.d.ts +10 -0
  47. package/dist/commands/deposit/ether.d.ts.map +1 -0
  48. package/dist/commands/deposit/ether.js +65 -0
  49. package/dist/commands/deposit.d.ts +9 -0
  50. package/dist/commands/deposit.d.ts.map +1 -0
  51. package/dist/commands/deposit.js +37 -0
  52. package/dist/commands/doctor.d.ts +2 -12
  53. package/dist/commands/doctor.d.ts.map +1 -1
  54. package/dist/commands/doctor.js +90 -91
  55. package/dist/commands/hash.d.ts +4 -9
  56. package/dist/commands/hash.d.ts.map +1 -1
  57. package/dist/commands/hash.js +14 -14
  58. package/dist/commands/logs.d.ts +9 -0
  59. package/dist/commands/logs.d.ts.map +1 -0
  60. package/dist/commands/logs.js +34 -0
  61. package/dist/commands/run.d.ts +14 -20
  62. package/dist/commands/run.d.ts.map +1 -1
  63. package/dist/commands/run.js +193 -182
  64. package/dist/commands/send.d.ts +10 -0
  65. package/dist/commands/send.d.ts.map +1 -0
  66. package/dist/commands/send.js +130 -0
  67. package/dist/commands/shell.d.ts +6 -14
  68. package/dist/commands/shell.d.ts.map +1 -1
  69. package/dist/commands/shell.js +34 -51
  70. package/dist/commands/status.d.ts +6 -0
  71. package/dist/commands/status.d.ts.map +1 -0
  72. package/dist/commands/status.js +50 -0
  73. package/dist/compose/default.env +36 -0
  74. package/dist/compose/docker-compose-anvil.yaml +39 -0
  75. package/dist/compose/docker-compose-bundler.yaml +71 -0
  76. package/dist/{node → compose}/docker-compose-database.yaml +4 -2
  77. package/dist/compose/docker-compose-explorer.yaml +96 -0
  78. package/dist/compose/docker-compose-graphql.yaml +38 -0
  79. package/dist/compose/docker-compose-node-cpus.yaml +6 -0
  80. package/dist/compose/docker-compose-node-memory.yaml +6 -0
  81. package/dist/compose/docker-compose-node.yaml +50 -0
  82. package/dist/compose/docker-compose-passkey-server.yaml +37 -0
  83. package/dist/compose/docker-compose-paymaster.yaml +40 -0
  84. package/dist/compose/docker-compose-proxy.yaml +24 -0
  85. package/dist/config.d.ts +30 -9
  86. package/dist/config.d.ts.map +1 -1
  87. package/dist/config.js +93 -53
  88. package/dist/contracts.d.ts +1695 -1636
  89. package/dist/contracts.d.ts.map +1 -1
  90. package/dist/contracts.js +632 -592
  91. package/dist/exec/cartesi-machine.d.ts +2 -2
  92. package/dist/exec/cartesi-machine.d.ts.map +1 -1
  93. package/dist/exec/cartesi-machine.js +3 -5
  94. package/dist/exec/genext2fs.d.ts +6 -3
  95. package/dist/exec/genext2fs.d.ts.map +1 -1
  96. package/dist/exec/genext2fs.js +5 -5
  97. package/dist/exec/index.d.ts +0 -1
  98. package/dist/exec/index.d.ts.map +1 -1
  99. package/dist/exec/index.js +0 -1
  100. package/dist/exec/mksquashfs.d.ts +2 -2
  101. package/dist/exec/mksquashfs.d.ts.map +1 -1
  102. package/dist/exec/mksquashfs.js +4 -2
  103. package/dist/exec/rollups.d.ts +105 -0
  104. package/dist/exec/rollups.d.ts.map +1 -0
  105. package/dist/exec/rollups.js +383 -0
  106. package/dist/exec/util.d.ts +1 -16
  107. package/dist/exec/util.d.ts.map +1 -1
  108. package/dist/exec/util.js +3 -50
  109. package/dist/index.d.ts +2 -1
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js +57 -1
  112. package/dist/machine.d.ts +8 -2
  113. package/dist/machine.d.ts.map +1 -1
  114. package/dist/machine.js +26 -16
  115. package/dist/prompts.d.ts +13 -2
  116. package/dist/prompts.d.ts.map +1 -1
  117. package/dist/prompts.js +60 -26
  118. package/dist/template.d.ts +3 -0
  119. package/dist/template.d.ts.map +1 -0
  120. package/dist/template.js +16 -0
  121. package/dist/wallet.d.ts +9222 -21
  122. package/dist/wallet.d.ts.map +1 -1
  123. package/dist/wallet.js +35 -198
  124. package/package.json +39 -57
  125. package/bin/dev.cmd +0 -3
  126. package/bin/dev.js +0 -25
  127. package/bin/run.cmd +0 -3
  128. package/bin/run.js +0 -8
  129. package/dist/baseCommand.d.ts +0 -22
  130. package/dist/baseCommand.d.ts.map +0 -1
  131. package/dist/baseCommand.js +0 -92
  132. package/dist/commands/deploy/index.d.ts +0 -12
  133. package/dist/commands/deploy/index.d.ts.map +0 -1
  134. package/dist/commands/deploy/index.js +0 -78
  135. package/dist/commands/send/erc20.d.ts +0 -14
  136. package/dist/commands/send/erc20.d.ts.map +0 -1
  137. package/dist/commands/send/erc20.js +0 -70
  138. package/dist/commands/send/erc721.d.ts +0 -14
  139. package/dist/commands/send/erc721.d.ts.map +0 -1
  140. package/dist/commands/send/erc721.js +0 -73
  141. package/dist/commands/send/ether.d.ts +0 -13
  142. package/dist/commands/send/ether.d.ts.map +0 -1
  143. package/dist/commands/send/ether.js +0 -32
  144. package/dist/commands/send/generic.d.ts +0 -15
  145. package/dist/commands/send/generic.d.ts.map +0 -1
  146. package/dist/commands/send/generic.js +0 -119
  147. package/dist/commands/send/index.d.ts +0 -28
  148. package/dist/commands/send/index.d.ts.map +0 -1
  149. package/dist/commands/send/index.js +0 -102
  150. package/dist/exec/crane.d.ts +0 -15
  151. package/dist/exec/crane.d.ts.map +0 -1
  152. package/dist/exec/crane.js +0 -17
  153. package/dist/flags.d.ts +0 -17
  154. package/dist/flags.d.ts.map +0 -1
  155. package/dist/flags.js +0 -28
  156. package/dist/node/DockerfileDeploy.txt +0 -4
  157. package/dist/node/default.env +0 -27
  158. package/dist/node/docker-compose-anvil.yaml +0 -50
  159. package/dist/node/docker-compose-bundler.yaml +0 -57
  160. package/dist/node/docker-compose-envfile.yaml +0 -4
  161. package/dist/node/docker-compose-explorer.yaml +0 -88
  162. package/dist/node/docker-compose-host.yaml +0 -30
  163. package/dist/node/docker-compose-paymaster.yaml +0 -33
  164. package/dist/node/docker-compose-prompt.yaml +0 -17
  165. package/dist/node/docker-compose-proxy.yaml +0 -48
  166. package/dist/node/docker-compose-snapshot-volume.yaml +0 -8
  167. package/dist/node/docker-compose-validator-cpus.yaml +0 -6
  168. package/dist/node/docker-compose-validator-memory.yaml +0 -6
  169. package/dist/node/docker-compose-validator.yaml +0 -59
  170. package/oclif.manifest.json +0 -876
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/exec/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAqB,OAAO,EAAE,MAAM,OAAO,CAAC;AAGnD,MAAM,MAAM,qBAAqB,GAC3B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,IAAI,CAAA;CAAE,GACpC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,MAAM,0BAA0B,GAAG,OAAO,GAAG,qBAAqB,CAAC;AACzE,eAAO,MAAM,mBAAmB,YACnB,MAAM,QACT,SAAS,MAAM,EAAE,WACd,0BAA0B;YAbvB,MAAM;kBAAgB,KAAK;GAmD1C,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,0BAA0B,GAAG,gBAAgB,GACrD,qBAAqB,CAAC;AAC1B,eAAO,MAAM,uBAAuB,YACvB,MAAM,QACT,SAAS,MAAM,EAAE,WACd,0BAA0B;;;;;CA6CtC,CAAC"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/exec/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,OAAO,CAAC;AAGxD,MAAM,MAAM,qBAAqB,GAC3B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,IAAI,CAAA;CAAE,GACpC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,MAAM,0BAA0B,GAAG,OAAO,GAAG,qBAAqB,CAAC;AACzE,eAAO,MAAM,mBAAmB,GAC5B,SAAS,MAAM,EACf,MAAM,SAAS,MAAM,EAAE,EACvB,SAAS,0BAA0B;YAbvB,MAAM;kBAAgB,KAAK;GA6C1C,CAAC"}
package/dist/exec/util.js CHANGED
@@ -1,6 +1,5 @@
1
- import { spawnSync } from "child_process";
2
- import { execa, ExecaError } from "execa";
3
- import os from "os";
1
+ import { ExecaError, execa } from "execa";
2
+ import os from "node:os";
4
3
  export const execaDockerFallback = async (command, args, options) => {
5
4
  try {
6
5
  if (options.forceDocker) {
@@ -13,9 +12,6 @@ export const execaDockerFallback = async (command, args, options) => {
13
12
  catch (error) {
14
13
  if (error instanceof ExecaError) {
15
14
  if (error.code === "ENOENT" && options.image) {
16
- if (!options.forceDocker) {
17
- console.warn(`error executing '${command}', falling back to docker execution using image '${options.image}'`);
18
- }
19
15
  const userInfo = os.userInfo();
20
16
  const dockerOpts = [
21
17
  "--volume",
@@ -23,56 +19,13 @@ export const execaDockerFallback = async (command, args, options) => {
23
19
  "--workdir",
24
20
  "/work",
25
21
  "--interactive",
22
+ "--rm",
26
23
  "--user",
27
24
  `${userInfo.uid}:${userInfo.gid}`,
28
25
  ];
29
26
  return await execa("docker", ["run", ...dockerOpts, options.image, command, ...args], options);
30
27
  }
31
- else {
32
- console.error(`error executing '${command}'`, error);
33
- }
34
28
  }
35
29
  throw error;
36
30
  }
37
31
  };
38
- export const spawnSyncDockerFallback = (command, args, options) => {
39
- const result = options.forceDocker
40
- ? { error: { code: "ENOENT" }, stdout: "" }
41
- : spawnSync(command, args, options);
42
- if (result.error) {
43
- const code = result.error.code;
44
- if (code === "ENOENT" && options.image) {
45
- if (!options.forceDocker) {
46
- console.warn(`error executing '${command}', falling back to docker execution using image '${options.image}'`);
47
- }
48
- const userInfo = os.userInfo();
49
- const dockerOpts = [
50
- "--volume",
51
- `${options.cwd}:/work`,
52
- "--workdir",
53
- "/work",
54
- "--interactive",
55
- "--user",
56
- `${userInfo.uid}:${userInfo.gid}`,
57
- ];
58
- const dockerArgs = [
59
- "run",
60
- ...dockerOpts,
61
- options.image,
62
- command,
63
- ...args,
64
- ];
65
- const dockerResult = spawnSync("docker", dockerArgs, options);
66
- if (dockerResult.error) {
67
- console.error(`error executing '${command}'`, dockerResult.error);
68
- throw dockerResult.error;
69
- }
70
- return dockerResult;
71
- }
72
- else {
73
- console.error(`error executing '${command}'`, result.error);
74
- throw result.error;
75
- }
76
- }
77
- return result;
78
- };
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export { run } from "@oclif/core";
1
+ #!/usr/bin/env node
2
+ export {};
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js CHANGED
@@ -1 +1,57 @@
1
- export { run } from "@oclif/core";
1
+ #!/usr/bin/env node
2
+ import { Command } from "@commander-js/extra-typings";
3
+ import { createRequire } from "node:module";
4
+ import { createAddressBookCommand } from "./commands/address-book.js";
5
+ import { createBuildCommand } from "./commands/build.js";
6
+ import { createCleanCommand } from "./commands/clean.js";
7
+ import { createCreateCommand } from "./commands/create.js";
8
+ import { createDeployCommand } from "./commands/deploy.js";
9
+ import { createDepositCommand } from "./commands/deposit.js";
10
+ import { createDoctorCommand } from "./commands/doctor.js";
11
+ import { createHashCommand } from "./commands/hash.js";
12
+ import { createLogsCommand } from "./commands/logs.js";
13
+ import { createRunCommand } from "./commands/run.js";
14
+ import { createSendCommand } from "./commands/send.js";
15
+ import { createShellCommand } from "./commands/shell.js";
16
+ import { createStatusCommand } from "./commands/status.js";
17
+ // Use `createRequire` to import JSON in ESM
18
+ const require = createRequire(import.meta.url);
19
+ const pkg = require("../package.json");
20
+ const splash = String.raw ` .
21
+ / \
22
+ / \
23
+ \---/---\ /----\
24
+ \ X \
25
+ \----/ \---/---\
26
+ \ / CARTESI
27
+ \ / CLI
28
+ '`;
29
+ const program = new Command()
30
+ .name("cartesi")
31
+ .version(pkg.version)
32
+ .addHelpText("before", splash)
33
+ .addCommand(createAddressBookCommand())
34
+ .addCommand(createBuildCommand())
35
+ .addCommand(createCleanCommand())
36
+ .addCommand(createCreateCommand())
37
+ .addCommand(createDeployCommand(), { hidden: true })
38
+ .addCommand(createDepositCommand())
39
+ .addCommand(createDoctorCommand())
40
+ .addCommand(createLogsCommand())
41
+ .addCommand(createHashCommand())
42
+ .addCommand(createRunCommand())
43
+ .addCommand(createSendCommand())
44
+ .addCommand(createShellCommand())
45
+ .addCommand(createStatusCommand());
46
+ // Global error handling
47
+ process.on("uncaughtException", (err) => {
48
+ if (process.env.NODE_ENV === "development") {
49
+ console.error(err);
50
+ }
51
+ else {
52
+ // in production, only print the error message, not the stack trace
53
+ console.error(err.message);
54
+ }
55
+ process.exit(1);
56
+ });
57
+ program.parse();
package/dist/machine.d.ts CHANGED
@@ -1,5 +1,11 @@
1
- import { Config, ImageInfo } from "./config.js";
2
- export declare const bootMachine: (config: Config, info: ImageInfo | undefined, destination: string) => Promise<import("execa").Result<import("execa").Options & {
1
+ import type { Config, ImageInfo } from "./config.js";
2
+ import type { ExecaOptionsDockerFallback } from "./exec/util.js";
3
+ export type BootMachineOptions = {
4
+ finalHash?: boolean;
5
+ interactive?: boolean;
6
+ store?: string;
7
+ };
8
+ export declare const bootMachine: (config: Config, info: ImageInfo | undefined, bootOptions: BootMachineOptions, options?: ExecaOptionsDockerFallback) => Promise<import("execa").Result<import("execa").Options & {
3
9
  image?: string;
4
10
  forceDocker?: false;
5
11
  }>>;
@@ -1 +1 @@
1
- {"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../src/machine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,SAAS,EAAE,MAAM,aAAa,CAAC;AAoB7D,eAAO,MAAM,WAAW,WACZ,MAAM,QACR,SAAS,GAAG,SAAS,eACd,MAAM;;;GAwFtB,CAAC"}
1
+ {"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../src/machine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAe,SAAS,EAAE,MAAM,aAAa,CAAC;AAElE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAmBjE,MAAM,MAAM,kBAAkB,GAAG;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,WAAW,GACpB,QAAQ,MAAM,EACd,MAAM,SAAS,GAAG,SAAS,EAC3B,aAAa,kBAAkB,EAC/B,UAAU,0BAA0B;;;GAkGvC,CAAC"}
package/dist/machine.js CHANGED
@@ -15,12 +15,15 @@ const flashDrive = (label, drive) => {
15
15
  // don't specify start and length
16
16
  return `--flash-drive=${vars.join(",")}`;
17
17
  };
18
- export const bootMachine = async (config, info, destination) => {
18
+ export const bootMachine = (config, info, bootOptions, options) => {
19
19
  const { machine } = config;
20
- const { assertRollingTemplate, finalHash, interactive, maxMCycle, noRollup, ramLength, ramImage, store, user, } = machine;
20
+ const { assertRollingTemplate, maxMCycle, noRollup, ramLength, ramImage, useDockerEnv, useDockerWorkdir, user, } = machine;
21
21
  // list of environment variables of docker image
22
- const env = info?.env ?? [];
23
- const envs = env.map((variable) => `--env=${variable}`);
22
+ const env = useDockerEnv ? (info?.env ?? []) : [];
23
+ const envs = env.map((variable) => {
24
+ const [key, value] = variable.split("=");
25
+ return `--env=${key}="${value}"`;
26
+ });
24
27
  // check if we need a rootfstype boot arg
25
28
  const root = config.drives.root;
26
29
  if (root?.format === "sqfs") {
@@ -33,10 +36,15 @@ export const bootMachine = async (config, info, destination) => {
33
36
  // bootargs from config string array
34
37
  const bootargs = machine.bootargs.map((arg) => `--append-bootargs="${arg}"`);
35
38
  // entrypoint from config or image info (Docker ENTRYPOINT + CMD)
36
- const entrypoint = machine.entrypoint ?? // takes priority
37
- (info ? [...info.entrypoint, ...info.cmd].join(" ") : undefined); // ENTRYPOINT and CMD as a space separated string
39
+ let entrypoint;
40
+ if (machine.entrypoint) {
41
+ entrypoint = machine.entrypoint;
42
+ }
43
+ else if (info && (info.entrypoint.length > 0 || info.cmd.length > 0)) {
44
+ entrypoint = [...info.entrypoint, ...info.cmd].join(" ");
45
+ }
38
46
  if (!entrypoint) {
39
- throw new Error("Undefined machine entrypoint");
47
+ throw new Error("Undefined machine entrypoint. Please define an entrypoint in your cartesi.toml config or in your Dockerfile.");
40
48
  }
41
49
  const flashDrives = Object.entries(config.drives).map(([label, drive]) => flashDrive(label, drive));
42
50
  // command to change working directory if WORKDIR is defined
@@ -44,20 +52,21 @@ export const bootMachine = async (config, info, destination) => {
44
52
  ...bootargs,
45
53
  ...envs,
46
54
  ...flashDrives,
47
- `--ram-image=${ramImage}`,
48
55
  `--ram-length=${ramLength}`,
49
- `--append-entrypoint=${entrypoint}`,
50
56
  ];
57
+ if (ramImage) {
58
+ args.push(`--ram-image=${ramImage}`);
59
+ }
51
60
  if (assertRollingTemplate) {
52
61
  args.push("--assert-rolling-template");
53
62
  }
54
- if (finalHash) {
63
+ if (bootOptions.finalHash) {
55
64
  args.push("--final-hash");
56
65
  }
57
- if (info?.workdir) {
66
+ if (useDockerWorkdir && info?.workdir) {
58
67
  args.push(`--workdir="${info.workdir}"`);
59
68
  }
60
- if (interactive) {
69
+ if (bootOptions.interactive) {
61
70
  args.push("-it");
62
71
  }
63
72
  if (noRollup) {
@@ -66,15 +75,16 @@ export const bootMachine = async (config, info, destination) => {
66
75
  if (maxMCycle) {
67
76
  args.push(`--max-mcycle=${maxMCycle.toString()}`);
68
77
  }
69
- if (store) {
70
- args.push(`--store=${store}`);
78
+ if (bootOptions.store) {
79
+ args.push(`--store=${bootOptions.store}`);
71
80
  }
72
81
  if (user) {
73
82
  args.push(`--user=${user}`);
74
83
  }
84
+ args.push("--");
85
+ args.push(entrypoint);
75
86
  return cartesiMachine.boot(args, {
76
- cwd: destination,
77
87
  image: config.sdk,
78
- stdio: "inherit",
88
+ ...options,
79
89
  });
80
90
  };
package/dist/prompts.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { Separator } from "@inquirer/core";
2
2
  import input from "@inquirer/input";
3
3
  import select from "@inquirer/select";
4
- import { Context } from "@inquirer/type";
5
- import { Address, Hex } from "viem";
4
+ import type { Context } from "@inquirer/type";
5
+ import { type Address, type Hex } from "viem";
6
6
  type InputConfig = Parameters<typeof input>[0];
7
7
  type SelectConfig<ValueType> = Parameters<typeof select<ValueType>>[0];
8
8
  /**
@@ -34,6 +34,7 @@ export declare const bigintInput: (config: BigintPromptConfig) => Promise<bigint
34
34
  * @returns bytes as hex string
35
35
  */
36
36
  export declare const bytesInput: (config: InputConfig & {
37
+ encoding?: "string" | "hex" | "abi";
37
38
  message: string;
38
39
  }) => Promise<Hex>;
39
40
  /**
@@ -58,5 +59,15 @@ export type SelectAutoConfig<ValueType> = SelectConfig<ValueType> & {
58
59
  export declare const selectAuto: <ValueType>(config: SelectAutoConfig<ValueType> & {
59
60
  discardDisabled?: boolean;
60
61
  }, context?: Context | undefined) => Promise<ValueType>;
62
+ export declare const keySelect: <Value>(config: {
63
+ choices: readonly Choice<Value>[];
64
+ separator?: string | undefined;
65
+ }, context?: Context) => Promise<Value> & {
66
+ cancel: () => void;
67
+ };
68
+ export declare const getInputApplicationAddress: (options: {
69
+ application?: string;
70
+ projectName?: string;
71
+ }) => Promise<Address>;
61
72
  export {};
62
73
  //# sourceMappingURL=prompts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EACH,OAAO,EACP,GAAG,EASN,MAAM,MAAM,CAAC;AAEd,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAK,YAAY,CAAC,SAAS,IAAI,UAAU,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AACtE,eAAO,MAAM,YAAY,WACb,mBAAmB,KAC5B,OAAO,CAAC,OAAO,CAMjB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAAE,OAAO,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC;AAC9D,eAAO,MAAM,QAAQ,WAAkB,eAAe,KAAG,OAAO,CAAC,GAAG,CAMnE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,eAAO,MAAM,WAAW,WACZ,kBAAkB,KAC3B,OAAO,CAAC,MAAM,CAUhB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,WACX,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAC1C,OAAO,CAAC,GAAG,CA8Cb,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,WACf,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAC1C,OAAO,CAAC,KAAK,MAAM,EAAE,CA+DvB,CAAC;AAGF,MAAM,MAAM,MAAM,CAAC,SAAS,IAAI;IAC5B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC,GAAG;IAChE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,SAAS,UACxB,gBAAgB,CAAC,SAAS,CAAC,GAAG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,YACzD,OAAO,GAAG,SAAS,KAC9B,OAAO,CAAC,SAAS,CAsBnB,CAAC"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA6B,MAAM,gBAAgB,CAAC;AACtE,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,GAAG,EASX,MAAM,MAAM,CAAC;AAGd,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAK,YAAY,CAAC,SAAS,IAAI,UAAU,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AACtE,eAAO,MAAM,YAAY,GACrB,QAAQ,mBAAmB,KAC5B,OAAO,CAAC,OAAO,CAMjB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAAE,OAAO,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC;AAC9D,eAAO,MAAM,QAAQ,GAAU,QAAQ,eAAe,KAAG,OAAO,CAAC,GAAG,CAMnE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,eAAO,MAAM,WAAW,GACpB,QAAQ,kBAAkB,KAC3B,OAAO,CAAC,MAAM,CAUhB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,GACnB,QAAQ,WAAW,GAAG;IAClB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;CACnB,KACF,OAAO,CAAC,GAAG,CAkDb,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACvB,QAAQ,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAC1C,OAAO,CAAC,KAAK,MAAM,EAAE,CA+DvB,CAAC;AAGF,MAAM,MAAM,MAAM,CAAC,SAAS,IAAI;IAC5B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC,GAAG;IAChE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,SAAS,EAChC,QAAQ,gBAAgB,CAAC,SAAS,CAAC,GAAG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,EACnE,UAAU,OAAO,GAAG,SAAS,KAC9B,OAAO,CAAC,SAAS,CAsBnB,CAAC;AAOF,eAAO,MAAM,SAAS,GACjB,KAAK;;gBAJM,MAAM;;;CAoBrB,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAU,SAAS;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,KAAG,OAAO,CAAC,OAAO,CAoBlB,CAAC"}
package/dist/prompts.js CHANGED
@@ -1,8 +1,10 @@
1
1
  import confirm from "@inquirer/confirm";
2
+ import { Separator, createPrompt, useKeypress } from "@inquirer/core";
2
3
  import input from "@inquirer/input";
3
4
  import select from "@inquirer/select";
4
5
  import chalk from "chalk";
5
6
  import { encodeAbiParameters, formatUnits, getAddress, isAddress, isHex, parseAbiParameters, parseUnits, stringToHex, } from "viem";
7
+ import { getApplicationAddress } from "./exec/rollups.js";
6
8
  export const addressInput = async (config) => {
7
9
  const address = await input({
8
10
  ...config,
@@ -18,7 +20,7 @@ export const hexInput = async (config) => {
18
20
  return value;
19
21
  };
20
22
  export const bigintInput = async (config) => {
21
- const defaultValue = config.default != undefined
23
+ const defaultValue = config.default !== undefined
22
24
  ? formatUnits(config.default, config.decimals)
23
25
  : undefined;
24
26
  const value = await input({
@@ -33,26 +35,27 @@ export const bigintInput = async (config) => {
33
35
  * @returns bytes as hex string
34
36
  */
35
37
  export const bytesInput = async (config) => {
36
- const encoding = await select({
37
- ...config,
38
- choices: [
39
- {
40
- value: "string",
41
- name: "String encoding",
42
- description: "Convert UTF-8 string to bytes",
43
- },
44
- {
45
- value: "hex",
46
- name: "Hex string encoding",
47
- description: "Convert a hex string to bytes (must start with 0x)",
48
- },
49
- {
50
- value: "abi",
51
- name: "ABI encoding",
52
- description: "Input as ABI encoding parameters https://abitype.dev/api/human.html#parseabiparameters",
53
- },
54
- ],
55
- });
38
+ const encoding = config.encoding ??
39
+ (await select({
40
+ ...config,
41
+ choices: [
42
+ {
43
+ value: "string",
44
+ name: "String encoding",
45
+ description: "Convert UTF-8 string to bytes",
46
+ },
47
+ {
48
+ value: "hex",
49
+ name: "Hex string encoding",
50
+ description: "Convert a hex string to bytes (must start with 0x)",
51
+ },
52
+ {
53
+ value: "abi",
54
+ name: "ABI encoding",
55
+ description: "Input as ABI encoding parameters https://abitype.dev/api/human#parseabiparameters",
56
+ },
57
+ ],
58
+ }));
56
59
  switch (encoding) {
57
60
  case "hex": {
58
61
  const valueHex = await hexInput({
@@ -82,13 +85,13 @@ export const bytesInput = async (config) => {
82
85
  */
83
86
  export const abiParamsInput = async (config) => {
84
87
  const encoding = await input({
85
- message: `${config.message} (as ABI encoded https://abitype.dev/api/human.html#parseabiparameters )`,
88
+ message: `${config.message} (as ABI encoded https://abitype.dev/api/human#parseabiparameters )`,
86
89
  validate: (value) => {
87
90
  try {
88
91
  parseAbiParameters(value);
89
92
  return true;
90
93
  }
91
- catch (e) {
94
+ catch {
92
95
  return "Invalid ABI parameters";
93
96
  }
94
97
  },
@@ -118,7 +121,7 @@ export const abiParamsInput = async (config) => {
118
121
  BigInt(value);
119
122
  return true;
120
123
  }
121
- catch (e) {
124
+ catch {
122
125
  return "Invalid number";
123
126
  }
124
127
  },
@@ -142,11 +145,11 @@ export const abiParamsInput = async (config) => {
142
145
  export const selectAuto = (config, context) => {
143
146
  const choices = config.choices;
144
147
  const list = config.discardDisabled
145
- ? choices.filter((c) => c.type !== "separator" && !c.disabled)
148
+ ? choices.filter((c) => !(c instanceof Separator) && !c.disabled)
146
149
  : choices;
147
150
  if (list.length === 1) {
148
151
  const choice = list[0];
149
- if (choice.type !== "separator") {
152
+ if (!(choice instanceof Separator)) {
150
153
  const output = context?.output || process.stdout;
151
154
  const prefix = chalk.green("?");
152
155
  const message = chalk.bold(config.message);
@@ -156,3 +159,34 @@ export const selectAuto = (config, context) => {
156
159
  }
157
160
  return select(config, context);
158
161
  };
162
+ export const keySelect = createPrompt((config, done) => {
163
+ const choices = config.choices;
164
+ const separator = config.separator ?? "\t";
165
+ const options = choices
166
+ .map((c) => `(${chalk.cyan(c.value)}) ${c.name ?? ""}`)
167
+ .join(separator);
168
+ useKeypress((key) => {
169
+ const selected = choices.find((c) => c.value === key.name);
170
+ if (selected) {
171
+ done(selected.value);
172
+ }
173
+ });
174
+ return `${options} `;
175
+ });
176
+ export const getInputApplicationAddress = async (options) => {
177
+ const { application, projectName } = options;
178
+ if (application && isAddress(application)) {
179
+ // honor the flag
180
+ return application;
181
+ }
182
+ // get the running container application address
183
+ const nodeAddress = await getApplicationAddress({ projectName });
184
+ if (nodeAddress) {
185
+ return nodeAddress;
186
+ }
187
+ // query for the address
188
+ const applicationAddress = await addressInput({
189
+ message: "Application address",
190
+ });
191
+ return applicationAddress;
192
+ };
@@ -0,0 +1,3 @@
1
+ import { type DownloadTemplateResult } from "giget";
2
+ export declare const download: (template: string, branch: string, out: string) => Promise<DownloadTemplateResult>;
3
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,sBAAsB,EAAoB,MAAM,OAAO,CAAC;AAEtE,eAAO,MAAM,QAAQ,GACjB,UAAU,MAAM,EAChB,QAAQ,MAAM,EACd,KAAK,MAAM,KACZ,OAAO,CAAC,sBAAsB,CAehC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { downloadTemplate } from "giget";
2
+ export const download = async (template, branch, out) => {
3
+ const cartesiProvider = async (input) => {
4
+ return {
5
+ name: "cartesi",
6
+ subdir: input,
7
+ url: "https://github.com/cartesi/application-templates",
8
+ tar: `https://codeload.github.com/cartesi/application-templates/tar.gz/refs/heads/${branch}`,
9
+ };
10
+ };
11
+ const input = `cartesi:${template}`;
12
+ return downloadTemplate(input, {
13
+ dir: out,
14
+ providers: { cartesi: cartesiProvider },
15
+ });
16
+ };