xs-dev 0.15.1 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/xs-dev CHANGED
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
 
3
-
4
3
  /* tslint:disable */
5
4
  // check if we're running in dev mode
6
5
  var devMode = require('fs').existsSync(`${__dirname}/../src`)
@@ -13,9 +12,9 @@ if (wantsCompiled || !devMode) {
13
12
  } else {
14
13
  // this runs from the typescript source (for dev only)
15
14
  // hook into ts-node so we can run typescript on the fly
16
- require('ts-node').register({ project: `${__dirname}/../tsconfig.json` })
15
+ require('ts-node').register({
16
+ project: `${__dirname}/../tsconfig.json`,
17
+ })
17
18
  // run the CLI with the current process arguments
18
19
  require(`${__dirname}/../src/cli`).run(process.argv)
19
20
  }
20
-
21
-
@@ -11,7 +11,7 @@ const command = {
11
11
  description: 'Download and build Moddable tooling for various platform targets',
12
12
  run: async ({ parameters, setup, prompt, print }) => {
13
13
  const currentPlatform = (0, os_1.type)().toLowerCase();
14
- const { device, listDevices = false, tool, } = parameters.options;
14
+ const { device, listDevices = false, tool, targetBranch = 'latest-release', } = parameters.options;
15
15
  let target = device !== null && device !== void 0 ? device : currentPlatform;
16
16
  if (device === undefined && listDevices) {
17
17
  const choices = [
@@ -45,8 +45,8 @@ const command = {
45
45
  await (0, fontbm_1.default)();
46
46
  return;
47
47
  }
48
- await setup[target]();
48
+ await setup[target]({ targetBranch });
49
49
  },
50
50
  };
51
51
  exports.default = command;
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwyQkFBeUM7QUFFekMscUVBQWlEO0FBQ2pELHVEQUF3RDtBQVF4RCxNQUFNLE9BQU8sR0FBaUM7SUFDNUMsSUFBSSxFQUFFLE9BQU87SUFDYixXQUFXLEVBQ1Qsa0VBQWtFO0lBQ3BFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ2xELE1BQU0sZUFBZSxHQUFXLElBQUEsU0FBWSxHQUFFLENBQUMsV0FBVyxFQUFZLENBQUE7UUFDdEUsTUFBTSxFQUNKLE1BQU0sRUFDTixXQUFXLEdBQUcsS0FBSyxFQUNuQixJQUFJLEdBQ0wsR0FBaUIsVUFBVSxDQUFDLE9BQU8sQ0FBQTtRQUNwQyxJQUFJLE1BQU0sR0FBVyxNQUFNLGFBQU4sTUFBTSxjQUFOLE1BQU0sR0FBSSxlQUFlLENBQUE7UUFFOUMsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLFdBQVcsRUFBRTtZQUN2QyxNQUFNLE9BQU8sR0FBRztnQkFDZCxTQUFTO2dCQUNULE9BQU87Z0JBQ1AsTUFBTTtnQkFDTixNQUFNO2dCQUNOLHNCQUFZLENBQUMsZUFBZSxDQUFDO2FBQzlCLENBQUE7WUFDRCxNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDbEQ7b0JBQ0UsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLElBQUksRUFBRSxRQUFRO29CQUNkLE9BQU8sRUFBRSx3Q0FBd0M7b0JBQ2pELE9BQU87aUJBQ1I7YUFDRixDQUFDLENBQUE7WUFFRixJQUFJLGNBQWMsS0FBSyxFQUFFLElBQUksY0FBYyxLQUFLLFNBQVMsRUFBRTtnQkFDekQsTUFBTSxHQUFHLGNBQXdCLENBQUE7YUFDbEM7aUJBQU07Z0JBQ0wsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFBO2dCQUNyRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQ2hCO1NBQ0Y7UUFFRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDdEIsSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUNyQixLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFBO2dCQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQ2hCO1lBQ0QsTUFBTSxJQUFBLGdCQUFXLEdBQUUsQ0FBQTtZQUNuQixPQUFNO1NBQ1A7UUFFRCxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFBO0lBQ3ZCLENBQUM7Q0FDRixDQUFBO0FBRUQsa0JBQWUsT0FBTyxDQUFBIn0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwyQkFBeUM7QUFFekMscUVBQWlEO0FBQ2pELHVEQUF3RDtBQVN4RCxNQUFNLE9BQU8sR0FBaUM7SUFDNUMsSUFBSSxFQUFFLE9BQU87SUFDYixXQUFXLEVBQ1Qsa0VBQWtFO0lBQ3BFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ2xELE1BQU0sZUFBZSxHQUFXLElBQUEsU0FBWSxHQUFFLENBQUMsV0FBVyxFQUFZLENBQUE7UUFDdEUsTUFBTSxFQUNKLE1BQU0sRUFDTixXQUFXLEdBQUcsS0FBSyxFQUNuQixJQUFJLEVBQ0osWUFBWSxHQUFHLGdCQUFnQixHQUNoQyxHQUFpQixVQUFVLENBQUMsT0FBTyxDQUFBO1FBQ3BDLElBQUksTUFBTSxHQUFXLE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxHQUFJLGVBQWUsQ0FBQTtRQUU5QyxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksV0FBVyxFQUFFO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHO2dCQUNkLFNBQVM7Z0JBQ1QsT0FBTztnQkFDUCxNQUFNO2dCQUNOLE1BQU07Z0JBQ04sc0JBQVksQ0FBQyxlQUFlLENBQUM7YUFDOUIsQ0FBQTtZQUNELE1BQU0sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDO2dCQUNsRDtvQkFDRSxJQUFJLEVBQUUsY0FBYztvQkFDcEIsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsT0FBTyxFQUFFLHdDQUF3QztvQkFDakQsT0FBTztpQkFDUjthQUNGLENBQUMsQ0FBQTtZQUVGLElBQUksY0FBYyxLQUFLLEVBQUUsSUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFO2dCQUN6RCxNQUFNLEdBQUcsY0FBd0IsQ0FBQTthQUNsQztpQkFBTTtnQkFDTCxLQUFLLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUE7Z0JBQ3JELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDaEI7U0FDRjtRQUVELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUN0QixJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQ3JCLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUE7Z0JBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDaEI7WUFDRCxNQUFNLElBQUEsZ0JBQVcsR0FBRSxDQUFBO1lBQ25CLE9BQU07U0FDUDtRQUVELE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0NBQ0YsQ0FBQTtBQUVELGtCQUFlLE9BQU8sQ0FBQSJ9
@@ -6,9 +6,9 @@ const command = {
6
6
  description: 'Check and update Moddable tooling for various platform targets',
7
7
  run: async ({ parameters, update }) => {
8
8
  const currentPlatform = (0, os_1.type)().toLowerCase();
9
- const { device = currentPlatform } = parameters.options;
10
- await update[device]();
9
+ const { device = currentPlatform, targetBranch = 'latest-release', } = parameters.options;
10
+ await update[device]({ targetBranch });
11
11
  },
12
12
  };
13
13
  exports.default = command;
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3VwZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDJCQUF5QztBQU96QyxNQUFNLE9BQU8sR0FBaUM7SUFDNUMsSUFBSSxFQUFFLFFBQVE7SUFDZCxXQUFXLEVBQUUsZ0VBQWdFO0lBQzdFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtRQUNwQyxNQUFNLGVBQWUsR0FBVyxJQUFBLFNBQVksR0FBRSxDQUFDLFdBQVcsRUFBWSxDQUFBO1FBQ3RFLE1BQU0sRUFBRSxNQUFNLEdBQUcsZUFBZSxFQUFFLEdBQWtCLFVBQVUsQ0FBQyxPQUFPLENBQUE7UUFDdEUsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0NBQ0YsQ0FBQTtBQUVELGtCQUFlLE9BQU8sQ0FBQSJ9
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3VwZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDJCQUF5QztBQVF6QyxNQUFNLE9BQU8sR0FBaUM7SUFDNUMsSUFBSSxFQUFFLFFBQVE7SUFDZCxXQUFXLEVBQUUsZ0VBQWdFO0lBQzdFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtRQUNwQyxNQUFNLGVBQWUsR0FBVyxJQUFBLFNBQVksR0FBRSxDQUFDLFdBQVcsRUFBWSxDQUFBO1FBQ3RFLE1BQU0sRUFDSixNQUFNLEdBQUcsZUFBZSxFQUN4QixZQUFZLEdBQUcsZ0JBQWdCLEdBQ2hDLEdBQWtCLFVBQVUsQ0FBQyxPQUFPLENBQUE7UUFDckMsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7Q0FDRixDQUFBO0FBRUQsa0JBQWUsT0FBTyxDQUFBIn0=
@@ -3,13 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const os_1 = __importDefault(require("os"));
7
+ const util_1 = require("util");
8
+ const fs_1 = require("fs");
6
9
  const gluegun_1 = require("gluegun");
7
10
  const constants_1 = require("./constants");
8
11
  const upsert_1 = __importDefault(require("../patching/upsert"));
9
12
  const exec_1 = require("../system/exec");
10
- async function default_1() {
13
+ const moddable_1 = require("./moddable");
14
+ const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
15
+ async function default_1({ targetBranch }) {
16
+ var _a;
11
17
  gluegun_1.print.info('Setting up Linux tools!');
12
18
  const BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'release');
19
+ const DEBUG_BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'debug');
13
20
  const BUILD_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'makefiles', 'lin');
14
21
  const PROFILE_PATH = (0, constants_1.getProfilePath)();
15
22
  const spinner = gluegun_1.print.spin();
@@ -32,8 +39,32 @@ async function default_1() {
32
39
  spinner.info('Moddable repo already installed');
33
40
  }
34
41
  else {
35
- spinner.start('Cloning Moddable-OpenSource/moddable repo');
36
- await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH}`);
42
+ if (targetBranch === 'latest-release') {
43
+ spinner.start('Getting latest Moddable-OpenSource/moddable release');
44
+ const release = await (0, moddable_1.fetchLatestRelease)();
45
+ await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${release.tag_name} --single-branch`);
46
+ gluegun_1.filesystem.dir(BIN_PATH);
47
+ gluegun_1.filesystem.dir(DEBUG_BIN_PATH);
48
+ const isArm = os_1.default.arch() === 'arm64';
49
+ const assetName = isArm
50
+ ? 'moddable-tools-lin64arm.zip'
51
+ : 'moddable-tools-lin64.zip';
52
+ spinner.info('Downloading release tools');
53
+ await (0, moddable_1.downloadReleaseTools)({
54
+ writePath: BIN_PATH,
55
+ assetName,
56
+ release,
57
+ });
58
+ const tools = (_a = gluegun_1.filesystem.list(BIN_PATH)) !== null && _a !== void 0 ? _a : [];
59
+ await Promise.all(tools.map(async (tool) => {
60
+ await chmodPromise(gluegun_1.filesystem.resolve(BIN_PATH, tool), 0o751);
61
+ await gluegun_1.filesystem.copyAsync(gluegun_1.filesystem.resolve(BIN_PATH, tool), gluegun_1.filesystem.resolve(DEBUG_BIN_PATH, tool));
62
+ }));
63
+ }
64
+ if (targetBranch === 'public') {
65
+ spinner.start('Cloning Moddable-OpenSource/moddable repo');
66
+ await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${targetBranch} --single-branch`);
67
+ }
37
68
  spinner.succeed();
38
69
  }
39
70
  // 4. Setup the MODDABLE environment variable
@@ -43,11 +74,18 @@ async function default_1() {
43
74
  await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export MODDABLE=${process.env.MODDABLE}`);
44
75
  await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export PATH="${BIN_PATH}:$PATH"`);
45
76
  // 5. Build the Moddable command line tools, simulator, and debugger from the command line:
46
- spinner.start('Building platform tooling');
47
- await gluegun_1.system.exec('make', { cwd: BUILD_DIR, stdout: process.stdout });
48
- spinner.succeed();
77
+ if (targetBranch === 'public') {
78
+ spinner.start('Building platform tooling');
79
+ await gluegun_1.system.exec('make', { cwd: BUILD_DIR, stdout: process.stdout });
80
+ spinner.succeed();
81
+ }
49
82
  // 6. Install the desktop simulator and xsbug debugger applications
50
83
  spinner.start('Installing simulator');
84
+ if (targetBranch === 'latest-release') {
85
+ gluegun_1.filesystem.dir(gluegun_1.filesystem.resolve(BUILD_DIR, '..', '..', 'tmp', 'lin', 'debug', 'simulator'));
86
+ await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'xsbug', 'manifest.json')}`, { process });
87
+ await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'mcsim', 'manifest.json')}`, { process });
88
+ }
51
89
  await (0, exec_1.execWithSudo)('make install', {
52
90
  cwd: BUILD_DIR,
53
91
  stdout: process.stdout,
@@ -57,4 +95,4 @@ async function default_1() {
57
95
  gluegun_1.print.success('Moddable SDK successfully set up! Start a new terminal session and run the "helloworld example": xs-dev run --example helloworld');
58
96
  }
59
97
  exports.default = default_1;
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9saW51eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFDQUFtRDtBQUNuRCwyQ0FNb0I7QUFDcEIsZ0VBQXVDO0FBQ3ZDLHlDQUE2QztBQUU5QixLQUFLO0lBQ2xCLGVBQUssQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQTtJQUVyQyxNQUFNLFFBQVEsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDakMsd0JBQVksRUFDWixPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxTQUFTLENBQ1YsQ0FBQTtJQUNELE1BQU0sU0FBUyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUNsQyx3QkFBWSxFQUNaLE9BQU8sRUFDUCxXQUFXLEVBQ1gsS0FBSyxDQUNOLENBQUE7SUFDRCxNQUFNLFlBQVksR0FBRyxJQUFBLDBCQUFjLEdBQUUsQ0FBQTtJQUVyQyxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0lBRW5DLCtFQUErRTtJQUMvRSxvQkFBVSxDQUFDLEdBQUcsQ0FBQyx1QkFBVyxDQUFDLENBQUE7SUFFM0IsTUFBTSxJQUFBLGdCQUFNLEVBQUMsNkJBQWlCLEVBQUUsMkJBQTJCLENBQUMsQ0FBQTtJQUU1RCx5REFBeUQ7SUFDekQsT0FBTyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBO0lBQzNDLE1BQU0sSUFBQSxtQkFBWSxFQUNoQix5RUFBeUUsRUFDekUsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUMzQixDQUFBO0lBQ0QsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBRWpCLDJEQUEyRDtJQUMzRCxPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUE7SUFDckMsTUFBTSxJQUFBLG1CQUFZLEVBQUMsb0NBQW9DLEVBQUU7UUFDdkQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0tBQ3ZCLENBQUMsQ0FBQTtJQUNGLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUVqQixvRkFBb0Y7SUFDcEYsSUFBSSxvQkFBVSxDQUFDLE1BQU0sQ0FBQyx3QkFBWSxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQzdDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtLQUNoRDtTQUFNO1FBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFBO1FBQzFELE1BQU0sZ0JBQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSx5QkFBYSxJQUFJLHdCQUFZLEVBQUUsQ0FBQyxDQUFBO1FBQ2hFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtLQUNsQjtJQUVELDZDQUE2QztJQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyx3QkFBWSxDQUFBO0lBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxFQUFFLENBQUE7SUFFNUQsTUFBTSxJQUFBLGdCQUFNLEVBQUMsWUFBWSxFQUFFLFVBQVUsNkJBQWlCLEVBQUUsQ0FBQyxDQUFBO0lBRXpELE1BQU0sSUFBQSxnQkFBTSxFQUFDLDZCQUFpQixFQUFFLG1CQUFtQixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDMUUsTUFBTSxJQUFBLGdCQUFNLEVBQUMsNkJBQWlCLEVBQUUsZ0JBQWdCLFFBQVEsU0FBUyxDQUFDLENBQUE7SUFFbEUsMkZBQTJGO0lBQzNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtJQUMxQyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBQ3JFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUVqQixtRUFBbUU7SUFDbkUsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0lBQ3JDLE1BQU0sSUFBQSxtQkFBWSxFQUFDLGNBQWMsRUFBRTtRQUNqQyxHQUFHLEVBQUUsU0FBUztRQUNkLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN2QixDQUFDLENBQUE7SUFDRixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7SUFFakIsYUFBYTtJQUNiLGVBQUssQ0FBQyxPQUFPLENBQ1gsa0lBQWtJLENBQ25JLENBQUE7QUFDSCxDQUFDO0FBNUVELDRCQTRFQyJ9
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9saW51eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUFtQjtBQUNuQiwrQkFBZ0M7QUFDaEMsMkJBQTBCO0FBQzFCLHFDQUFtRDtBQUNuRCwyQ0FNb0I7QUFDcEIsZ0VBQXVDO0FBQ3ZDLHlDQUE2QztBQUU3Qyx5Q0FBcUU7QUFFckUsTUFBTSxZQUFZLEdBQUcsSUFBQSxnQkFBUyxFQUFDLFVBQUssQ0FBQyxDQUFBO0FBRXRCLEtBQUssb0JBQVcsRUFBRSxZQUFZLEVBQWE7O0lBQ3hELGVBQUssQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQTtJQUVyQyxNQUFNLFFBQVEsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDakMsd0JBQVksRUFDWixPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxTQUFTLENBQ1YsQ0FBQTtJQUNELE1BQU0sY0FBYyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUN2Qyx3QkFBWSxFQUNaLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE9BQU8sQ0FDUixDQUFBO0lBQ0QsTUFBTSxTQUFTLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ2xDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLFdBQVcsRUFDWCxLQUFLLENBQ04sQ0FBQTtJQUNELE1BQU0sWUFBWSxHQUFHLElBQUEsMEJBQWMsR0FBRSxDQUFBO0lBRXJDLE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7SUFFbkMsK0VBQStFO0lBQy9FLG9CQUFVLENBQUMsR0FBRyxDQUFDLHVCQUFXLENBQUMsQ0FBQTtJQUUzQixNQUFNLElBQUEsZ0JBQU0sRUFBQyw2QkFBaUIsRUFBRSwyQkFBMkIsQ0FBQyxDQUFBO0lBRTVELHlEQUF5RDtJQUN6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
@@ -4,11 +4,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const gluegun_1 = require("gluegun");
7
+ const os_1 = __importDefault(require("os"));
8
+ const util_1 = require("util");
9
+ const fs_1 = require("fs");
7
10
  const constants_1 = require("./constants");
8
11
  const upsert_1 = __importDefault(require("../patching/upsert"));
9
- async function default_1() {
12
+ const moddable_1 = require("./moddable");
13
+ const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
14
+ async function default_1({ targetBranch }) {
15
+ var _a;
10
16
  gluegun_1.print.info('Setting up the mac tools!');
11
17
  const BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'mac', 'release');
18
+ const DEBUG_BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'mac', 'debug');
12
19
  const BUILD_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'makefiles', 'mac');
13
20
  const PROFILE_PATH = (0, constants_1.getProfilePath)();
14
21
  // 0. ensure xcode command line tools are available (?)
@@ -35,8 +42,38 @@ async function default_1() {
35
42
  }
36
43
  else {
37
44
  try {
38
- spinner.start('Cloning Moddable-OpenSource/moddable repo');
39
- await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH}`);
45
+ if (targetBranch === 'latest-release') {
46
+ spinner.start('Getting latest Moddable-OpenSource/moddable release');
47
+ const release = await (0, moddable_1.fetchLatestRelease)();
48
+ await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${release.tag_name} --single-branch`);
49
+ gluegun_1.filesystem.dir(BIN_PATH);
50
+ gluegun_1.filesystem.dir(DEBUG_BIN_PATH);
51
+ const isArm = os_1.default.arch() === 'arm64';
52
+ const assetName = isArm
53
+ ? 'moddable-tools-mac64arm.zip'
54
+ : 'moddable-tools-mac64.zip';
55
+ spinner.info('Downloading release tools');
56
+ await (0, moddable_1.downloadReleaseTools)({
57
+ writePath: BIN_PATH,
58
+ assetName,
59
+ release,
60
+ });
61
+ const tools = (_a = gluegun_1.filesystem.list(BIN_PATH)) !== null && _a !== void 0 ? _a : [];
62
+ await Promise.all(tools.map(async (tool) => {
63
+ if (tool.endsWith('.app')) {
64
+ const mainPath = gluegun_1.filesystem.resolve(BIN_PATH, tool, 'Contents', 'MacOS', 'main');
65
+ await chmodPromise(mainPath, 0o751);
66
+ }
67
+ else {
68
+ await chmodPromise(gluegun_1.filesystem.resolve(BIN_PATH, tool), 0o751);
69
+ }
70
+ await gluegun_1.filesystem.copyAsync(gluegun_1.filesystem.resolve(BIN_PATH, tool), gluegun_1.filesystem.resolve(DEBUG_BIN_PATH, tool));
71
+ }));
72
+ }
73
+ if (targetBranch === 'public') {
74
+ spinner.start('Cloning Moddable-OpenSource/moddable repo');
75
+ await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${targetBranch} --single-branch`);
76
+ }
40
77
  spinner.succeed();
41
78
  }
42
79
  catch (error) {
@@ -51,14 +88,16 @@ async function default_1() {
51
88
  await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export MODDABLE=${process.env.MODDABLE}`);
52
89
  await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export PATH="${BIN_PATH}:$PATH"`);
53
90
  // 3. cd into makefiles dir for platform, run `make`
54
- try {
55
- spinner.start('Building platform tooling');
56
- await gluegun_1.system.exec('make', { cwd: BUILD_DIR, stdout: process.stdout });
57
- spinner.succeed();
58
- }
59
- catch (error) {
60
- spinner.fail(`Error building mac tooling: ${String(error)}`);
61
- process.exit(1);
91
+ if (targetBranch === 'public') {
92
+ try {
93
+ spinner.start('Building platform tooling');
94
+ await gluegun_1.system.exec('make', { cwd: BUILD_DIR, stdout: process.stdout });
95
+ spinner.succeed();
96
+ }
97
+ catch (error) {
98
+ spinner.fail(`Error building mac tooling: ${String(error)}`);
99
+ process.exit(1);
100
+ }
62
101
  }
63
102
  // 4. symlink xsbug.app into user applications directory
64
103
  try {
@@ -76,4 +115,4 @@ async function default_1() {
76
115
  spinner.succeed('Moddable SDK successfully set up! Start a new terminal session and run the "helloworld example": xs-dev run --example helloworld');
77
116
  }
78
117
  exports.default = default_1;
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xib3gvc2V0dXAvbWFjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUNBQW1EO0FBQ25ELDJDQU1vQjtBQUNwQixnRUFBdUM7QUFFeEIsS0FBSztJQUNsQixlQUFLLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUE7SUFFdkMsTUFBTSxRQUFRLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ2pDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsU0FBUyxDQUNWLENBQUE7SUFDRCxNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDbEMsd0JBQVksRUFDWixPQUFPLEVBQ1AsV0FBVyxFQUNYLEtBQUssQ0FDTixDQUFBO0lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBQSwwQkFBYyxHQUFFLENBQUE7SUFFckMsdURBQXVEO0lBQ3ZELElBQUk7UUFDRixNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7S0FDckM7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLGVBQUssQ0FBQyxLQUFLLENBQ1QsNEZBQTRGLENBQzdGLENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0lBRUQsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUVuQywrRUFBK0U7SUFDL0UsSUFBSTtRQUNGLG9CQUFVLENBQUMsR0FBRyxDQUFDLHVCQUFXLENBQUMsQ0FBQTtRQUUzQixNQUFNLElBQUEsZ0JBQU0sRUFBQyw2QkFBaUIsRUFBRSwyQkFBMkIsQ0FBQyxDQUFBO0tBQzdEO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxNQUFN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
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xib3gvc2V0dXAvbWFjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUNBQW1EO0FBQ25ELDRDQUFtQjtBQUNuQiwrQkFBZ0M7QUFDaEMsMkJBQTBCO0FBQzFCLDJDQU1vQjtBQUNwQixnRUFBdUM7QUFDdkMseUNBQXFFO0FBR3JFLE1BQU0sWUFBWSxHQUFHLElBQUEsZ0JBQVMsRUFBQyxVQUFLLENBQUMsQ0FBQTtBQUV0QixLQUFLLG9CQUFXLEVBQUUsWUFBWSxFQUFhOztJQUN4RCxlQUFLLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUE7SUFFdkMsTUFBTSxRQUFRLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ2pDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsU0FBUyxDQUNWLENBQUE7SUFDRCxNQUFNLGNBQWMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDdkMsd0JBQVksRUFDWixPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxPQUFPLENBQ1IsQ0FBQTtJQUNELE1BQU0sU0FBUyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUNsQyx3QkFBWSxFQUNaLE9BQU8sRUFDUCxXQUFXLEVBQ1gsS0FBSyxDQUNOLENBQUE7SUFFRCxNQUFNLFlBQVksR0FBRyxJQUFBLDBCQUFjLEdBQUUsQ0FBQTtJQUVyQyx1REFBdUQ7SUFDdkQsSUFBSTtRQUNGLE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtLQUNyQztJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsZUFBSyxDQUFDLEtBQUssQ0FDVCw0RkFBNEYsQ0FDN0YsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDaEI7SUFFRCxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7SUFD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
@@ -1,10 +1,43 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.moddableExists = void 0;
6
+ exports.downloadReleaseTools = exports.fetchLatestRelease = exports.moddableExists = void 0;
7
+ const stream_1 = require("stream");
8
+ const util_1 = require("util");
4
9
  const gluegun_1 = require("gluegun");
10
+ const rest_1 = require("@octokit/rest");
11
+ const unzip_stream_1 = require("unzip-stream");
12
+ const axios_1 = __importDefault(require("axios"));
13
+ const finishedPromise = (0, util_1.promisify)(stream_1.finished);
5
14
  function moddableExists() {
6
15
  return (process.env.MODDABLE !== undefined &&
7
16
  gluegun_1.filesystem.exists(process.env.MODDABLE) === 'dir');
8
17
  }
9
18
  exports.moddableExists = moddableExists;
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9tb2RkYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBb0M7QUFFcEMsU0FBZ0IsY0FBYztJQUM1QixPQUFPLENBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUztRQUNsQyxvQkFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUssQ0FDbEQsQ0FBQTtBQUNILENBQUM7QUFMRCx3Q0FLQyJ9
19
+ async function fetchLatestRelease() {
20
+ const octokit = new rest_1.Octokit();
21
+ const { data: latestRelease } = await octokit.rest.repos.getLatestRelease({
22
+ owner: 'Moddable-OpenSource',
23
+ repo: 'moddable',
24
+ });
25
+ return latestRelease;
26
+ }
27
+ exports.fetchLatestRelease = fetchLatestRelease;
28
+ async function downloadReleaseTools({ writePath, assetName, release, }) {
29
+ const moddableTools = release.assets.find(({ name }) => name === assetName);
30
+ if (moddableTools === undefined) {
31
+ throw new Error(`Unable to find release asset matching ${assetName}`);
32
+ }
33
+ const zipWriter = (0, unzip_stream_1.Extract)({
34
+ path: writePath,
35
+ });
36
+ const response = await axios_1.default.get(moddableTools.browser_download_url, {
37
+ responseType: 'stream',
38
+ });
39
+ response.data.pipe(zipWriter);
40
+ await finishedPromise(zipWriter);
41
+ }
42
+ exports.downloadReleaseTools = downloadReleaseTools;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9tb2RkYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtQ0FBaUM7QUFDakMsK0JBQWdDO0FBQ2hDLHFDQUFvQztBQUNwQyx3Q0FBZ0U7QUFDaEUsK0NBQW9EO0FBQ3BELGtEQUF5QjtBQUV6QixNQUFNLGVBQWUsR0FBRyxJQUFBLGdCQUFTLEVBQUMsaUJBQVEsQ0FBQyxDQUFBO0FBRTNDLFNBQWdCLGNBQWM7SUFDNUIsT0FBTyxDQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVM7UUFDbEMsb0JBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLENBQ2xELENBQUE7QUFDSCxDQUFDO0FBTEQsd0NBS0M7QUFXTSxLQUFLLFVBQVUsa0JBQWtCO0lBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksY0FBTyxFQUFFLENBQUE7SUFDN0IsTUFBTSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQ3hFLEtBQUssRUFBRSxxQkFBcUI7UUFDNUIsSUFBSSxFQUFFLFVBQVU7S0FDakIsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxhQUFhLENBQUE7QUFDdEIsQ0FBQztBQVBELGdEQU9DO0FBUU0sS0FBSyxVQUFVLG9CQUFvQixDQUFDLEVBQ3pDLFNBQVMsRUFDVCxTQUFTLEVBQ1QsT0FBTyxHQUNXO0lBQ2xCLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFBO0lBRTNFLElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRTtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxTQUFTLEVBQUUsQ0FBQyxDQUFBO0tBQ3RFO0lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBQSxzQkFBVSxFQUFDO1FBQzNCLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUMsQ0FBQTtJQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUU7UUFDbkUsWUFBWSxFQUFFLFFBQVE7S0FDdkIsQ0FBQyxDQUFBO0lBQ0YsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDN0IsTUFBTSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUE7QUFDbEMsQ0FBQztBQW5CRCxvREFtQkMifQ==
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const gluegun_1 = require("gluegun");
4
- async function default_1() {
4
+ async function default_1(_args) {
5
5
  gluegun_1.print.warning('Windows setup is not currently supported');
6
6
  }
7
7
  exports.default = default_1;
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL3dpbmRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBK0I7QUFFaEIsS0FBSztJQUNsQixlQUFLLENBQUMsT0FBTyxDQUFDLDBDQUEwQyxDQUFDLENBQUE7QUFDM0QsQ0FBQztBQUZELDRCQUVDIn0=
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL3dpbmRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBK0I7QUFHaEIsS0FBSyxvQkFBVyxLQUFnQjtJQUM3QyxlQUFLLENBQUMsT0FBTyxDQUFDLDBDQUEwQyxDQUFDLENBQUE7QUFDM0QsQ0FBQztBQUZELDRCQUVDIn0=
@@ -1,39 +1,100 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const os_1 = __importDefault(require("os"));
7
+ const util_1 = require("util");
8
+ const fs_1 = require("fs");
3
9
  const gluegun_1 = require("gluegun");
4
10
  const constants_1 = require("../setup/constants");
5
- async function default_1() {
11
+ const moddable_1 = require("../setup/moddable");
12
+ const exec_1 = require("../system/exec");
13
+ const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
14
+ async function default_1({ targetBranch }) {
15
+ var _a;
16
+ // 0. ensure Moddable exists
17
+ if (!(0, moddable_1.moddableExists)()) {
18
+ gluegun_1.print.error('Moddable tooling required. Run `xs-dev setup` before trying again.');
19
+ process.exit(1);
20
+ }
6
21
  gluegun_1.print.info('Checking for SDK changes');
7
- const BUILD_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'makefiles', 'mac');
8
- const currentRev = await gluegun_1.system.exec('git rev-parse public', {
9
- cwd: process.env.MODDABLE,
10
- });
11
- const remoteRev = await gluegun_1.system.exec('git ls-remote origin refs/heads/public', { cwd: process.env.MODDABLE });
12
- if (remoteRev.split('\t').shift() === currentRev.trim()) {
13
- gluegun_1.print.success('Moddable SDK already up to date!');
14
- process.exit(0);
22
+ const BUILD_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'makefiles', 'lin');
23
+ if (targetBranch === 'latest-release') {
24
+ // get tag for current repo
25
+ const currentTag = await gluegun_1.system.exec('git tag', {
26
+ cwd: process.env.MODDABLE,
27
+ });
28
+ // get latest release tag
29
+ const latestRelease = await (0, moddable_1.fetchLatestRelease)();
30
+ if (currentTag.trim() === latestRelease.tag_name) {
31
+ gluegun_1.print.success('Moddable SDK already up to date!');
32
+ process.exit(0);
33
+ }
34
+ const spinner = gluegun_1.print.spin();
35
+ spinner.start('Updating Moddable SDK!');
36
+ const BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'release');
37
+ const DEBUG_BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'debug');
38
+ gluegun_1.filesystem.remove(process.env.MODDABLE);
39
+ await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${latestRelease.tag_name} --single-branch`);
40
+ gluegun_1.filesystem.dir(BIN_PATH);
41
+ gluegun_1.filesystem.dir(DEBUG_BIN_PATH);
42
+ const isArm = os_1.default.arch() === 'arm64';
43
+ const assetName = isArm
44
+ ? 'moddable-tools-lin64arm.zip'
45
+ : 'moddable-tools-lin64.zip';
46
+ spinner.info('Downloading release tools');
47
+ await (0, moddable_1.downloadReleaseTools)({
48
+ writePath: BIN_PATH,
49
+ assetName,
50
+ release: latestRelease,
51
+ });
52
+ spinner.info('Updating tool permissions');
53
+ const tools = (_a = gluegun_1.filesystem.list(BIN_PATH)) !== null && _a !== void 0 ? _a : [];
54
+ await Promise.all(tools.map(async (tool) => {
55
+ await chmodPromise(gluegun_1.filesystem.resolve(BIN_PATH, tool), 0o751);
56
+ await gluegun_1.filesystem.copyAsync(gluegun_1.filesystem.resolve(BIN_PATH, tool), gluegun_1.filesystem.resolve(DEBUG_BIN_PATH, tool));
57
+ }));
58
+ spinner.info('Reinstalling simulator');
59
+ gluegun_1.filesystem.dir(gluegun_1.filesystem.resolve(BUILD_DIR, '..', '..', 'tmp', 'lin', 'debug', 'simulator'));
60
+ await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'xsbug', 'manifest.json')}`, { process });
61
+ await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'mcsim', 'manifest.json')}`, { process });
62
+ await (0, exec_1.execWithSudo)('make install', {
63
+ cwd: BUILD_DIR,
64
+ stdout: process.stdout,
65
+ });
66
+ spinner.succeed('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
67
+ }
68
+ if (targetBranch === 'public') {
69
+ const currentRev = await gluegun_1.system.exec('git rev-parse public', {
70
+ cwd: process.env.MODDABLE,
71
+ });
72
+ const remoteRev = await gluegun_1.system.exec('git ls-remote origin refs/heads/public', { cwd: process.env.MODDABLE });
73
+ if (remoteRev.split('\t').shift() === currentRev.trim()) {
74
+ gluegun_1.print.success('Moddable SDK already up to date!');
75
+ process.exit(0);
76
+ }
77
+ const spinner = gluegun_1.print.spin();
78
+ spinner.start('Updating Moddable SDK!');
79
+ spinner.start('Stashing any unsaved changes before committing');
80
+ await gluegun_1.system.exec('git stash', { cwd: process.env.MODDABLE });
81
+ await gluegun_1.system.exec('git pull origin public', { cwd: process.env.MODDABLE });
82
+ await gluegun_1.system.exec('rm -rf build/{tmp,bin}', { cwd: process.env.MODDABLE });
83
+ spinner.succeed();
84
+ spinner.start('Rebuilding platform tools');
85
+ await gluegun_1.system.exec('make', {
86
+ cwd: BUILD_DIR,
87
+ stdout: process.stdout,
88
+ });
89
+ spinner.succeed();
90
+ spinner.start('Reinstalling simulator');
91
+ await (0, exec_1.execWithSudo)('make install', {
92
+ cwd: BUILD_DIR,
93
+ stdout: process.stdout,
94
+ });
95
+ spinner.succeed();
96
+ gluegun_1.print.success('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
15
97
  }
16
- const spinner = gluegun_1.print.spin();
17
- spinner.start('Updating Moddable SDK!');
18
- spinner.start('Stashing any unsaved changes before committing');
19
- await gluegun_1.system.exec('git stash', { cwd: process.env.MODDABLE });
20
- await gluegun_1.system.exec('git pull origin public', { cwd: process.env.MODDABLE });
21
- await gluegun_1.system.exec('rm -rf build/{tmp,bin}', { cwd: process.env.MODDABLE });
22
- spinner.succeed();
23
- spinner.start('Rebuilding platform tools');
24
- await gluegun_1.system.exec('make', {
25
- cwd: BUILD_DIR,
26
- stdout: process.stdout,
27
- });
28
- spinner.succeed();
29
- spinner.start('Reinstalling simulator');
30
- await gluegun_1.system.exec('make install', {
31
- cwd: BUILD_DIR,
32
- stdout: process.stdout,
33
- stdin: process.stdin,
34
- });
35
- spinner.succeed();
36
- gluegun_1.print.success('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
37
98
  }
38
99
  exports.default = default_1;
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC91cGRhdGUvbGludXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBbUQ7QUFDbkQsa0RBQWlEO0FBRWxDLEtBQUs7SUFDbEIsZUFBSyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO0lBQ3RDLE1BQU0sU0FBUyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUNsQyx3QkFBWSxFQUNaLE9BQU8sRUFDUCxXQUFXLEVBQ1gsS0FBSyxDQUNOLENBQUE7SUFFRCxNQUFNLFVBQVUsR0FBVyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1FBQ25FLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVE7S0FDMUIsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxTQUFTLEdBQVcsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FDekMsd0NBQXdDLEVBQ3hDLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQzlCLENBQUE7SUFFRCxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3ZELGVBQUssQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtRQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0lBRUQsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtJQUV2QyxPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUE7SUFDL0QsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQzdELE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBRTFFLE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQzFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUVqQixPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUE7SUFDMUMsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDeEIsR0FBRyxFQUFFLFNBQVM7UUFDZCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdkIsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBRWpCLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtJQUN2QyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtRQUNoQyxHQUFHLEVBQUUsU0FBUztRQUNkLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtRQUN0QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7S0FDckIsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBRWpCLGVBQUssQ0FBQyxPQUFPLENBQ1gsMEhBQTBILENBQzNILENBQUE7QUFDSCxDQUFDO0FBbERELDRCQWtEQyJ9
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC91cGRhdGUvbGludXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBbUI7QUFDbkIsK0JBQWdDO0FBQ2hDLDJCQUEwQjtBQUMxQixxQ0FBbUQ7QUFDbkQsa0RBQWdFO0FBRWhFLGdEQUkwQjtBQUMxQix5Q0FBNkM7QUFFN0MsTUFBTSxZQUFZLEdBQUcsSUFBQSxnQkFBUyxFQUFDLFVBQUssQ0FBQyxDQUFBO0FBRXRCLEtBQUssb0JBQVcsRUFBRSxZQUFZLEVBQWE7O0lBQ3hELDRCQUE0QjtJQUM1QixJQUFJLENBQUMsSUFBQSx5QkFBYyxHQUFFLEVBQUU7UUFDckIsZUFBSyxDQUFDLEtBQUssQ0FDVCxvRUFBb0UsQ0FDckUsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDaEI7SUFFRCxlQUFLLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUE7SUFFdEMsTUFBTSxTQUFTLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ2xDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLFdBQVcsRUFDWCxLQUFLLENBQ04sQ0FBQTtJQUVELElBQUksWUFBWSxLQUFLLGdCQUFnQixFQUFFO1FBQ3JDLDJCQUEyQjtRQUMzQixNQUFNLFVBQVUsR0FBVyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN0RCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRO1NBQzFCLENBQUMsQ0FBQTtRQUNGLHlCQUF5QjtRQUN6QixNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUEsNkJBQWtCLEdBQUUsQ0FBQTtRQUVoRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxhQUFhLENBQUMsUUFBUSxFQUFFO1lBQ2hELGVBQUssQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtZQUNqRCxPQUFP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
@@ -1,39 +1,93 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const os_1 = __importDefault(require("os"));
7
+ const util_1 = require("util");
8
+ const fs_1 = require("fs");
3
9
  const gluegun_1 = require("gluegun");
10
+ const constants_1 = require("../setup/constants");
4
11
  const moddable_1 = require("../setup/moddable");
5
- async function default_1() {
6
- var _a, _b;
12
+ const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
13
+ async function default_1({ targetBranch }) {
14
+ var _a, _b, _c;
7
15
  gluegun_1.print.info('Checking for SDK changes');
8
16
  // 0. ensure Moddable exists
9
17
  if (!(0, moddable_1.moddableExists)()) {
10
18
  gluegun_1.print.error('Moddable tooling required. Run `xs-dev setup` before trying again.');
11
19
  process.exit(1);
12
20
  }
13
- const currentRev = await gluegun_1.system.exec('git rev-parse public', {
14
- cwd: process.env.MODDABLE,
15
- });
16
- const remoteRev = await gluegun_1.system.exec('git ls-remote origin refs/heads/public', { cwd: process.env.MODDABLE });
17
- if (remoteRev.split('\t').shift() === currentRev.trim()) {
18
- gluegun_1.print.success('Moddable SDK already up to date!');
19
- process.exit(0);
21
+ if (targetBranch === 'latest-release') {
22
+ // get tag for current repo
23
+ const currentTag = await gluegun_1.system.exec('git tag', {
24
+ cwd: process.env.MODDABLE,
25
+ });
26
+ // get latest release tag
27
+ const latestRelease = await (0, moddable_1.fetchLatestRelease)();
28
+ if (currentTag.trim() === latestRelease.tag_name) {
29
+ gluegun_1.print.success('Moddable SDK already up to date!');
30
+ process.exit(0);
31
+ }
32
+ const spinner = gluegun_1.print.spin();
33
+ spinner.start('Updating Moddable SDK!');
34
+ const BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'mac', 'release');
35
+ const DEBUG_BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'mac', 'debug');
36
+ gluegun_1.filesystem.remove(process.env.MODDABLE);
37
+ await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${latestRelease.tag_name} --single-branch`);
38
+ gluegun_1.filesystem.dir(BIN_PATH);
39
+ gluegun_1.filesystem.dir(DEBUG_BIN_PATH);
40
+ const isArm = os_1.default.arch() === 'arm64';
41
+ const assetName = isArm
42
+ ? 'moddable-tools-mac64arm.zip'
43
+ : 'moddable-tools-mac64.zip';
44
+ spinner.info('Downloading release tools');
45
+ await (0, moddable_1.downloadReleaseTools)({
46
+ writePath: BIN_PATH,
47
+ assetName,
48
+ release: latestRelease,
49
+ });
50
+ spinner.info('Updating tool permissions');
51
+ const tools = (_a = gluegun_1.filesystem.list(BIN_PATH)) !== null && _a !== void 0 ? _a : [];
52
+ await Promise.all(tools.map(async (tool) => {
53
+ if (tool.endsWith('.app')) {
54
+ const mainPath = gluegun_1.filesystem.resolve(BIN_PATH, tool, 'Contents', 'MacOS', 'main');
55
+ await chmodPromise(mainPath, 0o751);
56
+ }
57
+ else {
58
+ await chmodPromise(gluegun_1.filesystem.resolve(BIN_PATH, tool), 0o751);
59
+ }
60
+ await gluegun_1.filesystem.copyAsync(gluegun_1.filesystem.resolve(BIN_PATH, tool), gluegun_1.filesystem.resolve(DEBUG_BIN_PATH, tool));
61
+ }));
62
+ spinner.succeed('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
63
+ }
64
+ if (targetBranch === 'public') {
65
+ const currentRev = await gluegun_1.system.exec('git rev-parse public', {
66
+ cwd: process.env.MODDABLE,
67
+ });
68
+ const remoteRev = await gluegun_1.system.exec('git ls-remote origin refs/heads/public', { cwd: process.env.MODDABLE });
69
+ if (remoteRev.split('\t').shift() === currentRev.trim()) {
70
+ gluegun_1.print.success('Moddable SDK already up to date!');
71
+ process.exit(0);
72
+ }
73
+ const spinner = gluegun_1.print.spin();
74
+ spinner.start('Updating Moddable SDK!');
75
+ spinner.start('Stashing any unsaved changes before committing');
76
+ await gluegun_1.system.exec('git stash', { cwd: process.env.MODDABLE });
77
+ await gluegun_1.system.exec('git pull origin public', { cwd: process.env.MODDABLE });
78
+ const BUILD_DIR = gluegun_1.filesystem.resolve((_b = process.env.MODDABLE) !== null && _b !== void 0 ? _b : '', 'build', 'bin');
79
+ const TMP_DIR = gluegun_1.filesystem.resolve((_c = process.env.MODDABLE) !== null && _c !== void 0 ? _c : '', 'build', 'tmp');
80
+ gluegun_1.filesystem.remove(BUILD_DIR);
81
+ gluegun_1.filesystem.remove(TMP_DIR);
82
+ spinner.succeed();
83
+ spinner.start('Rebuilding platform tools');
84
+ // install release assets or build
85
+ await gluegun_1.system.exec('make', {
86
+ cwd: gluegun_1.filesystem.resolve(String(process.env.MODDABLE), 'build', 'makefiles', 'mac'),
87
+ stdout: process.stdout,
88
+ });
89
+ spinner.succeed('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
20
90
  }
21
- const spinner = gluegun_1.print.spin();
22
- spinner.start('Updating Moddable SDK!');
23
- spinner.start('Stashing any unsaved changes before committing');
24
- await gluegun_1.system.exec('git stash', { cwd: process.env.MODDABLE });
25
- await gluegun_1.system.exec('git pull origin public', { cwd: process.env.MODDABLE });
26
- const BUILD_DIR = gluegun_1.filesystem.resolve((_a = process.env.MODDABLE) !== null && _a !== void 0 ? _a : '', 'build', 'bin');
27
- const TMP_DIR = gluegun_1.filesystem.resolve((_b = process.env.MODDABLE) !== null && _b !== void 0 ? _b : '', 'build', 'tmp');
28
- gluegun_1.filesystem.remove(BUILD_DIR);
29
- gluegun_1.filesystem.remove(TMP_DIR);
30
- spinner.succeed();
31
- spinner.start('Rebuilding platform tools');
32
- await gluegun_1.system.exec('make', {
33
- cwd: gluegun_1.filesystem.resolve(String(process.env.MODDABLE), 'build', 'makefiles', 'mac'),
34
- stdout: process.stdout,
35
- });
36
- spinner.succeed('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
37
91
  }
38
92
  exports.default = default_1;
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xib3gvdXBkYXRlL21hYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFDQUFtRDtBQUNuRCxnREFBa0Q7QUFFbkMsS0FBSzs7SUFDbEIsZUFBSyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO0lBRXRDLDRCQUE0QjtJQUM1QixJQUFJLENBQUMsSUFBQSx5QkFBYyxHQUFFLEVBQUU7UUFDckIsZUFBSyxDQUFDLEtBQUssQ0FDVCxvRUFBb0UsQ0FDckUsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDaEI7SUFFRCxNQUFNLFVBQVUsR0FBVyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1FBQ25FLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVE7S0FDMUIsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxTQUFTLEdBQVcsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FDekMsd0NBQXdDLEVBQ3hDLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQzlCLENBQUE7SUFFRCxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3ZELGVBQUssQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtRQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0lBRUQsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtJQUV2QyxPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUE7SUFDL0QsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQzdELE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBRTFFLE1BQU0sU0FBUyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUNsQyxNQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxtQ0FBSSxFQUFFLEVBQzFCLE9BQU8sRUFDUCxLQUFLLENBQ04sQ0FBQTtJQUNELE1BQU0sT0FBTyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLE1BQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLG1DQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDOUUsb0JBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDNUIsb0JBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDMUIsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBRWpCLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtJQUMxQyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUN4QixHQUFHLEVBQUUsb0JBQVUsQ0FBQyxPQUFPLENBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUM1QixPQUFPLEVBQ1AsV0FBVyxFQUNYLEtBQUssQ0FDTjtRQUNELE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN2QixDQUFDLENBQUE7SUFFRixPQUFPLENBQUMsT0FBTyxDQUNiLDBIQUEwSCxDQUMzSCxDQUFBO0FBQ0gsQ0FBQztBQXZERCw0QkF1REMifQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xib3gvdXBkYXRlL21hYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUFtQjtBQUNuQiwrQkFBZ0M7QUFDaEMsMkJBQTBCO0FBQzFCLHFDQUFtRDtBQUNuRCxrREFBZ0U7QUFDaEUsZ0RBSTBCO0FBRzFCLE1BQU0sWUFBWSxHQUFHLElBQUEsZ0JBQVMsRUFBQyxVQUFLLENBQUMsQ0FBQTtBQUV0QixLQUFLLG9CQUFXLEVBQUUsWUFBWSxFQUFhOztJQUN4RCxlQUFLLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUE7SUFFdEMsNEJBQTRCO0lBQzVCLElBQUksQ0FBQyxJQUFBLHlCQUFjLEdBQUUsRUFBRTtRQUNyQixlQUFLLENBQUMsS0FBSyxDQUNULG9FQUFvRSxDQUNyRSxDQUFBO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUNoQjtJQUVELElBQUksWUFBWSxLQUFLLGdCQUFnQixFQUFFO1FBQ3JDLDJCQUEyQjtRQUMzQixNQUFNLFVBQVUsR0FBVyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN0RCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRO1NBQzFCLENBQUMsQ0FBQTtRQUNGLHlCQUF5QjtRQUN6QixNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUEsNkJBQWtCLEdBQUUsQ0FBQTtRQUVoRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxhQUFhLENBQUMsUUFBUSxFQUFFO1lBQ2hELGVBQUssQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtZQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ2hCO1FBRUQsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzVCLE9BQU8sQ0FBQyxLQUFLLENB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
@@ -1 +1,2 @@
1
- export default function (): Promise<void>;
1
+ import { SetupArgs } from './types';
2
+ export default function ({ targetBranch }: SetupArgs): Promise<void>;
@@ -1 +1,2 @@
1
- export default function (): Promise<void>;
1
+ import { SetupArgs } from './types';
2
+ export default function ({ targetBranch }: SetupArgs): Promise<void>;
@@ -1 +1,12 @@
1
+ import { RestEndpointMethodTypes } from '@octokit/rest';
1
2
  export declare function moddableExists(): boolean;
3
+ declare type ExtractFromArray<Item extends readonly unknown[]> = Item extends Readonly<Array<infer ItemType>> ? ItemType : never;
4
+ declare type GitHubRelease = ExtractFromArray<RestEndpointMethodTypes['repos']['listReleases']['response']['data']>;
5
+ export declare function fetchLatestRelease(): Promise<GitHubRelease>;
6
+ interface DownloadToolsArgs {
7
+ writePath: string;
8
+ assetName: string;
9
+ release: GitHubRelease;
10
+ }
11
+ export declare function downloadReleaseTools({ writePath, assetName, release, }: DownloadToolsArgs): Promise<void>;
12
+ export {};
@@ -0,0 +1,3 @@
1
+ export interface SetupArgs {
2
+ targetBranch: 'public' | 'latest-release';
3
+ }
@@ -1 +1,2 @@
1
- export default function (): Promise<void>;
1
+ import { SetupArgs } from './types';
2
+ export default function (_args: SetupArgs): Promise<void>;
@@ -1 +1,2 @@
1
- export default function (): Promise<void>;
1
+ import { SetupArgs } from '../setup/types';
2
+ export default function ({ targetBranch }: SetupArgs): Promise<void>;
@@ -1 +1,2 @@
1
- export default function (): Promise<void>;
1
+ import { SetupArgs } from '../setup/types';
2
+ export default function ({ targetBranch }: SetupArgs): Promise<void>;
@@ -1,6 +1,7 @@
1
1
  import type { GluegunToolbox } from 'gluegun';
2
+ import { SetupArgs } from './toolbox/setup/types';
2
3
  export declare type Device = 'darwin' | 'linux' | 'windows_nt' | 'esp' | 'esp8266' | 'esp32' | 'wasm' | 'pico';
3
4
  export interface XSDevToolbox extends GluegunToolbox {
4
- setup: Record<Device, () => Promise<void>>;
5
- update: Record<Device, () => Promise<void>>;
5
+ setup: Record<Device, (() => Promise<void>) | ((args: SetupArgs) => Promise<void>)>;
6
+ update: Record<Device, (() => Promise<void>) | ((args: SetupArgs) => Promise<void>)>;
6
7
  }
@@ -30,12 +30,3 @@ import '../styles/index.css';
30
30
  root.classList.remove('theme-dark');
31
31
  }
32
32
  </script>
33
-
34
- <!-- Global site tag (gtag.js) - Google Analytics -->
35
- <!-- <script async src="https://www.googletagmanager.com/gtag/js?id=G-TEL60V1WM9" is:inline></script>
36
- <script>
37
- window.dataLayer = window.dataLayer || [];
38
- function gtag(){dataLayer.push(arguments);}
39
- gtag('js', new Date());
40
- gtag('config', 'G-TEL60V1WM9');
41
- </script> -->
@@ -5,7 +5,8 @@ export interface Props {
5
5
  site: any;
6
6
  canonicalURL: URL | string;
7
7
  }
8
- const { content = {}, canonicalURL } = Astro.props;
8
+ const canonicalURL = new URL(Astro.url.pathname, Astro.site);
9
+ const { content = {} } = Astro.props;
9
10
  const formattedContentTitle = content.title ? `${content.title} 🚀 ${SITE.title}` : SITE.title;
10
11
  ---
11
12
 
@@ -25,10 +26,3 @@ const formattedContentTitle = content.title ? `${content.title} 🚀 ${SITE.titl
25
26
  <meta name="twitter:site" content={OPEN_GRAPH.twitter} />
26
27
  <meta name="twitter:title" content={formattedContentTitle} />
27
28
  <meta name="twitter:description" content={content.description ? content.description : SITE.description} />
28
-
29
- <!--
30
- TODO: Add json+ld data, maybe https://schema.org/APIReference makes sense?
31
- Docs: https://developers.google.com/search/docs/advanced/structured-data/intro-structured-data
32
- https://www.npmjs.com/package/schema-dts seems like a great resource for implementing this.
33
- Even better, there's a React component that integrates with `schema-dts`: https://github.com/google/react-schemaorg
34
- -->
@@ -17,7 +17,7 @@ const lang = currentPage && getLanguageFromURL(currentPage);
17
17
  <SidebarToggle client:idle />
18
18
  </div>
19
19
  <div class="logo flex">
20
- <a href={Astro.site}>
20
+ <a href={import.meta.env.BASE_URL}>
21
21
  <h1>{CONFIG.SITE.title ?? "Documentation"}</h1>
22
22
  </a>
23
23
  </div>
@@ -31,7 +31,7 @@ const sidebarSections = SIDEBAR[langCode].reduce((col, item, i) => {
31
31
  <ul>
32
32
  {section.children.map((child) => (
33
33
  <li class="nav-link">
34
- <a href={`${Astro.site.pathname}${child.link}`} aria-current={`${currentPageMatch === child.link ? 'page' : 'false'}`}>
34
+ <a href={`${import.meta.env.BASE_URL}${child.link}`} aria-current={`${currentPageMatch === child.link ? 'page' : 'false'}`}>
35
35
  {child.text}
36
36
  </a>
37
37
  </li>
@@ -17,7 +17,7 @@ const githubEditUrl = CONFIG.GITHUB_EDIT_URL && CONFIG.GITHUB_EDIT_URL + current
17
17
  <html dir={content.dir ?? 'ltr'} lang={content.lang ?? 'en-us'} class="initial">
18
18
  <head>
19
19
  <HeadCommon />
20
- <HeadSEO {content} canonicalURL={Astro.canonicalURL} />
20
+ <HeadSEO {content} />
21
21
  <title>{content.title ? `${content.title} 🚀 ${CONFIG.SITE.title}` : CONFIG.SITE.title}</title>
22
22
  <style>
23
23
  body {
@@ -6,7 +6,7 @@ layout: ../../../layouts/MainLayout.astro
6
6
 
7
7
  # Moddable Platform Setup
8
8
 
9
- This command downloads and builds the [Moddable developer tooling](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/tools/tools.md) for the current OS (Windows support coming soon).
9
+ This command downloads the [Moddable developer tooling](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/tools/tools.md) for the current OS (Windows support coming soon).
10
10
 
11
11
  [After installing the CLI](/en/introduction#installation), call the `setup` command:
12
12
 
@@ -28,6 +28,18 @@ A symlink for [`xsbug.app`](https://github.com/Moddable-OpenSource/moddable/blob
28
28
 
29
29
  The [`moddable` git repo](https://github.com/Moddable-OpenSource/moddable) is cloned into `~/.local/share` instead of a new/existing `~/Projects` directory.
30
30
 
31
+ ## Target Branch
32
+
33
+ The default behavior of this command for Moddable developer tooling pulls the [latest release tooling](https://github.com/Moddable-OpenSource/moddable/releases) and source code for the associated tagged branch. This provides a known-working state for the SDK and avoids needing to build the tooling on the local machine.
34
+
35
+ To override this behavior, use the `--target-branch` flag to select `public`; this fetches the latest commit off that main branch and runs the build to generate the associated tools.
36
+
37
+ ```
38
+ xs-dev setup --target-branch public
39
+ ```
40
+
41
+ _This will only work for the `mac`, `windows`, and `linux` device options, which are the respective defaults for the operating system on which the command is run._
42
+
31
43
  ## Device Setup
32
44
 
33
45
  While the `setup` command provides the Moddable SDK for the dev environment, the `--device` flag selects another platform target SDK to set up. It ensures the Moddable SDK has been installed first.
@@ -12,6 +12,22 @@ Stay up to date with the latest tooling from Moddable and supported device targe
12
12
  xs-dev update
13
13
  ```
14
14
 
15
+ ## Target Branch
16
+
17
+ The default behavior of this command for Moddable developer tooling pulls the [latest release tooling](https://github.com/Moddable-OpenSource/moddable/releases) and source code for the associated tagged branch. This provides a known-working state for the SDK and avoids needing to build the tooling on the local machine.
18
+
19
+ To override this behavior, use the `--target-branch` flag to select `public`; this fetches the latest commit off that main branch and runs the build to generate the associated tools.
20
+
21
+ ```
22
+ xs-dev setup --target-branch public
23
+ ```
24
+
25
+ _This will only work for the `mac`, `windows`, and `linux` device options, which are the respective defaults for the operating system on which the command is run._
26
+
27
+ ## Device Updates
28
+
29
+ While the `update` command provides the latest Moddable SDK for the dev environment, the `--device` flag selects another platform target SDK to set up. It ensures the Moddable SDK has been installed first.
30
+
15
31
  The `--device` flag allows for selecting a different target platform:
16
32
 
17
33
  ```
@@ -9,6 +9,7 @@
9
9
  "resolveJsonModule": true,
10
10
  // Enable stricter transpilation for better output.
11
11
  "isolatedModules": true,
12
+ "noEmit": true,
12
13
  // Add type definitions for our Vite runtime.
13
14
  "types": ["vite/client"]
14
15
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xs-dev",
3
- "version": "0.15.1",
3
+ "version": "0.16.0",
4
4
  "description": "CLI for automating the setup and usage of Moddable XS tools",
5
5
  "types": "build/types/types.d.ts",
6
6
  "bin": {
@@ -20,6 +20,7 @@
20
20
  "url": "https://github.com/HipsterBrown/xs-dev.git"
21
21
  },
22
22
  "dependencies": {
23
+ "@octokit/rest": "^19.0.3",
23
24
  "axios": "^0.24.0",
24
25
  "gluegun": "^5.0.0",
25
26
  "serialport": "^10.3.0",
@@ -29,11 +30,10 @@
29
30
  "usb": "^2.2.0"
30
31
  },
31
32
  "devDependencies": {
32
- "@astrojs/lit": "^0.1.4",
33
- "@astrojs/markdown-remark": "^0.11.0",
34
- "@astrojs/preact": "^0.1.3",
35
- "@astrojs/sitemap": "^0.1.0",
36
- "@astrojs/tailwind": "^0.2.1",
33
+ "@astrojs/lit": "^1.0.0",
34
+ "@astrojs/preact": "^1.0.1",
35
+ "@astrojs/sitemap": "^1.0.0",
36
+ "@astrojs/tailwind": "^1.0.0",
37
37
  "@changesets/cli": "^2.19.0",
38
38
  "@types/jest": "^27.4.0",
39
39
  "@types/node": "^16.11.0",
@@ -43,7 +43,7 @@
43
43
  "@typescript-eslint/eslint-plugin": "^4.0.1",
44
44
  "@typescript-eslint/parser": "^4.0.0",
45
45
  "@webcomponents/template-shadowroot": "^0.1.0",
46
- "astro": "^1.0.0-beta.40",
46
+ "astro": "^1.0.2",
47
47
  "eslint": "^7.12.1",
48
48
  "eslint-config-prettier": "^8.3.0",
49
49
  "eslint-config-standard-with-typescript": "^21.0.1",
@@ -57,7 +57,7 @@
57
57
  "preact-render-to-string": "^5.2.0",
58
58
  "prettier": "^2.5.1",
59
59
  "ts-jest": "^27.1.0",
60
- "ts-node": "^10.4.0",
60
+ "ts-node": "^10.9.1",
61
61
  "typescript": "^4.7.3"
62
62
  },
63
63
  "jest": {