@solana-mobile/dapp-store-cli 0.1.7 → 0.1.8

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.
@@ -30,8 +30,9 @@ export const createAppCommand = async ({ signer, url, dryRun, publisherMintAddre
30
30
  publisherMintAddress: publisherDetails.address ?? publisherMintAddress,
31
31
  appDetails,
32
32
  }, { dryRun });
33
- // TODO(sdlaver): dry-run should not modify config
34
- saveToConfig({ app: { address: appAddress } });
33
+ if (!dryRun) {
34
+ saveToConfig({ app: { address: appAddress } });
35
+ }
35
36
  return { appAddress };
36
37
  };
37
38
  //# sourceMappingURL=app.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/commands/create/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAC;AACvE,OAAO,EACL,UAAU,EACV,OAAO,EACP,SAAS,EACT,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,MAAM,YAAY,GAAG,KAAK,EACxB,EACE,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,SAAS,GAMV,EACD,EAAE,MAAM,EAAwB,EAChC,EAAE;IACF,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,MAAM,SAAS,CAC/B;QACE,oBAAoB,EAAE,IAAI,SAAS,CAAC,oBAAoB,CAAC;QACzD,WAAW;QACX,UAAU;KACX,EACD,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,kBAAkB,EAAE,CAAC;IACxD,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC9C,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEhC,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,UAAU,EAAE,EAAE,EAAE;YAC5D,SAAS;YACT,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;KACxE;IAED,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC1D,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,EACrC,MAAM,EACN,GAAG,EACH,MAAM,EACN,oBAAoB,GACE,EAAE,EAAE;IAC1B,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAEvC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,GACpD,MAAM,aAAa,EAAE,CAAC;IAExB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,YAAY,CACvC;QACE,UAAU;QACV,SAAS,EAAE,MAAM;QACjB,oBAAoB,EAAE,gBAAgB,CAAC,OAAO,IAAI,oBAAoB;QACtE,UAAU;KACX,EACD,EAAE,MAAM,EAAE,CACX,CAAC;IAEF,kDAAkD;IAClD,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IAE/C,OAAO,EAAE,UAAU,EAAE,CAAC;AACxB,CAAC,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/commands/create/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAC;AACvE,OAAO,EACL,UAAU,EACV,OAAO,EACP,SAAS,EACT,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,MAAM,YAAY,GAAG,KAAK,EACxB,EACE,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,SAAS,GAMV,EACD,EAAE,MAAM,EAAwB,EAChC,EAAE;IACF,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,MAAM,SAAS,CAC/B;QACE,oBAAoB,EAAE,IAAI,SAAS,CAAC,oBAAoB,CAAC;QACzD,WAAW;QACX,UAAU;KACX,EACD,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,kBAAkB,EAAE,CAAC;IACxD,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC9C,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEhC,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,UAAU,EAAE,EAAE,EAAE;YAC5D,SAAS;YACT,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;KACxE;IAED,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC1D,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,EACrC,MAAM,EACN,GAAG,EACH,MAAM,EACN,oBAAoB,GACE,EAAE,EAAE;IAC1B,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAEvC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,GACpD,MAAM,aAAa,EAAE,CAAC;IAExB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,YAAY,CACvC;QACE,UAAU;QACV,SAAS,EAAE,MAAM;QACjB,oBAAoB,EAAE,gBAAgB,CAAC,OAAO,IAAI,oBAAoB;QACtE,UAAU;KACX,EACD,EAAE,MAAM,EAAE,CACX,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE;QACX,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;KAChD;IAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACxB,CAAC,CAAC"}
package/lib/esm/index.js CHANGED
@@ -2,7 +2,7 @@ import { Command } from "commander";
2
2
  import { validateCommand } from "./commands/index.js";
3
3
  import { createAppCommand, createPublisherCommand, createReleaseCommand } from "./commands/create/index.js";
4
4
  import { publishRemoveCommand, publishSubmitCommand, publishSupportCommand, publishUpdateCommand } from "./commands/publish/index.js";
5
- import { getConfigFile, parseKeypair, showUserErrorMessage } from "./utils.js";
5
+ import { checkForSelfUpdate, generateNetworkSuffix, getConfigFile, parseKeypair, showMessage } from "./utils.js";
6
6
  import * as dotenv from "dotenv";
7
7
  dotenv.config();
8
8
  const hasAddressInConfig = ({ address }) => {
@@ -21,10 +21,19 @@ function resolveBuildToolsPath(buildToolsPath) {
21
21
  // No path was specified
22
22
  return;
23
23
  }
24
+ async function tryWithErrorMessage(block) {
25
+ try {
26
+ await block();
27
+ }
28
+ catch (e) {
29
+ const errorMsg = e?.message ?? "";
30
+ showMessage("Error", errorMsg, true);
31
+ }
32
+ }
24
33
  async function main() {
25
34
  program
26
35
  .name("dapp-store")
27
- .version("0.1.7")
36
+ .version("0.1.8")
28
37
  .description("CLI to assist with publishing to the Saga Dapp Store");
29
38
  const createCommand = program
30
39
  .command("create")
@@ -36,10 +45,16 @@ async function main() {
36
45
  .option("-u, --url <url>", "RPC URL", "https://devnet.genesysgo.net")
37
46
  .option("-d, --dry-run", "Flag for dry run. Doesn't mint an NFT")
38
47
  .action(async ({ keypair, url, dryRun }) => {
39
- const signer = parseKeypair(keypair);
40
- if (signer) {
41
- const result = await createPublisherCommand({ signer, url, dryRun });
42
- }
48
+ tryWithErrorMessage(async () => {
49
+ await checkForSelfUpdate();
50
+ const signer = parseKeypair(keypair);
51
+ if (signer) {
52
+ const result = await createPublisherCommand({ signer, url, dryRun });
53
+ const displayUrl = `https://solscan.io/token/${result.publisherAddress}${generateNetworkSuffix(url)}`;
54
+ const resultText = `Publisher NFT successfully minted:\n${displayUrl}`;
55
+ showMessage("Success", resultText);
56
+ }
57
+ });
43
58
  });
44
59
  createCommand
45
60
  .command("app")
@@ -49,26 +64,25 @@ async function main() {
49
64
  .option("-u, --url <url>", "RPC URL", "https://devnet.genesysgo.net")
50
65
  .option("-d, --dry-run", "Flag for dry run. Doesn't mint an NFT")
51
66
  .action(async ({ publisherMintAddress, keypair, url, dryRun }) => {
52
- try {
67
+ tryWithErrorMessage(async () => {
68
+ await checkForSelfUpdate();
53
69
  const config = await getConfigFile();
54
70
  if (!hasAddressInConfig(config.publisher) && !publisherMintAddress) {
55
- showUserErrorMessage("Either specify an publisher mint address in the config file, or specify as a CLI argument to this command.");
56
- createCommand.showHelpAfterError();
57
- return;
71
+ throw new Error("Either specify a publisher mint address in the config file or specify as a CLI argument to this command.");
58
72
  }
59
73
  const signer = parseKeypair(keypair);
60
74
  if (signer) {
61
- await createAppCommand({
75
+ const result = await createAppCommand({
62
76
  publisherMintAddress: publisherMintAddress,
63
77
  signer,
64
78
  url,
65
79
  dryRun,
66
80
  });
81
+ const displayUrl = `https://solscan.io/token/${result.appAddress}${generateNetworkSuffix(url)}`;
82
+ const resultText = `App NFT successfully minted:\n${displayUrl}`;
83
+ showMessage("Success", resultText);
67
84
  }
68
- }
69
- catch (e) {
70
- showUserErrorMessage(e?.message ?? "");
71
- }
85
+ });
72
86
  });
73
87
  createCommand
74
88
  .command("release")
@@ -79,18 +93,15 @@ async function main() {
79
93
  .option("-d, --dry-run", "Flag for dry run. Doesn't mint an NFT")
80
94
  .option("-b, --build-tools-path <build-tools-path>", "Path to Android build tools which contains AAPT2")
81
95
  .action(async ({ appMintAddress, keypair, url, dryRun, buildToolsPath }) => {
82
- try {
96
+ tryWithErrorMessage(async () => {
97
+ await checkForSelfUpdate();
83
98
  const resolvedBuildToolsPath = resolveBuildToolsPath(buildToolsPath);
84
99
  if (resolvedBuildToolsPath === undefined) {
85
- showUserErrorMessage("Please specify an Android build tools directory in the .env file or via the command line argument.");
86
- createCommand.showHelpAfterError();
87
- return;
100
+ throw new Error("Please specify an Android build tools directory in the .env file or via the command line argument.");
88
101
  }
89
102
  const config = await getConfigFile();
90
103
  if (!hasAddressInConfig(config.app) && !appMintAddress) {
91
- showUserErrorMessage("\n\n::: Either specify an app mint address in the config file, or specify as a CLI argument to this command. :::\n\n");
92
- createCommand.showHelpAfterError();
93
- return;
104
+ throw new Error("Either specify an app mint address in the config file or specify as a CLI argument to this command");
94
105
  }
95
106
  const signer = parseKeypair(keypair);
96
107
  if (signer) {
@@ -101,11 +112,11 @@ async function main() {
101
112
  url,
102
113
  dryRun,
103
114
  });
115
+ const displayUrl = `https://solscan.io/token/${result?.releaseAddress}${generateNetworkSuffix(url)}`;
116
+ const resultText = `Release NFT successfully minted:\n${displayUrl}`;
117
+ showMessage("Success", resultText);
104
118
  }
105
- }
106
- catch (e) {
107
- showUserErrorMessage(e?.message ?? "");
108
- }
119
+ });
109
120
  });
110
121
  program
111
122
  .command("validate")
@@ -113,12 +124,11 @@ async function main() {
113
124
  .requiredOption("-k, --keypair <path-to-keypair-file>", "Path to keypair file")
114
125
  .option("-b, --build-tools-path <build-tools-path>", "Path to Android build tools which contains AAPT2")
115
126
  .action(async ({ keypair, buildToolsPath }) => {
116
- try {
127
+ tryWithErrorMessage(async () => {
128
+ await checkForSelfUpdate();
117
129
  const resolvedBuildToolsPath = resolveBuildToolsPath(buildToolsPath);
118
130
  if (resolvedBuildToolsPath === undefined) {
119
- showUserErrorMessage("Please specify an Android build tools directory in the .env file or via the command line argument.");
120
- createCommand.showHelpAfterError();
121
- return;
131
+ throw new Error("Please specify an Android build tools directory in the .env file or via the command line argument.");
122
132
  }
123
133
  const signer = parseKeypair(keypair);
124
134
  if (signer) {
@@ -126,11 +136,9 @@ async function main() {
126
136
  signer,
127
137
  buildToolsPath: resolvedBuildToolsPath,
128
138
  });
139
+ //TODO: Add pretty formatting here, but will require more work than other sections
129
140
  }
130
- }
131
- catch (e) {
132
- showUserErrorMessage(e?.message ?? "");
133
- }
141
+ });
134
142
  });
135
143
  const publishCommand = program
136
144
  .command("publish")
@@ -146,12 +154,11 @@ async function main() {
146
154
  .option("-u, --url <url>", "RPC URL", "https://devnet.genesysgo.net")
147
155
  .option("-d, --dry-run", "Flag for dry run. Doesn't submit the request to the publisher portal.")
148
156
  .action(async ({ appMintAddress, releaseMintAddress, keypair, url, compliesWithSolanaDappStorePolicies, requestorIsAuthorized, dryRun, }) => {
149
- try {
157
+ tryWithErrorMessage(async () => {
158
+ await checkForSelfUpdate();
150
159
  const config = await getConfigFile();
151
160
  if (!hasAddressInConfig(config.release) && !releaseMintAddress) {
152
- showUserErrorMessage("\n\n::: Either specify an release mint address in the config file, or specify as a CLI argument to this command. :::\n\n");
153
- publishCommand.showHelpAfterError();
154
- return;
161
+ throw new Error("Either specify a release mint address in the config file or specify as a CLI argument to this command.");
155
162
  }
156
163
  const signer = parseKeypair(keypair);
157
164
  if (signer) {
@@ -164,11 +171,10 @@ async function main() {
164
171
  compliesWithSolanaDappStorePolicies,
165
172
  requestorIsAuthorized,
166
173
  });
174
+ const resultText = "Successfully submitted to the Solana Mobile dApp publisher portal";
175
+ showMessage("Success", resultText);
167
176
  }
168
- }
169
- catch (e) {
170
- showUserErrorMessage(e?.message ?? "");
171
- }
177
+ });
172
178
  });
173
179
  publishCommand
174
180
  .command("update")
@@ -182,12 +188,11 @@ async function main() {
182
188
  .option("-u, --url <url>", "RPC URL", "https://devnet.genesysgo.net")
183
189
  .option("-d, --dry-run", "Flag for dry run. Doesn't submit the request to the publisher portal.")
184
190
  .action(async ({ appMintAddress, releaseMintAddress, keypair, url, compliesWithSolanaDappStorePolicies, requestorIsAuthorized, critical, dryRun, }) => {
185
- try {
191
+ tryWithErrorMessage(async () => {
192
+ await checkForSelfUpdate();
186
193
  const config = await getConfigFile();
187
194
  if (!hasAddressInConfig(config.release) && !releaseMintAddress) {
188
- showUserErrorMessage("\n\n::: Either specify an release mint address in the config file, or specify as a CLI argument to this command. :::\n\n");
189
- publishCommand.showHelpAfterError();
190
- return;
195
+ throw new Error("Either specify a release mint address in the config file or specify as a CLI argument to this command.");
191
196
  }
192
197
  const signer = parseKeypair(keypair);
193
198
  if (signer) {
@@ -201,11 +206,10 @@ async function main() {
201
206
  requestorIsAuthorized,
202
207
  critical,
203
208
  });
209
+ const resultText = "dApp successfully updated on the publisher portal";
210
+ showMessage("Success", resultText);
204
211
  }
205
- }
206
- catch (e) {
207
- showUserErrorMessage(e?.message ?? "");
208
- }
212
+ });
209
213
  });
210
214
  publishCommand
211
215
  .command("remove")
@@ -218,12 +222,11 @@ async function main() {
218
222
  .option("-u, --url <url>", "RPC URL", "https://devnet.genesysgo.net")
219
223
  .option("-d, --dry-run", "Flag for dry run. Doesn't submit the request to the publisher portal.")
220
224
  .action(async ({ appMintAddress, releaseMintAddress, keypair, url, requestorIsAuthorized, critical, dryRun, }) => {
221
- try {
225
+ tryWithErrorMessage(async () => {
226
+ await checkForSelfUpdate();
222
227
  const config = await getConfigFile();
223
228
  if (!hasAddressInConfig(config.release) && !releaseMintAddress) {
224
- showUserErrorMessage("\n\n::: Either specify an release mint address in the config file, or specify as a CLI argument to this command. :::\n\n");
225
- publishCommand.showHelpAfterError();
226
- return;
229
+ throw new Error("Either specify a release mint address in the config file or specify as a CLI argument to this command.");
227
230
  }
228
231
  const signer = parseKeypair(keypair);
229
232
  if (signer) {
@@ -236,11 +239,10 @@ async function main() {
236
239
  requestorIsAuthorized,
237
240
  critical,
238
241
  });
242
+ const resultText = "dApp successfully removed from the publisher portal";
243
+ showMessage("Success", resultText);
239
244
  }
240
- }
241
- catch (e) {
242
- showUserErrorMessage(e?.message ?? "");
243
- }
245
+ });
244
246
  });
245
247
  publishCommand
246
248
  .command("support <request_details>")
@@ -252,12 +254,11 @@ async function main() {
252
254
  .option("-u, --url <url>", "RPC URL", "https://devnet.genesysgo.net")
253
255
  .option("-d, --dry-run", "Flag for dry run. Doesn't submit the request to the publisher portal.")
254
256
  .action(async (requestDetails, { appMintAddress, releaseMintAddress, keypair, url, requestorIsAuthorized, dryRun }) => {
255
- try {
257
+ tryWithErrorMessage(async () => {
258
+ await checkForSelfUpdate();
256
259
  const config = await getConfigFile();
257
260
  if (!hasAddressInConfig(config.release) && !releaseMintAddress) {
258
- showUserErrorMessage("\n\n::: Either specify an release mint address in the config file, or specify as a CLI argument to this command. :::\n\n");
259
- publishCommand.showHelpAfterError();
260
- return;
261
+ throw new Error("Either specify a release mint address in the config file or specify as a CLI argument to this command.");
261
262
  }
262
263
  const signer = parseKeypair(keypair);
263
264
  if (signer) {
@@ -270,11 +271,10 @@ async function main() {
270
271
  requestorIsAuthorized,
271
272
  requestDetails,
272
273
  });
274
+ const resultText = "Support request sent successfully";
275
+ showMessage("Success", resultText);
273
276
  }
274
- }
275
- catch (e) {
276
- showUserErrorMessage(e?.message ?? "");
277
- }
277
+ });
278
278
  });
279
279
  await program.parseAsync(process.argv);
280
280
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@solana-mobile/dapp-store-cli",
3
+ "version": "0.1.8",
4
+ "license": "Apache-2.0",
5
+ "type": "module",
6
+ "sideEffects": false,
7
+ "main": "./lib/cjs/index.js",
8
+ "module": "./lib/esm/index.js",
9
+ "types": "./lib/types/index.d.ts",
10
+ "engines": {
11
+ "node": ">=18"
12
+ },
13
+ "exports": {
14
+ "import": "./lib/esm/index.js",
15
+ "require": "./lib/cjs/index.js",
16
+ "types": "./lib/types/index.d.ts"
17
+ },
18
+ "bin": {
19
+ "dapp-store": "./bin/dapp-store.js"
20
+ },
21
+ "files": [
22
+ "lib",
23
+ "src",
24
+ "LICENSE"
25
+ ],
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "scripts": {
30
+ "clean": "shx mkdir -p lib && shx rm -rf lib",
31
+ "prebuild": "pnpm run clean"
32
+ },
33
+ "devDependencies": {
34
+ "@metaplex-foundation/js": "0.17.11",
35
+ "@types/commander": "^2.12.2",
36
+ "@types/debug": "^4.1.7",
37
+ "@types/js-yaml": "^4.0.5",
38
+ "@types/terminal-link": "^1.2.0",
39
+ "@types/update-notifier": "^6.0.1",
40
+ "shx": "^0.3.4"
41
+ },
42
+ "dependencies": {
43
+ "@solana-mobile/dapp-store-publishing-tools": "workspace:0.1.8",
44
+ "@solana/web3.js": "1.68.0",
45
+ "ajv": "^8.11.0",
46
+ "boxen": "^7.0.1",
47
+ "commander": "^9.4.1",
48
+ "debug": "^4.3.4",
49
+ "dotenv": "^16.0.3",
50
+ "esm": "^3.2.25",
51
+ "image-size": "^1.0.2",
52
+ "js-yaml": "^4.1.0",
53
+ "terminal-link": "^3.0.0",
54
+ "tweetnacl": "1.0.3",
55
+ "update-notifier": "^6.0.2"
56
+ }
57
+ }
package/lib/esm/utils.js CHANGED
@@ -8,10 +8,20 @@ import { exec } from "child_process";
8
8
  import * as path from "path";
9
9
  import { BundlrStorageDriver, keypairIdentity, Metaplex, toMetaplexFile } from "@metaplex-foundation/js";
10
10
  import { imageSize } from "image-size";
11
+ import updateNotifier from "update-notifier";
12
+ import cliPackage from "./package.json" assert { type: "json" };
13
+ import boxen from "boxen";
11
14
  import { CachedStorageDriver } from "./upload/CachedStorageDriver.js";
12
15
  const runImgSize = util.promisify(imageSize);
13
16
  const runExec = util.promisify(exec);
14
17
  export const debug = debugModule("CLI");
18
+ export const checkForSelfUpdate = async () => {
19
+ const notifier = updateNotifier({ pkg: cliPackage });
20
+ const updateInfo = await notifier.fetchInfo();
21
+ if (updateInfo.current != updateInfo.latest) {
22
+ throw new Error("Please update to the latest version of the dApp Store CLI before proceeding.");
23
+ }
24
+ };
15
25
  export const parseKeypair = (pathToKeypairFile) => {
16
26
  try {
17
27
  const keypairFile = fs.readFileSync(pathToKeypairFile, "utf-8");
@@ -34,7 +44,6 @@ const AaptPrefixes = {
34
44
  export const getConfigFile = async (buildToolsDir = null) => {
35
45
  const configFilePath = `${process.cwd()}/config.yaml`;
36
46
  const config = await getConfig(configFilePath);
37
- console.info(`Pulling details from ${configFilePath}`);
38
47
  if (buildToolsDir && fs.lstatSync(buildToolsDir).isDirectory()) {
39
48
  // We validate that the config is going to have at least one installable asset
40
49
  const apkEntry = config.release.files.find((asset) => asset.purpose === "install");
@@ -83,10 +92,29 @@ const checkImageExtension = (uri) => {
83
92
  fileExt == ".jpeg" ||
84
93
  fileExt == ".webp");
85
94
  };
86
- export const showUserErrorMessage = (msg) => {
87
- console.error("\n:::: Solana Publish CLI: Error Message ::::");
88
- console.error(msg);
89
- console.error("");
95
+ export const generateNetworkSuffix = (rpcUrl) => {
96
+ let suffix = "";
97
+ if (rpcUrl.indexOf("devnet") != -1) {
98
+ suffix = "?cluster=devnet";
99
+ }
100
+ else if (rpcUrl.indexOf("testnet") != -1) {
101
+ suffix = "?cluster=testnet";
102
+ }
103
+ else if (rpcUrl.indexOf("mainnet") != -1) {
104
+ suffix = "?cluster=mainnet";
105
+ }
106
+ return suffix;
107
+ };
108
+ export const showMessage = (titleMessage = "", contentMessage = "", isError = false) => {
109
+ console.log(boxen(contentMessage, {
110
+ title: titleMessage,
111
+ padding: 1,
112
+ margin: 1,
113
+ borderStyle: 'single',
114
+ borderColor: isError ? "redBright" : "cyan",
115
+ textAlignment: "left",
116
+ titleAlignment: "center"
117
+ }));
90
118
  };
91
119
  const checkIconDimensions = async (iconPath) => {
92
120
  const size = await runImgSize(iconPath);
@@ -107,7 +135,7 @@ const getAndroidDetails = async (aaptDir, apkPath) => {
107
135
  let localeArray = Array.from(locales?.values() ?? []);
108
136
  if (localeArray.length == 2) {
109
137
  const localesSrc = localeArray[1];
110
- localeArray = localesSrc.split("' '").slice(1);
138
+ localeArray = ["en-US"].concat(localesSrc.split("' '").slice(1));
111
139
  }
112
140
  return {
113
141
  android_package: appPackage?.[1] ?? "",
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../../src/commands/create/app.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,OAAO,EAGR,MAAM,iBAAiB,CAAC;AAgDzB,aAAK,qBAAqB,GAAG;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,gBAAgB,mDAK1B,qBAAqB;;EAoBvB,CAAC"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../../src/commands/create/app.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,OAAO,EAGR,MAAM,iBAAiB,CAAC;AAgDzB,aAAK,qBAAqB,GAAG;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,gBAAgB,mDAK1B,qBAAqB;;EAqBvB,CAAC"}
@@ -5,9 +5,11 @@ import type { CLIConfig } from "./config/index.js";
5
5
  import debugModule from "debug";
6
6
  import { Metaplex } from "@metaplex-foundation/js";
7
7
  export declare const debug: debugModule.Debugger;
8
+ export declare const checkForSelfUpdate: () => Promise<void>;
8
9
  export declare const parseKeypair: (pathToKeypairFile: string) => Keypair | undefined;
9
10
  export declare const getConfigFile: (buildToolsDir?: string | null) => Promise<CLIConfig>;
10
- export declare const showUserErrorMessage: (msg: string) => void;
11
+ export declare const generateNetworkSuffix: (rpcUrl: string) => string;
12
+ export declare const showMessage: (titleMessage?: string, contentMessage?: string, isError?: boolean) => void;
11
13
  declare type SaveToConfigArgs = {
12
14
  publisher?: Pick<Publisher, "address">;
13
15
  app?: Pick<App, "address">;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,4CAA4C,CAAC;AAC1G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,WAAW,MAAM,OAAO,CAAC;AAKhC,OAAO,EAAwC,QAAQ,EAAkB,MAAM,yBAAyB,CAAC;AAQzG,eAAO,MAAM,KAAK,sBAAqB,CAAC;AAExC,eAAO,MAAM,YAAY,sBAAuB,MAAM,wBASrD,CAAC;AAaF,eAAO,MAAM,aAAa,mBACT,MAAM,GAAG,IAAI,KAC3B,QAAQ,SAAS,CAmEnB,CAAC;AAYF,eAAO,MAAM,oBAAoB,QAAS,MAAM,SAI/C,CAAC;AAsDF,aAAK,gBAAgB,GAAG;IACtB,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACvC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,YAAY,iCAItB,gBAAgB,kBAyBlB,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAClB,UAAU,WACb,OAAO,aAoBjB,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,4CAA4C,CAAC;AAC1G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,WAAW,MAAM,OAAO,CAAC;AAKhC,OAAO,EAAwC,QAAQ,EAAkB,MAAM,yBAAyB,CAAC;AAWzG,eAAO,MAAM,KAAK,sBAAqB,CAAC;AAExC,eAAO,MAAM,kBAAkB,qBAO9B,CAAC;AAEF,eAAO,MAAM,YAAY,sBAAuB,MAAM,wBASrD,CAAC;AAaF,eAAO,MAAM,aAAa,mBACT,MAAM,GAAG,IAAI,KAC3B,QAAQ,SAAS,CAiEnB,CAAC;AAYF,eAAO,MAAM,qBAAqB,WAAY,MAAM,KAAG,MAYtD,CAAC;AAEF,eAAO,MAAM,WAAW,6EAcvB,CAAC;AAsDF,aAAK,gBAAgB,GAAG;IACtB,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACvC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,YAAY,iCAItB,gBAAgB,kBAyBlB,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAClB,UAAU,WACb,OAAO,aAoBjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solana-mobile/dapp-store-cli",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -31,19 +31,24 @@
31
31
  "@types/commander": "^2.12.2",
32
32
  "@types/debug": "^4.1.7",
33
33
  "@types/js-yaml": "^4.0.5",
34
+ "@types/terminal-link": "^1.2.0",
35
+ "@types/update-notifier": "^6.0.1",
34
36
  "shx": "^0.3.4"
35
37
  },
36
38
  "dependencies": {
37
- "@solana-mobile/dapp-store-publishing-tools": "0.1.7",
39
+ "@solana-mobile/dapp-store-publishing-tools": "0.1.8",
38
40
  "@solana/web3.js": "1.68.0",
39
41
  "ajv": "^8.11.0",
42
+ "boxen": "^7.0.1",
40
43
  "commander": "^9.4.1",
41
44
  "debug": "^4.3.4",
42
45
  "dotenv": "^16.0.3",
43
46
  "esm": "^3.2.25",
44
47
  "image-size": "^1.0.2",
45
48
  "js-yaml": "^4.1.0",
46
- "tweetnacl": "1.0.3"
49
+ "terminal-link": "^3.0.0",
50
+ "tweetnacl": "1.0.3",
51
+ "update-notifier": "^6.0.2"
47
52
  },
48
53
  "scripts": {
49
54
  "clean": "shx mkdir -p lib && shx rm -rf lib",
@@ -81,8 +81,9 @@ export const createAppCommand = async ({
81
81
  { dryRun }
82
82
  );
83
83
 
84
- // TODO(sdlaver): dry-run should not modify config
85
- saveToConfig({ app: { address: appAddress } });
84
+ if (!dryRun) {
85
+ saveToConfig({ app: { address: appAddress } });
86
+ }
86
87
 
87
88
  return { appAddress };
88
89
  };
package/src/index.ts CHANGED
@@ -7,7 +7,9 @@ import {
7
7
  publishSupportCommand,
8
8
  publishUpdateCommand
9
9
  } from "./commands/publish/index.js";
10
- import { getConfigFile, parseKeypair, showUserErrorMessage } from "./utils.js";
10
+ import { checkForSelfUpdate, generateNetworkSuffix, getConfigFile, parseKeypair, showMessage } from "./utils.js";
11
+ import terminalLink from "terminal-link";
12
+ import boxen from "boxen";
11
13
 
12
14
  import * as dotenv from "dotenv";
13
15
 
@@ -34,10 +36,20 @@ function resolveBuildToolsPath(buildToolsPath: string | undefined) {
34
36
  return;
35
37
  }
36
38
 
39
+ async function tryWithErrorMessage(block: () => Promise<any>) {
40
+ try {
41
+ await block()
42
+ } catch (e) {
43
+ const errorMsg = (e as Error | null)?.message ?? "";
44
+
45
+ showMessage("Error", errorMsg, true);
46
+ }
47
+ }
48
+
37
49
  async function main() {
38
50
  program
39
51
  .name("dapp-store")
40
- .version("0.1.7")
52
+ .version("0.1.8")
41
53
  .description("CLI to assist with publishing to the Saga Dapp Store");
42
54
 
43
55
  const createCommand = program
@@ -54,11 +66,19 @@ async function main() {
54
66
  .option("-u, --url <url>", "RPC URL", "https://devnet.genesysgo.net")
55
67
  .option("-d, --dry-run", "Flag for dry run. Doesn't mint an NFT")
56
68
  .action(async ({ keypair, url, dryRun }) => {
57
- const signer = parseKeypair(keypair);
69
+ tryWithErrorMessage(async () => {
70
+ await checkForSelfUpdate();
58
71
 
59
- if (signer) {
60
- const result = await createPublisherCommand({ signer, url, dryRun });
61
- }
72
+ const signer = parseKeypair(keypair);
73
+ if (signer) {
74
+ const result: { publisherAddress: string } = await createPublisherCommand({ signer, url, dryRun });
75
+
76
+ const displayUrl = `https://solscan.io/token/${result.publisherAddress}${generateNetworkSuffix(url)}`;
77
+ const resultText = `Publisher NFT successfully minted:\n${displayUrl}`;
78
+
79
+ showMessage("Success", resultText);
80
+ }
81
+ });
62
82
  });
63
83
 
64
84
  createCommand
@@ -75,29 +95,30 @@ async function main() {
75
95
  .option("-u, --url <url>", "RPC URL", "https://devnet.genesysgo.net")
76
96
  .option("-d, --dry-run", "Flag for dry run. Doesn't mint an NFT")
77
97
  .action(async ({ publisherMintAddress, keypair, url, dryRun }) => {
78
- try {
98
+ tryWithErrorMessage(async () => {
99
+ await checkForSelfUpdate();
100
+
79
101
  const config = await getConfigFile();
80
102
 
81
103
  if (!hasAddressInConfig(config.publisher) && !publisherMintAddress) {
82
- showUserErrorMessage(
83
- "Either specify an publisher mint address in the config file, or specify as a CLI argument to this command."
84
- );
85
- createCommand.showHelpAfterError();
86
- return;
104
+ throw new Error("Either specify a publisher mint address in the config file or specify as a CLI argument to this command.")
87
105
  }
88
106
 
89
107
  const signer = parseKeypair(keypair);
90
108
  if (signer) {
91
- await createAppCommand({
109
+ const result = await createAppCommand({
92
110
  publisherMintAddress: publisherMintAddress,
93
111
  signer,
94
112
  url,
95
113
  dryRun,
96
114
  });
115
+
116
+ const displayUrl = `https://solscan.io/token/${result.appAddress}${generateNetworkSuffix(url)}`;
117
+ const resultText = `App NFT successfully minted:\n${displayUrl}`;
118
+
119
+ showMessage("Success", resultText);
97
120
  }
98
- } catch (e) {
99
- showUserErrorMessage((e as Error | null)?.message ?? "");
100
- }
121
+ });
101
122
  });
102
123
 
103
124
  createCommand
@@ -118,28 +139,20 @@ async function main() {
118
139
  "Path to Android build tools which contains AAPT2"
119
140
  )
120
141
  .action(async ({ appMintAddress, keypair, url, dryRun, buildToolsPath }) => {
121
- try {
142
+ tryWithErrorMessage(async () => {
143
+ await checkForSelfUpdate();
144
+
122
145
  const resolvedBuildToolsPath = resolveBuildToolsPath(buildToolsPath);
123
146
  if (resolvedBuildToolsPath === undefined) {
124
- showUserErrorMessage(
125
- "Please specify an Android build tools directory in the .env file or via the command line argument."
126
- );
127
- createCommand.showHelpAfterError();
128
- return;
147
+ throw new Error("Please specify an Android build tools directory in the .env file or via the command line argument.")
129
148
  }
130
149
 
131
150
  const config = await getConfigFile();
132
-
133
151
  if (!hasAddressInConfig(config.app) && !appMintAddress) {
134
- showUserErrorMessage(
135
- "\n\n::: Either specify an app mint address in the config file, or specify as a CLI argument to this command. :::\n\n"
136
- );
137
- createCommand.showHelpAfterError();
138
- return;
152
+ throw new Error("Either specify an app mint address in the config file or specify as a CLI argument to this command")
139
153
  }
140
154
 
141
155
  const signer = parseKeypair(keypair);
142
-
143
156
  if (signer) {
144
157
  const result = await createReleaseCommand({
145
158
  appMintAddress: appMintAddress,
@@ -148,10 +161,13 @@ async function main() {
148
161
  url,
149
162
  dryRun,
150
163
  });
164
+
165
+ const displayUrl = `https://solscan.io/token/${result?.releaseAddress}${generateNetworkSuffix(url)}`;
166
+ const resultText = `Release NFT successfully minted:\n${displayUrl}`;
167
+
168
+ showMessage("Success", resultText);
151
169
  }
152
- } catch (e) {
153
- showUserErrorMessage((e as Error | null)?.message ?? "");
154
- }
170
+ });
155
171
  }
156
172
  );
157
173
 
@@ -167,27 +183,24 @@ async function main() {
167
183
  "Path to Android build tools which contains AAPT2"
168
184
  )
169
185
  .action(async ({ keypair, buildToolsPath }) => {
170
- try {
186
+ tryWithErrorMessage(async () => {
187
+ await checkForSelfUpdate();
188
+
171
189
  const resolvedBuildToolsPath = resolveBuildToolsPath(buildToolsPath);
172
190
  if (resolvedBuildToolsPath === undefined) {
173
- showUserErrorMessage(
174
- "Please specify an Android build tools directory in the .env file or via the command line argument."
175
- );
176
- createCommand.showHelpAfterError();
177
- return;
191
+ throw new Error("Please specify an Android build tools directory in the .env file or via the command line argument.")
178
192
  }
179
193
 
180
194
  const signer = parseKeypair(keypair);
181
-
182
195
  if (signer) {
183
196
  await validateCommand({
184
197
  signer,
185
198
  buildToolsPath: resolvedBuildToolsPath,
186
199
  });
200
+
201
+ //TODO: Add pretty formatting here, but will require more work than other sections
187
202
  }
188
- } catch (e) {
189
- showUserErrorMessage((e as Error | null)?.message ?? "");
190
- }
203
+ });
191
204
  });
192
205
 
193
206
  const publishCommand = program
@@ -234,15 +247,13 @@ async function main() {
234
247
  requestorIsAuthorized,
235
248
  dryRun,
236
249
  }) => {
237
- try {
250
+ tryWithErrorMessage(async () => {
251
+ await checkForSelfUpdate();
252
+
238
253
  const config = await getConfigFile();
239
254
 
240
255
  if (!hasAddressInConfig(config.release) && !releaseMintAddress) {
241
- showUserErrorMessage(
242
- "\n\n::: Either specify an release mint address in the config file, or specify as a CLI argument to this command. :::\n\n"
243
- );
244
- publishCommand.showHelpAfterError();
245
- return;
256
+ throw new Error("Either specify a release mint address in the config file or specify as a CLI argument to this command.")
246
257
  }
247
258
 
248
259
  const signer = parseKeypair(keypair);
@@ -256,10 +267,11 @@ async function main() {
256
267
  compliesWithSolanaDappStorePolicies,
257
268
  requestorIsAuthorized,
258
269
  });
270
+
271
+ const resultText = "Successfully submitted to the Solana Mobile dApp publisher portal";
272
+ showMessage("Success", resultText);
259
273
  }
260
- } catch (e) {
261
- showUserErrorMessage((e as Error | null)?.message ?? "");
262
- }
274
+ });
263
275
  }
264
276
  );
265
277
 
@@ -305,19 +317,16 @@ async function main() {
305
317
  critical,
306
318
  dryRun,
307
319
  }) => {
308
- try {
320
+ tryWithErrorMessage(async () => {
321
+ await checkForSelfUpdate();
322
+
309
323
  const config = await getConfigFile();
310
324
 
311
325
  if (!hasAddressInConfig(config.release) && !releaseMintAddress) {
312
- showUserErrorMessage(
313
- "\n\n::: Either specify an release mint address in the config file, or specify as a CLI argument to this command. :::\n\n"
314
- );
315
- publishCommand.showHelpAfterError();
316
- return;
326
+ throw new Error("Either specify a release mint address in the config file or specify as a CLI argument to this command.")
317
327
  }
318
328
 
319
329
  const signer = parseKeypair(keypair);
320
-
321
330
  if (signer) {
322
331
  await publishUpdateCommand({
323
332
  appMintAddress,
@@ -329,10 +338,11 @@ async function main() {
329
338
  requestorIsAuthorized,
330
339
  critical,
331
340
  });
341
+
342
+ const resultText = "dApp successfully updated on the publisher portal";
343
+ showMessage("Success", resultText);
332
344
  }
333
- } catch (e) {
334
- showUserErrorMessage((e as Error | null)?.message ?? "");
335
- }
345
+ });
336
346
  }
337
347
  );
338
348
 
@@ -373,19 +383,16 @@ async function main() {
373
383
  critical,
374
384
  dryRun,
375
385
  }) => {
376
- try {
386
+ tryWithErrorMessage(async () => {
387
+ await checkForSelfUpdate();
388
+
377
389
  const config = await getConfigFile();
378
390
 
379
391
  if (!hasAddressInConfig(config.release) && !releaseMintAddress) {
380
- showUserErrorMessage(
381
- "\n\n::: Either specify an release mint address in the config file, or specify as a CLI argument to this command. :::\n\n"
382
- );
383
- publishCommand.showHelpAfterError();
384
- return;
392
+ throw new Error("Either specify a release mint address in the config file or specify as a CLI argument to this command.")
385
393
  }
386
394
 
387
395
  const signer = parseKeypair(keypair);
388
-
389
396
  if (signer) {
390
397
  await publishRemoveCommand({
391
398
  appMintAddress,
@@ -396,10 +403,11 @@ async function main() {
396
403
  requestorIsAuthorized,
397
404
  critical,
398
405
  });
406
+
407
+ const resultText = "dApp successfully removed from the publisher portal";
408
+ showMessage("Success", resultText);
399
409
  }
400
- } catch (e) {
401
- showUserErrorMessage((e as Error | null)?.message ?? "");
402
- }
410
+ })
403
411
  }
404
412
  );
405
413
 
@@ -434,19 +442,16 @@ async function main() {
434
442
  requestDetails,
435
443
  { appMintAddress, releaseMintAddress, keypair, url, requestorIsAuthorized, dryRun }
436
444
  ) => {
437
- try {
445
+ tryWithErrorMessage(async () => {
446
+ await checkForSelfUpdate();
447
+
438
448
  const config = await getConfigFile();
439
449
 
440
450
  if (!hasAddressInConfig(config.release) && !releaseMintAddress) {
441
- showUserErrorMessage(
442
- "\n\n::: Either specify an release mint address in the config file, or specify as a CLI argument to this command. :::\n\n"
443
- );
444
- publishCommand.showHelpAfterError();
445
- return;
451
+ throw new Error("Either specify a release mint address in the config file or specify as a CLI argument to this command.")
446
452
  }
447
453
 
448
454
  const signer = parseKeypair(keypair);
449
-
450
455
  if (signer) {
451
456
  await publishSupportCommand({
452
457
  appMintAddress,
@@ -457,10 +462,11 @@ async function main() {
457
462
  requestorIsAuthorized,
458
463
  requestDetails,
459
464
  });
465
+
466
+ const resultText = "Support request sent successfully";
467
+ showMessage("Success", resultText);
460
468
  }
461
- } catch (e) {
462
- showUserErrorMessage((e as Error | null)?.message ?? "");
463
- }
469
+ });
464
470
  }
465
471
  );
466
472
 
package/src/utils.ts CHANGED
@@ -11,6 +11,9 @@ import { exec } from "child_process";
11
11
  import * as path from "path";
12
12
  import { BundlrStorageDriver, keypairIdentity, Metaplex, toMetaplexFile } from "@metaplex-foundation/js";
13
13
  import { imageSize } from "image-size";
14
+ import updateNotifier from "update-notifier";
15
+ import cliPackage from "./package.json" assert { type: "json" };
16
+ import boxen from "boxen";
14
17
 
15
18
  import { CachedStorageDriver } from "./upload/CachedStorageDriver.js";
16
19
 
@@ -19,6 +22,15 @@ const runExec = util.promisify(exec);
19
22
 
20
23
  export const debug = debugModule("CLI");
21
24
 
25
+ export const checkForSelfUpdate = async () => {
26
+ const notifier = updateNotifier({ pkg: cliPackage });
27
+ const updateInfo = await notifier.fetchInfo();
28
+
29
+ if (updateInfo.current != updateInfo.latest) {
30
+ throw new Error("Please update to the latest version of the dApp Store CLI before proceeding.");
31
+ }
32
+ };
33
+
22
34
  export const parseKeypair = (pathToKeypairFile: string) => {
23
35
  try {
24
36
  const keypairFile = fs.readFileSync(pathToKeypairFile, "utf-8");
@@ -48,8 +60,6 @@ export const getConfigFile = async (
48
60
 
49
61
  const config = await getConfig(configFilePath);
50
62
 
51
- console.info(`Pulling details from ${configFilePath}`);
52
-
53
63
  if (buildToolsDir && fs.lstatSync(buildToolsDir).isDirectory()) {
54
64
  // We validate that the config is going to have at least one installable asset
55
65
  const apkEntry = config.release.files.find(
@@ -122,10 +132,34 @@ const checkImageExtension = (uri: string): boolean => {
122
132
  );
123
133
  };
124
134
 
125
- export const showUserErrorMessage = (msg: string) => {
126
- console.error("\n:::: Solana Publish CLI: Error Message ::::");
127
- console.error(msg);
128
- console.error("");
135
+ export const generateNetworkSuffix = (rpcUrl: string): string => {
136
+ let suffix = "";
137
+
138
+ if (rpcUrl.indexOf("devnet") != -1) {
139
+ suffix = "?cluster=devnet";
140
+ } else if (rpcUrl.indexOf("testnet") != -1) {
141
+ suffix = "?cluster=testnet";
142
+ } else if (rpcUrl.indexOf("mainnet") != -1) {
143
+ suffix = "?cluster=mainnet";
144
+ }
145
+
146
+ return suffix;
147
+ };
148
+
149
+ export const showMessage = (
150
+ titleMessage = "",
151
+ contentMessage = "",
152
+ isError = false
153
+ ) => {
154
+ console.log(boxen(contentMessage, {
155
+ title: titleMessage,
156
+ padding: 1,
157
+ margin: 1,
158
+ borderStyle: 'single',
159
+ borderColor: isError ? "redBright" : "cyan",
160
+ textAlignment: "left",
161
+ titleAlignment: "center"
162
+ }));
129
163
  };
130
164
 
131
165
  const checkIconDimensions = async (iconPath: string): Promise<boolean> => {
@@ -167,7 +201,7 @@ const getAndroidDetails = async (
167
201
  let localeArray = Array.from(locales?.values() ?? []);
168
202
  if (localeArray.length == 2) {
169
203
  const localesSrc = localeArray[1];
170
- localeArray = localesSrc.split("' '").slice(1);
204
+ localeArray = ["en-US"].concat(localesSrc.split("' '").slice(1));
171
205
  }
172
206
 
173
207
  return {