@positron-js/cli 1.0.7 → 1.0.12

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 (46) hide show
  1. package/README.md +10 -2
  2. package/content/app/PositronApp/PositronApp.csproj +35 -21
  3. package/content/build-android.js +53 -0
  4. package/content/build-android.js.map +1 -0
  5. package/{build-android.jsx → content/build-android.jsx} +90 -85
  6. package/{build-ios.jsx → content/build-ios.jsx} +110 -107
  7. package/content/common.jsx +85 -0
  8. package/content/common.jsx.mjs +74 -0
  9. package/dist/cli.js +1 -1
  10. package/dist/cli.js.map +1 -1
  11. package/dist/commands/init/init.js +4 -10
  12. package/dist/commands/init/init.js.map +1 -1
  13. package/dist/commands/sync/sync.js.map +1 -1
  14. package/dist/core/LocalFile.js.map +1 -1
  15. package/dist/cwd/cwd.d.ts +1 -1
  16. package/dist/cwd/cwd.d.ts.map +1 -1
  17. package/dist/cwd/cwd.js.map +1 -1
  18. package/dist/tsconfig.tsbuildinfo +1 -1
  19. package/package.json +7 -3
  20. package/src/cli.ts +1 -1
  21. package/src/commands/init/init.ts +4 -12
  22. package/src/commands/sync/sync.ts +2 -2
  23. package/src/core/LocalFile.ts +1 -1
  24. package/src/cwd/cwd.ts +2 -2
  25. package/{build-android.config.js → template/build-android.config.js} +29 -29
  26. package/{build-ios.config.js → template/build-ios.config.js} +26 -26
  27. package/template/cert/android.keystore +1 -0
  28. package/template/cert/ios-app.mobileprovision +1 -0
  29. package/template/cert/ios-distribution.p12 +1 -0
  30. package/template/config/google-services.json +3 -0
  31. package/template/privacy-policy.md +1 -0
  32. package/template/res/app-icon-background.svg +42 -0
  33. package/template/res/app-icon.droid.svg +41 -0
  34. package/template/res/app-icon.ios.svg +41 -0
  35. package/template/res/splash.svg +41 -0
  36. package/tests/android/README.md +2 -0
  37. package/tests/android/build-android.config.js +30 -0
  38. package/tests/android/config/google-services.json +3 -0
  39. package/tests/android/package-lock.json +12 -0
  40. package/tests/android/package.json +4 -0
  41. package/tests/android/res/app-icon-background.svg +42 -0
  42. package/tests/android/res/app-icon.droid.svg +41 -0
  43. package/tests/android/res/app-icon.ios.svg +41 -0
  44. package/tests/android/res/splash.svg +41 -0
  45. package/tsconfig.json +1 -1
  46. package/content/app/PositronApp/Resources/Images/dotnet_bot.svg +0 -8
package/package.json CHANGED
@@ -1,17 +1,21 @@
1
1
  {
2
2
  "name": "@positron-js/cli",
3
- "version": "1.0.7",
3
+ "version": "1.0.12",
4
4
  "description": "Generate Code to create MAUI based Web View App",
5
5
  "main": "index.js",
6
6
  "type": "module",
7
7
  "scripts": {
8
8
  "test": "echo \"Error: no test specified\" && exit 0",
9
- "postversion": "git push --follow-tags"
9
+ "postversion": "git push --follow-tags",
10
+ "push": "git add -A && git commit -m \"dep vb\" && npm version patch"
10
11
  },
11
12
  "author": "",
12
13
  "license": "MIT",
14
+ "repository": {
15
+ "url": "https://github.com/Positron-JS/cli"
16
+ },
13
17
  "dependencies": {
14
- "@neurospeech/jex": "^1.0.103",
18
+ "@neurospeech/jex": "^1.0.142",
15
19
  "cheerio": "^1.0.0",
16
20
  "commander": "^12.1.0",
17
21
  "prompts": "^2.4.2"
package/src/cli.ts CHANGED
@@ -153,7 +153,7 @@ export class CLI {
153
153
 
154
154
  try {
155
155
 
156
- const [program, script, command, ... options] = argv;
156
+ const [_program, _script, command, ... options] = argv;
157
157
 
158
158
  if (/^help$/i.test(command)) {
159
159
  if (options.length) {
@@ -1,8 +1,8 @@
1
1
  import { cwd } from "../../cwd/cwd.js";
2
2
  import { cli } from "../../cli.js";
3
- import { AppInfo, packageContentFile, packagePath } from "../../AppInfo.js";
3
+ import { AppInfo, packagePath } from "../../AppInfo.js";
4
4
  import { spawnSync } from "child_process";
5
- import { join } from "path";
5
+ import { join, resolve } from "path";
6
6
 
7
7
 
8
8
  cli
@@ -24,17 +24,9 @@ cli
24
24
  // run npm install....
25
25
  spawnSync("npm", ["install"]);
26
26
 
27
- const contentAppFolder = join(packagePath, "content", "app");
27
+ const templateFolder = join(packagePath, "template");
28
28
 
29
- if (!cwd.exists("maui")) {
30
29
 
31
- await cwd.copyFolder(contentAppFolder, "maui", {});
30
+ await cwd.copyFolder(templateFolder, resolve("."), {});
32
31
 
33
- }
34
-
35
- await cwd.createTextFileIfNotExists("build-android.config.js", await packageContentFile("build-android.config.js").readFile())
36
- await cwd.createTextFileIfNotExists("build-ios.config.js", await packageContentFile("build-ios.config.js").readFile())
37
-
38
- await packageContentFile("build-android.jsx").copyTo("build-android.jsx");
39
- await packageContentFile("build-ios.jsx").copyTo("build-ios.jsx");
40
32
  });
@@ -2,8 +2,8 @@ import { join } from "path";
2
2
  import { AppInfo, packagePath } from "../../AppInfo.js";
3
3
  import { cli } from "../../cli.js";
4
4
  import { cwd } from "../../cwd/cwd.js";
5
- import { copyFile, readFile, writeFile } from "fs/promises";
6
- import { spawn, spawnSync } from "child_process";
5
+ import { copyFile } from "fs/promises";
6
+ import { spawnSync } from "child_process";
7
7
  import * as cheerio from "cheerio";
8
8
 
9
9
  cli
@@ -35,7 +35,7 @@ export default class LocalFile {
35
35
  }
36
36
 
37
37
  writeFile(content: Buffer | string, encoding?: BufferEncoding) {
38
- return writeFile(this.path, content, encoding);
38
+ return writeFile(this.path, content as any, encoding);
39
39
  }
40
40
 
41
41
  readFile(): Promise<Buffer>;
package/src/cwd/cwd.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { existsSync, mkdirSync, readdirSync, writeFileSync } from "fs";
2
- import { copyFile, mkdir, readdir, readFile, writeFile } from "fs/promises";
2
+ import { copyFile, readdir, readFile, writeFile } from "fs/promises";
3
3
  import { join } from "path";
4
4
  import LocalFile from "../core/LocalFile.js";
5
5
 
@@ -54,7 +54,7 @@ export const cwd = {
54
54
  return process.cwd();
55
55
  },
56
56
 
57
- createTextFileIfNotExists(file, data: string | Buffer) {
57
+ createTextFileIfNotExists(file, data) {
58
58
  const path = join(this.path, file);
59
59
  if (existsSync(path)) {
60
60
  return;
@@ -1,30 +1,30 @@
1
- import { readEnv } from "@neurospeech/jex/dist/index.js";
2
- import { resolve } from "path";
3
-
4
- export default [
5
- {
6
- id: "com.package.name",
7
- name: "Application Name",
8
-
9
- url: "https://....",
10
-
11
- targetFramework: "net9.0-android35.0",
12
-
13
- androidSdkRoot: readEnv("ANDROID_SDK_ROOT"),
14
- javaHome: readEnv("JAVA_HOME_21_X64", readEnv("JAVA_HOME")),
15
-
16
- androidKeyStore: resolve("./cert/android.keystore"),
17
- androidSigningKeyAlias: readEnv("SIGNING_KEY_ALIAS"),
18
-
19
- androidKeyStorePassword: readEnv("KEYSTORE_PASSWORD"),
20
- serviceAccountJsonRaw: readEnv("PLAYSTORE_SERVICE_ACCOUNT_JSON_TEXT", ""),
21
- serviceAccountJson: readEnv("PLAYSTORE_SERVICE_ACCOUNT_JSON_FILE", ""),
22
-
23
- /**
24
- * could be timestamp or patch.
25
- * timestamp will use current DATE and TIME in Seconds.
26
- * patch will parse number from package.json's version
27
- */
28
- buildNumber: "patch"
29
- },
1
+ import { readEnv } from "@neurospeech/jex/dist/index.js";
2
+ import { resolve } from "path";
3
+
4
+ export default [
5
+ {
6
+ id: "com.package.name",
7
+ name: "Application Name",
8
+
9
+ url: "https://....",
10
+
11
+ targetFramework: "net9.0-android35.0",
12
+
13
+ androidSdkRoot: readEnv("ANDROID_SDK_ROOT"),
14
+ javaHome: readEnv("JAVA_HOME_21_X64", readEnv("JAVA_HOME")),
15
+
16
+ androidKeyStore: resolve("./cert/android.keystore"),
17
+ androidSigningKeyAlias: readEnv("SIGNING_KEY_ALIAS"),
18
+
19
+ androidKeyStorePassword: readEnv("KEYSTORE_PASSWORD"),
20
+ serviceAccountJsonRaw: readEnv("PLAYSTORE_SERVICE_ACCOUNT_JSON_TEXT", ""),
21
+ serviceAccountJson: readEnv("PLAYSTORE_SERVICE_ACCOUNT_JSON_FILE", ""),
22
+
23
+ /**
24
+ * could be timestamp or patch.
25
+ * timestamp will use current DATE and TIME in Seconds.
26
+ * patch will parse number from package.json's version
27
+ */
28
+ buildNumber: "patch"
29
+ },
30
30
  ]
@@ -1,27 +1,27 @@
1
- import { readEnv } from "@neurospeech/jex/dist/index.js";
2
-
3
- export default [
4
- {
5
- id: "com.package.name",
6
- name: "Application Name",
7
-
8
- url: "https://....",
9
-
10
- certPath: "./cert/ios-distribution.p12",
11
- certPass: readEnv("APPLE_DISTRIBUTION_CERT_PASS"),
12
- provisioningProfileFile: readEnv("MOBILE_PROVISIONING_PROFILE", "./cert/ios-app.mobileprovision"),
13
-
14
- appStoreConnect: {
15
- apiKeyId: readEnv("APP_STORE_CONNECT_KEY_ID"),
16
- issuerId: readEnv("APP_STORE_CONNECT_ISSUER_ID"),
17
- privateKey: readEnv("APP_STORE_CONNECT_PRIVATE_KEY")
18
- },
19
-
20
- /**
21
- * could be timestamp or patch.
22
- * timestamp will use current DATE and TIME in Seconds.
23
- * patch will parse number from package.json's version
24
- */
25
- buildNumber: "patch"
26
- },
1
+ import { readEnv } from "@neurospeech/jex/dist/index.js";
2
+
3
+ export default [
4
+ {
5
+ id: "com.package.name",
6
+ name: "Application Name",
7
+
8
+ url: "https://....",
9
+
10
+ certPath: "./cert/ios-distribution.p12",
11
+ certPass: readEnv("APPLE_DISTRIBUTION_CERT_PASS"),
12
+ provisioningProfileFile: readEnv("MOBILE_PROVISIONING_PROFILE", "./cert/ios-app.mobileprovision"),
13
+
14
+ appStoreConnect: {
15
+ apiKeyId: readEnv("APP_STORE_CONNECT_KEY_ID"),
16
+ issuerId: readEnv("APP_STORE_CONNECT_ISSUER_ID"),
17
+ privateKey: readEnv("APP_STORE_CONNECT_PRIVATE_KEY")
18
+ },
19
+
20
+ /**
21
+ * could be timestamp or patch.
22
+ * timestamp will use current DATE and TIME in Seconds.
23
+ * patch will parse number from package.json's version
24
+ */
25
+ buildNumber: "patch"
26
+ },
27
27
  ]
@@ -0,0 +1 @@
1
+ // replace this with your keystore
@@ -0,0 +1 @@
1
+ // replace this file
@@ -0,0 +1 @@
1
+ // replace this file
@@ -0,0 +1,3 @@
1
+ {
2
+ "info": "change this file with your google-services.json"
3
+ }
@@ -0,0 +1 @@
1
+ // update privacy policy here
@@ -0,0 +1,42 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ width="456"
4
+ height="456"
5
+ viewBox="0 0 456 456"
6
+ version="1.1"
7
+ id="svg4"
8
+ sodipodi:docname="appicon.svg"
9
+ inkscape:version="1.1.2 (b8e25be833, 2022-02-05)"
10
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
11
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12
+ xmlns="http://www.w3.org/2000/svg"
13
+ xmlns:svg="http://www.w3.org/2000/svg">
14
+ <defs
15
+ id="defs8" />
16
+ <sodipodi:namedview
17
+ id="namedview6"
18
+ pagecolor="#ffffff"
19
+ bordercolor="#666666"
20
+ borderopacity="1.0"
21
+ inkscape:pageshadow="2"
22
+ inkscape:pageopacity="0.0"
23
+ inkscape:pagecheckerboard="0"
24
+ showgrid="false"
25
+ inkscape:zoom="1.8048246"
26
+ inkscape:cx="228"
27
+ inkscape:cy="228.27704"
28
+ inkscape:window-width="1920"
29
+ inkscape:window-height="1009"
30
+ inkscape:window-x="-8"
31
+ inkscape:window-y="-8"
32
+ inkscape:window-maximized="1"
33
+ inkscape:current-layer="svg4" />
34
+ <rect
35
+ x="0"
36
+ y="0"
37
+ width="456"
38
+ height="456"
39
+ fill="#daff05"
40
+ id="rect2"
41
+ style="fill:#ffffff;fill-opacity:1" />
42
+ </svg>
@@ -0,0 +1,41 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ width="500"
4
+ height="500"
5
+ viewBox="0 0 500 500"
6
+ version="1.1"
7
+ xml:space="preserve"
8
+ style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
9
+ id="svg3"
10
+ sodipodi:docname="logo-plain.svg"
11
+ inkscape:version="1.1.2 (b8e25be833, 2022-02-05)"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ xmlns:svg="http://www.w3.org/2000/svg"><defs
16
+ id="defs7" /><sodipodi:namedview
17
+ id="namedview5"
18
+ pagecolor="#ffffff"
19
+ bordercolor="#666666"
20
+ borderopacity="1.0"
21
+ inkscape:pageshadow="2"
22
+ inkscape:pageopacity="0.0"
23
+ inkscape:pagecheckerboard="0"
24
+ showgrid="false"
25
+ inkscape:zoom="1.5674954"
26
+ inkscape:cx="360.12865"
27
+ inkscape:cy="255.18416"
28
+ inkscape:window-width="1920"
29
+ inkscape:window-height="1009"
30
+ inkscape:window-x="1912"
31
+ inkscape:window-y="-8"
32
+ inkscape:window-maximized="1"
33
+ inkscape:current-layer="layer4" />
34
+
35
+ <path
36
+ id="path8468"
37
+ style="display:inline;fill:#fb1a04;fill-opacity:1;stroke-width:0.633614"
38
+ d="M 184.98242 100.00977 C 179.99609 99.923852 174.9707 100.35957 169.96094 101.33594 C 129.58984 109.21536 100 150.05014 100 197.94336 L 100 201.91797 C 100 230.35241 110.07813 257.55312 127.89062 276.94336 L 233.76953 392.53125 C 238.16407 397.32743 243.96484 400 250 400 C 256.03516 400 261.83595 397.32743 266.23047 392.53125 L 372.10938 276.94336 C 389.92188 257.55312 400 230.35241 400 201.91797 L 400 197.94336 C 400 150.05014 370.41016 109.21536 330.03906 101.33594 C 303.32032 96.128665 276.13283 106.33737 257.03125 128.67383 L 250 136.89648 L 242.96875 128.67383 C 227.44873 110.52545 206.58986 100.38206 184.98242 100.00977 z M 251.18555 163.91406 C 269.40177 163.91406 284.69172 169.47666 297.05273 180.60156 C 309.41374 191.72647 315.59375 206.07107 315.59375 223.63672 C 315.59375 237.62417 310.74637 250.21238 301.05273 261.40234 C 291.3591 272.59231 280.46211 278.1875 268.36133 278.1875 C 263.54704 278.1875 259.74085 276.98526 256.94336 274.57812 C 254.14587 272.17098 252.65025 268.65622 252.45508 264.03711 C 246.46974 268.8514 241.58977 272.39875 237.81641 274.67578 C 234.10811 276.88775 231.11492 277.99219 228.83789 277.99219 C 221.61646 277.99219 215.86023 275.32499 211.56641 269.99023 C 207.33764 264.59043 205.22266 257.76041 205.22266 249.49805 C 205.22266 234.86001 209.71146 222.49804 218.68945 212.41406 C 227.66745 202.33008 238.98822 197.28906 252.65039 197.28906 C 257.78997 197.28906 263.77439 198.33026 270.60547 200.41211 C 273.6632 199.82659 276.91717 198.91579 280.36523 197.67969 L 281.53516 198.36133 C 279.58342 204.86712 277.3074 214.52929 274.70508 227.3457 L 268.55664 257.5 C 268.16629 259.38668 267.9707 260.94749 267.9707 262.18359 C 267.9707 264.52568 268.52488 266.21689 269.63086 267.25781 C 270.73685 268.23368 272.36285 268.72266 274.50977 268.72266 C 282.31672 268.72266 289.40752 264.20126 295.7832 255.1582 C 302.15888 246.05009 305.34766 235.8683 305.34766 224.61328 C 305.34766 208.54397 300.14169 195.59719 289.73242 185.77344 C 279.38821 175.94969 266.44142 171.03711 250.89258 171.03711 C 230.78967 171.03711 214.52568 177.70609 202.09961 191.04297 C 189.7386 204.37984 183.55859 221.55464 183.55859 242.56836 C 183.55859 261.82551 189.44522 277.4395 201.2207 289.41016 C 213.06125 301.44588 228.64264 307.46484 247.96484 307.46484 C 270.47489 307.46484 290.35144 299.36349 307.5918 283.16406 L 311.78711 287.84961 C 292.13961 307.56216 269.20663 317.41797 242.98828 317.41797 C 220.86858 317.41797 203.01118 310.71639 189.41406 297.31445 C 175.81695 283.91251 169.01758 266.57473 169.01758 245.30078 C 169.01758 221.81487 176.69515 202.3947 192.04883 187.04102 C 207.46756 171.62229 227.17917 163.91406 251.18555 163.91406 z M 251.2832 204.2168 C 243.02085 204.2168 236.02783 208.51001 230.30273 217.09766 C 224.57763 225.62025 221.71484 235.08682 221.71484 245.49609 C 221.71484 251.48142 222.78863 256.4592 224.93555 260.42773 C 227.14751 264.39627 230.30174 266.38086 234.40039 266.38086 C 238.04364 266.38086 244.29079 263.28988 253.13867 257.10938 L 263.38477 207.4375 C 259.28612 205.29059 255.25174 204.2168 251.2832 204.2168 z " /><g
39
+ inkscape:groupmode="layer"
40
+ id="layer4"
41
+ inkscape:label="Final" /></svg>
@@ -0,0 +1,41 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ width="500"
4
+ height="500"
5
+ viewBox="0 0 500 500"
6
+ version="1.1"
7
+ xml:space="preserve"
8
+ style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
9
+ id="svg3"
10
+ sodipodi:docname="logo-plain.svg"
11
+ inkscape:version="1.1.2 (b8e25be833, 2022-02-05)"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ xmlns:svg="http://www.w3.org/2000/svg"><defs
16
+ id="defs7" /><sodipodi:namedview
17
+ id="namedview5"
18
+ pagecolor="#ffffff"
19
+ bordercolor="#666666"
20
+ borderopacity="1.0"
21
+ inkscape:pageshadow="2"
22
+ inkscape:pageopacity="0.0"
23
+ inkscape:pagecheckerboard="0"
24
+ showgrid="false"
25
+ inkscape:zoom="1.5674954"
26
+ inkscape:cx="360.12865"
27
+ inkscape:cy="255.18416"
28
+ inkscape:window-width="1920"
29
+ inkscape:window-height="1009"
30
+ inkscape:window-x="1912"
31
+ inkscape:window-y="-8"
32
+ inkscape:window-maximized="1"
33
+ inkscape:current-layer="layer4" />
34
+
35
+ <path
36
+ id="path8468"
37
+ style="display:inline;fill:#fb1a04;fill-opacity:1;stroke-width:0.633614"
38
+ d="M 184.98242 100.00977 C 179.99609 99.923852 174.9707 100.35957 169.96094 101.33594 C 129.58984 109.21536 100 150.05014 100 197.94336 L 100 201.91797 C 100 230.35241 110.07813 257.55312 127.89062 276.94336 L 233.76953 392.53125 C 238.16407 397.32743 243.96484 400 250 400 C 256.03516 400 261.83595 397.32743 266.23047 392.53125 L 372.10938 276.94336 C 389.92188 257.55312 400 230.35241 400 201.91797 L 400 197.94336 C 400 150.05014 370.41016 109.21536 330.03906 101.33594 C 303.32032 96.128665 276.13283 106.33737 257.03125 128.67383 L 250 136.89648 L 242.96875 128.67383 C 227.44873 110.52545 206.58986 100.38206 184.98242 100.00977 z M 251.18555 163.91406 C 269.40177 163.91406 284.69172 169.47666 297.05273 180.60156 C 309.41374 191.72647 315.59375 206.07107 315.59375 223.63672 C 315.59375 237.62417 310.74637 250.21238 301.05273 261.40234 C 291.3591 272.59231 280.46211 278.1875 268.36133 278.1875 C 263.54704 278.1875 259.74085 276.98526 256.94336 274.57812 C 254.14587 272.17098 252.65025 268.65622 252.45508 264.03711 C 246.46974 268.8514 241.58977 272.39875 237.81641 274.67578 C 234.10811 276.88775 231.11492 277.99219 228.83789 277.99219 C 221.61646 277.99219 215.86023 275.32499 211.56641 269.99023 C 207.33764 264.59043 205.22266 257.76041 205.22266 249.49805 C 205.22266 234.86001 209.71146 222.49804 218.68945 212.41406 C 227.66745 202.33008 238.98822 197.28906 252.65039 197.28906 C 257.78997 197.28906 263.77439 198.33026 270.60547 200.41211 C 273.6632 199.82659 276.91717 198.91579 280.36523 197.67969 L 281.53516 198.36133 C 279.58342 204.86712 277.3074 214.52929 274.70508 227.3457 L 268.55664 257.5 C 268.16629 259.38668 267.9707 260.94749 267.9707 262.18359 C 267.9707 264.52568 268.52488 266.21689 269.63086 267.25781 C 270.73685 268.23368 272.36285 268.72266 274.50977 268.72266 C 282.31672 268.72266 289.40752 264.20126 295.7832 255.1582 C 302.15888 246.05009 305.34766 235.8683 305.34766 224.61328 C 305.34766 208.54397 300.14169 195.59719 289.73242 185.77344 C 279.38821 175.94969 266.44142 171.03711 250.89258 171.03711 C 230.78967 171.03711 214.52568 177.70609 202.09961 191.04297 C 189.7386 204.37984 183.55859 221.55464 183.55859 242.56836 C 183.55859 261.82551 189.44522 277.4395 201.2207 289.41016 C 213.06125 301.44588 228.64264 307.46484 247.96484 307.46484 C 270.47489 307.46484 290.35144 299.36349 307.5918 283.16406 L 311.78711 287.84961 C 292.13961 307.56216 269.20663 317.41797 242.98828 317.41797 C 220.86858 317.41797 203.01118 310.71639 189.41406 297.31445 C 175.81695 283.91251 169.01758 266.57473 169.01758 245.30078 C 169.01758 221.81487 176.69515 202.3947 192.04883 187.04102 C 207.46756 171.62229 227.17917 163.91406 251.18555 163.91406 z M 251.2832 204.2168 C 243.02085 204.2168 236.02783 208.51001 230.30273 217.09766 C 224.57763 225.62025 221.71484 235.08682 221.71484 245.49609 C 221.71484 251.48142 222.78863 256.4592 224.93555 260.42773 C 227.14751 264.39627 230.30174 266.38086 234.40039 266.38086 C 238.04364 266.38086 244.29079 263.28988 253.13867 257.10938 L 263.38477 207.4375 C 259.28612 205.29059 255.25174 204.2168 251.2832 204.2168 z " /><g
39
+ inkscape:groupmode="layer"
40
+ id="layer4"
41
+ inkscape:label="Final" /></svg>
@@ -0,0 +1,41 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ width="500"
4
+ height="500"
5
+ viewBox="0 0 500 500"
6
+ version="1.1"
7
+ xml:space="preserve"
8
+ style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
9
+ id="svg3"
10
+ sodipodi:docname="logo-plain.svg"
11
+ inkscape:version="1.1.2 (b8e25be833, 2022-02-05)"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ xmlns:svg="http://www.w3.org/2000/svg"><defs
16
+ id="defs7" /><sodipodi:namedview
17
+ id="namedview5"
18
+ pagecolor="#ffffff"
19
+ bordercolor="#666666"
20
+ borderopacity="1.0"
21
+ inkscape:pageshadow="2"
22
+ inkscape:pageopacity="0.0"
23
+ inkscape:pagecheckerboard="0"
24
+ showgrid="false"
25
+ inkscape:zoom="1.5674954"
26
+ inkscape:cx="360.12865"
27
+ inkscape:cy="255.18416"
28
+ inkscape:window-width="1920"
29
+ inkscape:window-height="1009"
30
+ inkscape:window-x="1912"
31
+ inkscape:window-y="-8"
32
+ inkscape:window-maximized="1"
33
+ inkscape:current-layer="layer4" />
34
+
35
+ <path
36
+ id="path8468"
37
+ style="display:inline;fill:#fb1a04;fill-opacity:1;stroke-width:0.633614"
38
+ d="M 184.98242 100.00977 C 179.99609 99.923852 174.9707 100.35957 169.96094 101.33594 C 129.58984 109.21536 100 150.05014 100 197.94336 L 100 201.91797 C 100 230.35241 110.07813 257.55312 127.89062 276.94336 L 233.76953 392.53125 C 238.16407 397.32743 243.96484 400 250 400 C 256.03516 400 261.83595 397.32743 266.23047 392.53125 L 372.10938 276.94336 C 389.92188 257.55312 400 230.35241 400 201.91797 L 400 197.94336 C 400 150.05014 370.41016 109.21536 330.03906 101.33594 C 303.32032 96.128665 276.13283 106.33737 257.03125 128.67383 L 250 136.89648 L 242.96875 128.67383 C 227.44873 110.52545 206.58986 100.38206 184.98242 100.00977 z M 251.18555 163.91406 C 269.40177 163.91406 284.69172 169.47666 297.05273 180.60156 C 309.41374 191.72647 315.59375 206.07107 315.59375 223.63672 C 315.59375 237.62417 310.74637 250.21238 301.05273 261.40234 C 291.3591 272.59231 280.46211 278.1875 268.36133 278.1875 C 263.54704 278.1875 259.74085 276.98526 256.94336 274.57812 C 254.14587 272.17098 252.65025 268.65622 252.45508 264.03711 C 246.46974 268.8514 241.58977 272.39875 237.81641 274.67578 C 234.10811 276.88775 231.11492 277.99219 228.83789 277.99219 C 221.61646 277.99219 215.86023 275.32499 211.56641 269.99023 C 207.33764 264.59043 205.22266 257.76041 205.22266 249.49805 C 205.22266 234.86001 209.71146 222.49804 218.68945 212.41406 C 227.66745 202.33008 238.98822 197.28906 252.65039 197.28906 C 257.78997 197.28906 263.77439 198.33026 270.60547 200.41211 C 273.6632 199.82659 276.91717 198.91579 280.36523 197.67969 L 281.53516 198.36133 C 279.58342 204.86712 277.3074 214.52929 274.70508 227.3457 L 268.55664 257.5 C 268.16629 259.38668 267.9707 260.94749 267.9707 262.18359 C 267.9707 264.52568 268.52488 266.21689 269.63086 267.25781 C 270.73685 268.23368 272.36285 268.72266 274.50977 268.72266 C 282.31672 268.72266 289.40752 264.20126 295.7832 255.1582 C 302.15888 246.05009 305.34766 235.8683 305.34766 224.61328 C 305.34766 208.54397 300.14169 195.59719 289.73242 185.77344 C 279.38821 175.94969 266.44142 171.03711 250.89258 171.03711 C 230.78967 171.03711 214.52568 177.70609 202.09961 191.04297 C 189.7386 204.37984 183.55859 221.55464 183.55859 242.56836 C 183.55859 261.82551 189.44522 277.4395 201.2207 289.41016 C 213.06125 301.44588 228.64264 307.46484 247.96484 307.46484 C 270.47489 307.46484 290.35144 299.36349 307.5918 283.16406 L 311.78711 287.84961 C 292.13961 307.56216 269.20663 317.41797 242.98828 317.41797 C 220.86858 317.41797 203.01118 310.71639 189.41406 297.31445 C 175.81695 283.91251 169.01758 266.57473 169.01758 245.30078 C 169.01758 221.81487 176.69515 202.3947 192.04883 187.04102 C 207.46756 171.62229 227.17917 163.91406 251.18555 163.91406 z M 251.2832 204.2168 C 243.02085 204.2168 236.02783 208.51001 230.30273 217.09766 C 224.57763 225.62025 221.71484 235.08682 221.71484 245.49609 C 221.71484 251.48142 222.78863 256.4592 224.93555 260.42773 C 227.14751 264.39627 230.30174 266.38086 234.40039 266.38086 C 238.04364 266.38086 244.29079 263.28988 253.13867 257.10938 L 263.38477 207.4375 C 259.28612 205.29059 255.25174 204.2168 251.2832 204.2168 z " /><g
39
+ inkscape:groupmode="layer"
40
+ id="layer4"
41
+ inkscape:label="Final" /></svg>
@@ -0,0 +1,2 @@
1
+ run `node ../dist/cli.js init`
2
+ run `npx jex ../../content/build-android.jsx`
@@ -0,0 +1,30 @@
1
+ import { readEnv } from "@neurospeech/jex/dist/index.js";
2
+ import { resolve } from "path";
3
+
4
+ export default [
5
+ {
6
+ id: "com.package.name",
7
+ name: "Application Name",
8
+
9
+ url: "https://....",
10
+
11
+ targetFramework: "net9.0-android35.0",
12
+
13
+ androidSdkRoot: readEnv("ANDROID_SDK_ROOT"),
14
+ javaHome: readEnv("JAVA_HOME_21_X64", readEnv("JAVA_HOME")),
15
+
16
+ androidKeyStore: resolve("./cert/android.keystore"),
17
+ androidSigningKeyAlias: readEnv("SIGNING_KEY_ALIAS"),
18
+
19
+ androidKeyStorePassword: readEnv("KEYSTORE_PASSWORD"),
20
+ serviceAccountJsonRaw: readEnv("PLAYSTORE_SERVICE_ACCOUNT_JSON_TEXT", ""),
21
+ serviceAccountJson: readEnv("PLAYSTORE_SERVICE_ACCOUNT_JSON_FILE", ""),
22
+
23
+ /**
24
+ * could be timestamp or patch.
25
+ * timestamp will use current DATE and TIME in Seconds.
26
+ * patch will parse number from package.json's version
27
+ */
28
+ buildNumber: "patch"
29
+ },
30
+ ]
@@ -0,0 +1,3 @@
1
+ {
2
+ "info": "change this file with your google-services.json"
3
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "test-name",
3
+ "version": "1.0.7",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "test-name",
9
+ "version": "1.0.7"
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "name": "test-name",
3
+ "version": "1.0.7"
4
+ }
@@ -0,0 +1,42 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ width="456"
4
+ height="456"
5
+ viewBox="0 0 456 456"
6
+ version="1.1"
7
+ id="svg4"
8
+ sodipodi:docname="appicon.svg"
9
+ inkscape:version="1.1.2 (b8e25be833, 2022-02-05)"
10
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
11
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12
+ xmlns="http://www.w3.org/2000/svg"
13
+ xmlns:svg="http://www.w3.org/2000/svg">
14
+ <defs
15
+ id="defs8" />
16
+ <sodipodi:namedview
17
+ id="namedview6"
18
+ pagecolor="#ffffff"
19
+ bordercolor="#666666"
20
+ borderopacity="1.0"
21
+ inkscape:pageshadow="2"
22
+ inkscape:pageopacity="0.0"
23
+ inkscape:pagecheckerboard="0"
24
+ showgrid="false"
25
+ inkscape:zoom="1.8048246"
26
+ inkscape:cx="228"
27
+ inkscape:cy="228.27704"
28
+ inkscape:window-width="1920"
29
+ inkscape:window-height="1009"
30
+ inkscape:window-x="-8"
31
+ inkscape:window-y="-8"
32
+ inkscape:window-maximized="1"
33
+ inkscape:current-layer="svg4" />
34
+ <rect
35
+ x="0"
36
+ y="0"
37
+ width="456"
38
+ height="456"
39
+ fill="#daff05"
40
+ id="rect2"
41
+ style="fill:#ffffff;fill-opacity:1" />
42
+ </svg>
@@ -0,0 +1,41 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ width="500"
4
+ height="500"
5
+ viewBox="0 0 500 500"
6
+ version="1.1"
7
+ xml:space="preserve"
8
+ style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
9
+ id="svg3"
10
+ sodipodi:docname="logo-plain.svg"
11
+ inkscape:version="1.1.2 (b8e25be833, 2022-02-05)"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ xmlns:svg="http://www.w3.org/2000/svg"><defs
16
+ id="defs7" /><sodipodi:namedview
17
+ id="namedview5"
18
+ pagecolor="#ffffff"
19
+ bordercolor="#666666"
20
+ borderopacity="1.0"
21
+ inkscape:pageshadow="2"
22
+ inkscape:pageopacity="0.0"
23
+ inkscape:pagecheckerboard="0"
24
+ showgrid="false"
25
+ inkscape:zoom="1.5674954"
26
+ inkscape:cx="360.12865"
27
+ inkscape:cy="255.18416"
28
+ inkscape:window-width="1920"
29
+ inkscape:window-height="1009"
30
+ inkscape:window-x="1912"
31
+ inkscape:window-y="-8"
32
+ inkscape:window-maximized="1"
33
+ inkscape:current-layer="layer4" />
34
+
35
+ <path
36
+ id="path8468"
37
+ style="display:inline;fill:#fb1a04;fill-opacity:1;stroke-width:0.633614"
38
+ d="M 184.98242 100.00977 C 179.99609 99.923852 174.9707 100.35957 169.96094 101.33594 C 129.58984 109.21536 100 150.05014 100 197.94336 L 100 201.91797 C 100 230.35241 110.07813 257.55312 127.89062 276.94336 L 233.76953 392.53125 C 238.16407 397.32743 243.96484 400 250 400 C 256.03516 400 261.83595 397.32743 266.23047 392.53125 L 372.10938 276.94336 C 389.92188 257.55312 400 230.35241 400 201.91797 L 400 197.94336 C 400 150.05014 370.41016 109.21536 330.03906 101.33594 C 303.32032 96.128665 276.13283 106.33737 257.03125 128.67383 L 250 136.89648 L 242.96875 128.67383 C 227.44873 110.52545 206.58986 100.38206 184.98242 100.00977 z M 251.18555 163.91406 C 269.40177 163.91406 284.69172 169.47666 297.05273 180.60156 C 309.41374 191.72647 315.59375 206.07107 315.59375 223.63672 C 315.59375 237.62417 310.74637 250.21238 301.05273 261.40234 C 291.3591 272.59231 280.46211 278.1875 268.36133 278.1875 C 263.54704 278.1875 259.74085 276.98526 256.94336 274.57812 C 254.14587 272.17098 252.65025 268.65622 252.45508 264.03711 C 246.46974 268.8514 241.58977 272.39875 237.81641 274.67578 C 234.10811 276.88775 231.11492 277.99219 228.83789 277.99219 C 221.61646 277.99219 215.86023 275.32499 211.56641 269.99023 C 207.33764 264.59043 205.22266 257.76041 205.22266 249.49805 C 205.22266 234.86001 209.71146 222.49804 218.68945 212.41406 C 227.66745 202.33008 238.98822 197.28906 252.65039 197.28906 C 257.78997 197.28906 263.77439 198.33026 270.60547 200.41211 C 273.6632 199.82659 276.91717 198.91579 280.36523 197.67969 L 281.53516 198.36133 C 279.58342 204.86712 277.3074 214.52929 274.70508 227.3457 L 268.55664 257.5 C 268.16629 259.38668 267.9707 260.94749 267.9707 262.18359 C 267.9707 264.52568 268.52488 266.21689 269.63086 267.25781 C 270.73685 268.23368 272.36285 268.72266 274.50977 268.72266 C 282.31672 268.72266 289.40752 264.20126 295.7832 255.1582 C 302.15888 246.05009 305.34766 235.8683 305.34766 224.61328 C 305.34766 208.54397 300.14169 195.59719 289.73242 185.77344 C 279.38821 175.94969 266.44142 171.03711 250.89258 171.03711 C 230.78967 171.03711 214.52568 177.70609 202.09961 191.04297 C 189.7386 204.37984 183.55859 221.55464 183.55859 242.56836 C 183.55859 261.82551 189.44522 277.4395 201.2207 289.41016 C 213.06125 301.44588 228.64264 307.46484 247.96484 307.46484 C 270.47489 307.46484 290.35144 299.36349 307.5918 283.16406 L 311.78711 287.84961 C 292.13961 307.56216 269.20663 317.41797 242.98828 317.41797 C 220.86858 317.41797 203.01118 310.71639 189.41406 297.31445 C 175.81695 283.91251 169.01758 266.57473 169.01758 245.30078 C 169.01758 221.81487 176.69515 202.3947 192.04883 187.04102 C 207.46756 171.62229 227.17917 163.91406 251.18555 163.91406 z M 251.2832 204.2168 C 243.02085 204.2168 236.02783 208.51001 230.30273 217.09766 C 224.57763 225.62025 221.71484 235.08682 221.71484 245.49609 C 221.71484 251.48142 222.78863 256.4592 224.93555 260.42773 C 227.14751 264.39627 230.30174 266.38086 234.40039 266.38086 C 238.04364 266.38086 244.29079 263.28988 253.13867 257.10938 L 263.38477 207.4375 C 259.28612 205.29059 255.25174 204.2168 251.2832 204.2168 z " /><g
39
+ inkscape:groupmode="layer"
40
+ id="layer4"
41
+ inkscape:label="Final" /></svg>
@@ -0,0 +1,41 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ width="500"
4
+ height="500"
5
+ viewBox="0 0 500 500"
6
+ version="1.1"
7
+ xml:space="preserve"
8
+ style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
9
+ id="svg3"
10
+ sodipodi:docname="logo-plain.svg"
11
+ inkscape:version="1.1.2 (b8e25be833, 2022-02-05)"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ xmlns:svg="http://www.w3.org/2000/svg"><defs
16
+ id="defs7" /><sodipodi:namedview
17
+ id="namedview5"
18
+ pagecolor="#ffffff"
19
+ bordercolor="#666666"
20
+ borderopacity="1.0"
21
+ inkscape:pageshadow="2"
22
+ inkscape:pageopacity="0.0"
23
+ inkscape:pagecheckerboard="0"
24
+ showgrid="false"
25
+ inkscape:zoom="1.5674954"
26
+ inkscape:cx="360.12865"
27
+ inkscape:cy="255.18416"
28
+ inkscape:window-width="1920"
29
+ inkscape:window-height="1009"
30
+ inkscape:window-x="1912"
31
+ inkscape:window-y="-8"
32
+ inkscape:window-maximized="1"
33
+ inkscape:current-layer="layer4" />
34
+
35
+ <path
36
+ id="path8468"
37
+ style="display:inline;fill:#fb1a04;fill-opacity:1;stroke-width:0.633614"
38
+ d="M 184.98242 100.00977 C 179.99609 99.923852 174.9707 100.35957 169.96094 101.33594 C 129.58984 109.21536 100 150.05014 100 197.94336 L 100 201.91797 C 100 230.35241 110.07813 257.55312 127.89062 276.94336 L 233.76953 392.53125 C 238.16407 397.32743 243.96484 400 250 400 C 256.03516 400 261.83595 397.32743 266.23047 392.53125 L 372.10938 276.94336 C 389.92188 257.55312 400 230.35241 400 201.91797 L 400 197.94336 C 400 150.05014 370.41016 109.21536 330.03906 101.33594 C 303.32032 96.128665 276.13283 106.33737 257.03125 128.67383 L 250 136.89648 L 242.96875 128.67383 C 227.44873 110.52545 206.58986 100.38206 184.98242 100.00977 z M 251.18555 163.91406 C 269.40177 163.91406 284.69172 169.47666 297.05273 180.60156 C 309.41374 191.72647 315.59375 206.07107 315.59375 223.63672 C 315.59375 237.62417 310.74637 250.21238 301.05273 261.40234 C 291.3591 272.59231 280.46211 278.1875 268.36133 278.1875 C 263.54704 278.1875 259.74085 276.98526 256.94336 274.57812 C 254.14587 272.17098 252.65025 268.65622 252.45508 264.03711 C 246.46974 268.8514 241.58977 272.39875 237.81641 274.67578 C 234.10811 276.88775 231.11492 277.99219 228.83789 277.99219 C 221.61646 277.99219 215.86023 275.32499 211.56641 269.99023 C 207.33764 264.59043 205.22266 257.76041 205.22266 249.49805 C 205.22266 234.86001 209.71146 222.49804 218.68945 212.41406 C 227.66745 202.33008 238.98822 197.28906 252.65039 197.28906 C 257.78997 197.28906 263.77439 198.33026 270.60547 200.41211 C 273.6632 199.82659 276.91717 198.91579 280.36523 197.67969 L 281.53516 198.36133 C 279.58342 204.86712 277.3074 214.52929 274.70508 227.3457 L 268.55664 257.5 C 268.16629 259.38668 267.9707 260.94749 267.9707 262.18359 C 267.9707 264.52568 268.52488 266.21689 269.63086 267.25781 C 270.73685 268.23368 272.36285 268.72266 274.50977 268.72266 C 282.31672 268.72266 289.40752 264.20126 295.7832 255.1582 C 302.15888 246.05009 305.34766 235.8683 305.34766 224.61328 C 305.34766 208.54397 300.14169 195.59719 289.73242 185.77344 C 279.38821 175.94969 266.44142 171.03711 250.89258 171.03711 C 230.78967 171.03711 214.52568 177.70609 202.09961 191.04297 C 189.7386 204.37984 183.55859 221.55464 183.55859 242.56836 C 183.55859 261.82551 189.44522 277.4395 201.2207 289.41016 C 213.06125 301.44588 228.64264 307.46484 247.96484 307.46484 C 270.47489 307.46484 290.35144 299.36349 307.5918 283.16406 L 311.78711 287.84961 C 292.13961 307.56216 269.20663 317.41797 242.98828 317.41797 C 220.86858 317.41797 203.01118 310.71639 189.41406 297.31445 C 175.81695 283.91251 169.01758 266.57473 169.01758 245.30078 C 169.01758 221.81487 176.69515 202.3947 192.04883 187.04102 C 207.46756 171.62229 227.17917 163.91406 251.18555 163.91406 z M 251.2832 204.2168 C 243.02085 204.2168 236.02783 208.51001 230.30273 217.09766 C 224.57763 225.62025 221.71484 235.08682 221.71484 245.49609 C 221.71484 251.48142 222.78863 256.4592 224.93555 260.42773 C 227.14751 264.39627 230.30174 266.38086 234.40039 266.38086 C 238.04364 266.38086 244.29079 263.28988 253.13867 257.10938 L 263.38477 207.4375 C 259.28612 205.29059 255.25174 204.2168 251.2832 204.2168 z " /><g
39
+ inkscape:groupmode="layer"
40
+ id="layer4"
41
+ inkscape:label="Final" /></svg>