@phystack/cli 5.0.2 → 5.1.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/index.js +27 -1
- package/package.json +12 -65
- package/dist/commands/app/build-apps.js +0 -66
- package/dist/commands/app/build-apps.js.map +0 -1
- package/dist/commands/app/build-container-remote.js +0 -171
- package/dist/commands/app/build-container-remote.js.map +0 -1
- package/dist/commands/app/build-container.js +0 -330
- package/dist/commands/app/build-container.js.map +0 -1
- package/dist/commands/app/build.js +0 -398
- package/dist/commands/app/build.js.map +0 -1
- package/dist/commands/app/create.js +0 -463
- package/dist/commands/app/create.js.map +0 -1
- package/dist/commands/app/deploy.js +0 -176
- package/dist/commands/app/deploy.js.map +0 -1
- package/dist/commands/app/device-picker.js +0 -150
- package/dist/commands/app/device-picker.js.map +0 -1
- package/dist/commands/app/import.js +0 -336
- package/dist/commands/app/import.js.map +0 -1
- package/dist/commands/app/list.js +0 -26
- package/dist/commands/app/list.js.map +0 -1
- package/dist/commands/app/publish.js +0 -332
- package/dist/commands/app/publish.js.map +0 -1
- package/dist/commands/app/settings.js +0 -133
- package/dist/commands/app/settings.js.map +0 -1
- package/dist/commands/app/types.js +0 -14
- package/dist/commands/app/types.js.map +0 -1
- package/dist/commands/app/upload-description.js +0 -139
- package/dist/commands/app/upload-description.js.map +0 -1
- package/dist/commands/app/upload-settings.js +0 -29
- package/dist/commands/app/upload-settings.js.map +0 -1
- package/dist/commands/app/utils.js +0 -86
- package/dist/commands/app/utils.js.map +0 -1
- package/dist/commands/auth/login.js +0 -145
- package/dist/commands/auth/login.js.map +0 -1
- package/dist/commands/auth/logout.js +0 -19
- package/dist/commands/auth/logout.js.map +0 -1
- package/dist/commands/descriptor/create.js +0 -143
- package/dist/commands/descriptor/create.js.map +0 -1
- package/dist/commands/descriptor/index.js +0 -36
- package/dist/commands/descriptor/index.js.map +0 -1
- package/dist/commands/descriptor/publish.js +0 -163
- package/dist/commands/descriptor/publish.js.map +0 -1
- package/dist/commands/descriptor/show.js +0 -68
- package/dist/commands/descriptor/show.js.map +0 -1
- package/dist/commands/dev/cp.js +0 -764
- package/dist/commands/dev/cp.js.map +0 -1
- package/dist/commands/dev/develop.js +0 -175
- package/dist/commands/dev/develop.js.map +0 -1
- package/dist/commands/dev/forward.js +0 -132
- package/dist/commands/dev/forward.js.map +0 -1
- package/dist/commands/dev/index.js +0 -80
- package/dist/commands/dev/index.js.map +0 -1
- package/dist/commands/dev/list.js +0 -96
- package/dist/commands/dev/list.js.map +0 -1
- package/dist/commands/dev/screen-devtools.js +0 -156
- package/dist/commands/dev/screen-devtools.js.map +0 -1
- package/dist/commands/dev/select.js +0 -118
- package/dist/commands/dev/select.js.map +0 -1
- package/dist/commands/dev/shell.js +0 -186
- package/dist/commands/dev/shell.js.map +0 -1
- package/dist/commands/dev/vnc.js +0 -75
- package/dist/commands/dev/vnc.js.map +0 -1
- package/dist/commands/device/select.js +0 -118
- package/dist/commands/device/select.js.map +0 -1
- package/dist/commands/flash.js +0 -1120
- package/dist/commands/flash.js.map +0 -1
- package/dist/commands/inst/create.js +0 -55
- package/dist/commands/inst/create.js.map +0 -1
- package/dist/commands/inst/index.js +0 -15
- package/dist/commands/inst/index.js.map +0 -1
- package/dist/commands/inst/list.js +0 -26
- package/dist/commands/inst/list.js.map +0 -1
- package/dist/commands/legacydev/debug.js +0 -11
- package/dist/commands/legacydev/debug.js.map +0 -1
- package/dist/commands/legacydev/deploy.js +0 -15
- package/dist/commands/legacydev/deploy.js.map +0 -1
- package/dist/commands/legacydev/dumpTwin.js +0 -27
- package/dist/commands/legacydev/dumpTwin.js.map +0 -1
- package/dist/commands/legacydev/forward.js +0 -104
- package/dist/commands/legacydev/forward.js.map +0 -1
- package/dist/commands/legacydev/index.js +0 -188
- package/dist/commands/legacydev/index.js.map +0 -1
- package/dist/commands/legacydev/invoke.js +0 -29
- package/dist/commands/legacydev/invoke.js.map +0 -1
- package/dist/commands/legacydev/js.js +0 -69
- package/dist/commands/legacydev/js.js.map +0 -1
- package/dist/commands/legacydev/list.js +0 -196
- package/dist/commands/legacydev/list.js.map +0 -1
- package/dist/commands/legacydev/logs.js +0 -60
- package/dist/commands/legacydev/logs.js.map +0 -1
- package/dist/commands/legacydev/modules.js +0 -50
- package/dist/commands/legacydev/modules.js.map +0 -1
- package/dist/commands/legacydev/move.js +0 -23
- package/dist/commands/legacydev/move.js.map +0 -1
- package/dist/commands/legacydev/ota.js +0 -88
- package/dist/commands/legacydev/ota.js.map +0 -1
- package/dist/commands/legacydev/patchTwin.js +0 -21
- package/dist/commands/legacydev/patchTwin.js.map +0 -1
- package/dist/commands/legacydev/pin.js +0 -23
- package/dist/commands/legacydev/pin.js.map +0 -1
- package/dist/commands/legacydev/pub.js +0 -25
- package/dist/commands/legacydev/pub.js.map +0 -1
- package/dist/commands/legacydev/rdp.js +0 -64
- package/dist/commands/legacydev/rdp.js.map +0 -1
- package/dist/commands/legacydev/screen-devtools.js +0 -142
- package/dist/commands/legacydev/screen-devtools.js.map +0 -1
- package/dist/commands/legacydev/settingsShow.js +0 -89
- package/dist/commands/legacydev/settingsShow.js.map +0 -1
- package/dist/commands/legacydev/settingsUpdate.js +0 -114
- package/dist/commands/legacydev/settingsUpdate.js.map +0 -1
- package/dist/commands/legacydev/shell.js +0 -167
- package/dist/commands/legacydev/shell.js.map +0 -1
- package/dist/commands/legacydev/showTwin.js +0 -9
- package/dist/commands/legacydev/showTwin.js.map +0 -1
- package/dist/commands/legacydev/statusLog.js +0 -56
- package/dist/commands/legacydev/statusLog.js.map +0 -1
- package/dist/commands/legacydev/sub.js +0 -39
- package/dist/commands/legacydev/sub.js.map +0 -1
- package/dist/commands/legacydev/vnc.js +0 -61
- package/dist/commands/legacydev/vnc.js.map +0 -1
- package/dist/commands/simulator/index.js +0 -37
- package/dist/commands/simulator/index.js.map +0 -1
- package/dist/commands/simulator/list.js +0 -20
- package/dist/commands/simulator/list.js.map +0 -1
- package/dist/commands/simulator/remove.js +0 -19
- package/dist/commands/simulator/remove.js.map +0 -1
- package/dist/commands/simulator/run.js +0 -380
- package/dist/commands/simulator/run.js.map +0 -1
- package/dist/commands/simulator/start.js +0 -186
- package/dist/commands/simulator/start.js.map +0 -1
- package/dist/commands/tenant/index.js +0 -21
- package/dist/commands/tenant/index.js.map +0 -1
- package/dist/commands/tenant/list.js +0 -14
- package/dist/commands/tenant/list.js.map +0 -1
- package/dist/commands/tenant/select.js +0 -87
- package/dist/commands/tenant/select.js.map +0 -1
- package/dist/commands/vm/create.js +0 -959
- package/dist/commands/vm/create.js.map +0 -1
- package/dist/commands/vm/index.js +0 -130
- package/dist/commands/vm/index.js.map +0 -1
- package/dist/commands/vm/list.js +0 -124
- package/dist/commands/vm/list.js.map +0 -1
- package/dist/commands/vm/logs.js +0 -66
- package/dist/commands/vm/logs.js.map +0 -1
- package/dist/commands/vm/remove.js +0 -180
- package/dist/commands/vm/remove.js.map +0 -1
- package/dist/commands/vm/shell.js +0 -400
- package/dist/commands/vm/shell.js.map +0 -1
- package/dist/commands/vm/start.js +0 -861
- package/dist/commands/vm/start.js.map +0 -1
- package/dist/commands/vm/stop.js +0 -232
- package/dist/commands/vm/stop.js.map +0 -1
- package/dist/index.js +0 -169
- package/dist/index.js.map +0 -1
- package/dist/services/admin-api/admin-api.types.js +0 -3
- package/dist/services/admin-api/admin-api.types.js.map +0 -1
- package/dist/services/admin-api/device-modules.admin-api.service.js +0 -58
- package/dist/services/admin-api/device-modules.admin-api.service.js.map +0 -1
- package/dist/services/admin-api/devices-admin-api.service.js +0 -213
- package/dist/services/admin-api/devices-admin-api.service.js.map +0 -1
- package/dist/services/admin-api/gridapps-admin-api.service.js +0 -59
- package/dist/services/admin-api/gridapps-admin-api.service.js.map +0 -1
- package/dist/services/admin-api/index.js +0 -151
- package/dist/services/admin-api/index.js.map +0 -1
- package/dist/services/admin-api/installations-admin-api.service.js +0 -29
- package/dist/services/admin-api/installations-admin-api.service.js.map +0 -1
- package/dist/services/admin-api/organizations-admin-api.service.js +0 -53
- package/dist/services/admin-api/organizations-admin-api.service.js.map +0 -1
- package/dist/services/auth/device-grant-auth.service.js +0 -226
- package/dist/services/auth/device-grant-auth.service.js.map +0 -1
- package/dist/services/env.js +0 -21
- package/dist/services/env.js.map +0 -1
- package/dist/services/phyhub/index.js +0 -200
- package/dist/services/phyhub/index.js.map +0 -1
- package/dist/services/phyhub/phyhub.types.js +0 -3
- package/dist/services/phyhub/phyhub.types.js.map +0 -1
- package/dist/simulator/index.js +0 -162
- package/dist/simulator/index.js.map +0 -1
- package/dist/simulator/local-server.js +0 -147
- package/dist/simulator/local-server.js.map +0 -1
- package/dist/simulator/logger.js +0 -43
- package/dist/simulator/logger.js.map +0 -1
- package/dist/simulator/message-router.js +0 -379
- package/dist/simulator/message-router.js.map +0 -1
- package/dist/simulator/twin-cache.js +0 -58
- package/dist/simulator/twin-cache.js.map +0 -1
- package/dist/simulator/types.js +0 -16
- package/dist/simulator/types.js.map +0 -1
- package/dist/utils/device-fetcher.js +0 -92
- package/dist/utils/device-fetcher.js.map +0 -1
- package/dist/utils/devices.js +0 -41
- package/dist/utils/devices.js.map +0 -1
- package/dist/utils/docker-credentials.js +0 -720
- package/dist/utils/docker-credentials.js.map +0 -1
- package/dist/utils/emulated-device.js +0 -91
- package/dist/utils/emulated-device.js.map +0 -1
- package/dist/utils/index.js +0 -147
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/modules.js +0 -36
- package/dist/utils/modules.js.map +0 -1
- package/dist/utils/org-selector.js +0 -108
- package/dist/utils/org-selector.js.map +0 -1
- package/dist/utils/proxy.js +0 -31
- package/dist/utils/proxy.js.map +0 -1
- package/dist/utils/registry-credentials.js +0 -113
- package/dist/utils/registry-credentials.js.map +0 -1
- package/dist/utils/simulator-config.js +0 -142
- package/dist/utils/simulator-config.js.map +0 -1
- package/dist/utils/statuses.js +0 -124
- package/dist/utils/statuses.js.map +0 -1
- package/dist/utils/templates.js +0 -197
- package/dist/utils/templates.js.map +0 -1
- package/dist/utils/tenant-storage.js +0 -88
- package/dist/utils/tenant-storage.js.map +0 -1
- package/dist/utils/vm.js +0 -434
- package/dist/utils/vm.js.map +0 -1
- package/dist/utils/with-spinner.js +0 -20
- package/dist/utils/with-spinner.js.map +0 -1
package/bin/index.js
CHANGED
|
@@ -1,2 +1,28 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
require('
|
|
2
|
+
const { spawnSync } = require('child_process');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
|
|
5
|
+
const BINARY = 'phy';
|
|
6
|
+
const key = `${process.platform}-${process.arch}`;
|
|
7
|
+
const pkg = `@phystack/${BINARY}-${key}`;
|
|
8
|
+
const ext = process.platform === 'win32' ? '.exe' : '';
|
|
9
|
+
|
|
10
|
+
let binPath;
|
|
11
|
+
try {
|
|
12
|
+
binPath = path.join(
|
|
13
|
+
path.dirname(require.resolve(`${pkg}/package.json`)),
|
|
14
|
+
'bin',
|
|
15
|
+
BINARY + ext,
|
|
16
|
+
);
|
|
17
|
+
} catch {
|
|
18
|
+
console.error(
|
|
19
|
+
`Unsupported or missing platform package: ${pkg}\n` +
|
|
20
|
+
`Platform: ${key}\n\n` +
|
|
21
|
+
`Install manually: npm install ${pkg}\n` +
|
|
22
|
+
`Or download: bunx ${pkg}`,
|
|
23
|
+
);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const result = spawnSync(binPath, process.argv.slice(2), { stdio: 'inherit' });
|
|
28
|
+
process.exit(result.status ?? 1);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@phystack/cli",
|
|
3
|
-
"version": "5.0
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"description": "Phygrid CLI.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"homepage": "./",
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"scripts": {
|
|
19
19
|
"build": "tsc",
|
|
20
|
+
"build:binary": "bash build-binary.sh",
|
|
20
21
|
"start": "bun dist/src/index.js",
|
|
21
22
|
"dev": "bun --watch src/index.ts",
|
|
22
23
|
"lint": "tsc --noEmit",
|
|
@@ -27,74 +28,20 @@
|
|
|
27
28
|
"phy": "./bin/index.js"
|
|
28
29
|
},
|
|
29
30
|
"files": [
|
|
30
|
-
"bin/**/*"
|
|
31
|
-
"dist/**/*"
|
|
31
|
+
"bin/**/*"
|
|
32
32
|
],
|
|
33
33
|
"author": "PhyStack.com",
|
|
34
|
-
"devDependencies": {
|
|
35
|
-
"@types/ajv": "^1.0.0",
|
|
36
|
-
"@types/clui": "^0.3.0",
|
|
37
|
-
"@types/cross-spawn": "^6.0.2",
|
|
38
|
-
"@types/fs-extra": "^8.0.1",
|
|
39
|
-
"@types/inquirer": "^6.5.0",
|
|
40
|
-
"@types/node": "^13.1.1",
|
|
41
|
-
"@types/tar": "^4.0.3",
|
|
42
|
-
"@typescript-eslint/eslint-plugin": "^2.13.0",
|
|
43
|
-
"@typescript-eslint/parser": "^2.13.0",
|
|
44
|
-
"bufferutil": "^4.0.6",
|
|
45
|
-
"copyfiles": "^2.1.1",
|
|
46
|
-
"eslint": "^6.8.0",
|
|
47
|
-
"eslint-config-airbnb-base": "^14.0.0",
|
|
48
|
-
"eslint-config-prettier": "^6.9.0",
|
|
49
|
-
"eslint-plugin-import": "^2.19.1",
|
|
50
|
-
"eslint-plugin-prettier": "^3.1.2",
|
|
51
|
-
"prettier": "^1.19.1",
|
|
52
|
-
"ts-loader": "^9.3.1",
|
|
53
|
-
"ts-node": "^8.5.4",
|
|
54
|
-
"utf-8-validate": "^5.0.9"
|
|
55
|
-
},
|
|
56
|
-
"dependencies": {
|
|
57
|
-
"@phystack/hub-device": "5.0.2",
|
|
58
|
-
"@types/cheerio": "^0.22.35",
|
|
59
|
-
"@types/mkdirp": "^1.0.0",
|
|
60
|
-
"ajv": "^8.18.0",
|
|
61
|
-
"axios": "^1.7.9",
|
|
62
|
-
"axios-auth-refresh": "^3.3.6",
|
|
63
|
-
"azure-storage": "^2.10.3",
|
|
64
|
-
"boxen": "^4.2.0",
|
|
65
|
-
"chalk": "^3.0.0",
|
|
66
|
-
"cheerio": "^1.0.0-rc.12",
|
|
67
|
-
"cli-table3": "^0.6.3",
|
|
68
|
-
"clui": "^0.3.6",
|
|
69
|
-
"commander": "^5.0.0",
|
|
70
|
-
"cross-spawn": "^7.0.3",
|
|
71
|
-
"dotenv": "^8.2.0",
|
|
72
|
-
"fs-extra": "^8.1.0",
|
|
73
|
-
"fuzzy": "^0.1.3",
|
|
74
|
-
"http-proxy-agent": "^7.0.2",
|
|
75
|
-
"https-proxy-agent": "^7.0.6",
|
|
76
|
-
"inquirer": "^8.0.0",
|
|
77
|
-
"inquirer-autocomplete-prompt": "^2.0.0",
|
|
78
|
-
"isomorphic-fetch": "^2.2.1",
|
|
79
|
-
"lodash": "^4.17.15",
|
|
80
|
-
"md5": "^2.2.1",
|
|
81
|
-
"mkdirp": "^1.0.4",
|
|
82
|
-
"moment": "^2.29.1",
|
|
83
|
-
"node-fetch": "^3.3.2",
|
|
84
|
-
"open": "7.4.2",
|
|
85
|
-
"openid-client": "^5.6.5",
|
|
86
|
-
"rimraf": "^6.0.1",
|
|
87
|
-
"socket.io": "^4.7.5",
|
|
88
|
-
"socket.io-client": "^4.7.5",
|
|
89
|
-
"tar": "^5.0.5",
|
|
90
|
-
"typescript": "^5.4.5",
|
|
91
|
-
"uuid": "^11.0.5",
|
|
92
|
-
"websocket-stream": "^5.5.2",
|
|
93
|
-
"ws": "^7.4.5"
|
|
94
|
-
},
|
|
95
34
|
"resolutions": {
|
|
96
35
|
"string-width": "^4.2.3",
|
|
97
36
|
"strip-ansi": "^6.0.1"
|
|
98
37
|
},
|
|
99
|
-
"gitHead": "4b0803f6728ceb0665bd999b88ecbb31f8ea025c"
|
|
38
|
+
"gitHead": "4b0803f6728ceb0665bd999b88ecbb31f8ea025c",
|
|
39
|
+
"optionalDependencies": {
|
|
40
|
+
"@phystack/phy-darwin-arm64": "5.1.0",
|
|
41
|
+
"@phystack/phy-darwin-x64": "5.1.0",
|
|
42
|
+
"@phystack/phy-linux-arm64": "5.1.0",
|
|
43
|
+
"@phystack/phy-linux-x64": "5.1.0",
|
|
44
|
+
"@phystack/phy-win32-x64": "5.1.0",
|
|
45
|
+
"@phystack/phy-win32-arm64": "5.1.0"
|
|
46
|
+
}
|
|
100
47
|
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
-
const cross_spawn_1 = __importDefault(require("cross-spawn"));
|
|
10
|
-
const execCommand = (cmd, cwd, args = []) => {
|
|
11
|
-
const result = cross_spawn_1.default.sync(cmd, args, {
|
|
12
|
-
cwd,
|
|
13
|
-
stdio: ['inherit', 'inherit'],
|
|
14
|
-
shell: true,
|
|
15
|
-
});
|
|
16
|
-
const stderrStr = result.stderr?.toString() || '';
|
|
17
|
-
if (result.status !== 0 ||
|
|
18
|
-
stderrStr.indexOf('UnhandledPromiseRejectionWarning') !== -1) {
|
|
19
|
-
throw new Error(`Error running: ${cmd}: ${stderrStr}`);
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
exports.default = async () => {
|
|
23
|
-
try {
|
|
24
|
-
const cwd = process.cwd();
|
|
25
|
-
const gridAppsPath = path_1.default.join(cwd, 'public', 'gridapps');
|
|
26
|
-
const gridSettingsPath = path_1.default.join(cwd, 'grid-settings');
|
|
27
|
-
if (!fs_extra_1.default.existsSync(gridSettingsPath)) {
|
|
28
|
-
throw new Error(`Grid settings not found: ${gridSettingsPath}`);
|
|
29
|
-
}
|
|
30
|
-
fs_extra_1.default.ensureDirSync(gridAppsPath);
|
|
31
|
-
console.log(`Created dir: ${gridAppsPath}`);
|
|
32
|
-
// eslint-disable-next-line
|
|
33
|
-
const { general: generalSettings } = require(gridSettingsPath);
|
|
34
|
-
// example release value: GridApp v1.1.0
|
|
35
|
-
const packageVersion = generalSettings.release.split('v')[1];
|
|
36
|
-
try {
|
|
37
|
-
// download pre-built version of app-container
|
|
38
|
-
fs_extra_1.default.mkdirSync(`${gridAppsPath}/app-container`);
|
|
39
|
-
execCommand(`curl https://app.omborigrid.com/app-container/${packageVersion}/app-container.tar | tar xf - -C app-container`, gridAppsPath);
|
|
40
|
-
}
|
|
41
|
-
catch (e) {
|
|
42
|
-
const packageNameProviderPart = `ga-${generalSettings.provider}`;
|
|
43
|
-
const packageName = `@ombori/${packageNameProviderPart}@<=${packageVersion}`;
|
|
44
|
-
console.log(`Downloading package: ${packageName}`);
|
|
45
|
-
execCommand(`npm pack "${packageName}"`, gridAppsPath);
|
|
46
|
-
execCommand(`tar xf ombori-${packageNameProviderPart}*.tgz && rm ombori-${packageNameProviderPart}*.tgz`, gridAppsPath);
|
|
47
|
-
console.log(`Building package: ${packageName}`);
|
|
48
|
-
execCommand(`yarn && yarn build`, path_1.default.join(gridAppsPath, 'package'));
|
|
49
|
-
execCommand(`rm -rf ${generalSettings.provider}`, gridAppsPath); // remove directory if exists
|
|
50
|
-
execCommand(`mv package/build ${generalSettings.provider}`, gridAppsPath);
|
|
51
|
-
execCommand(`rm -rf package`, gridAppsPath);
|
|
52
|
-
}
|
|
53
|
-
// copy all grid apps that were part of grid settings to output dir
|
|
54
|
-
const gridAppDirs = fs_extra_1.default
|
|
55
|
-
.readdirSync(gridSettingsPath)
|
|
56
|
-
.filter((file) => fs_extra_1.default.statSync(path_1.default.join(gridSettingsPath, file)).isDirectory());
|
|
57
|
-
console.log(`Found grid app directories: ${gridAppDirs}, will be copied to output dir`);
|
|
58
|
-
await Promise.all(gridAppDirs.map((dir) => fs_extra_1.default.copy(path_1.default.join(gridSettingsPath, dir), path_1.default.join(gridAppsPath, dir))));
|
|
59
|
-
console.log(chalk_1.default.green(`✓ Build apps successful`));
|
|
60
|
-
}
|
|
61
|
-
catch (err) {
|
|
62
|
-
console.error(chalk_1.default.red(`❗️There was an error: ${err.message}`));
|
|
63
|
-
throw err;
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
//# sourceMappingURL=build-apps.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build-apps.js","sourceRoot":"","sources":["../../../src/commands/app/build-apps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.findArchs = void 0;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const child_process_1 = require("child_process");
|
|
10
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
-
const crypto_1 = __importDefault(require("crypto"));
|
|
12
|
-
const DEFAULT_REGISTRY = 'docker.io';
|
|
13
|
-
// Function to generate a random short unique ID
|
|
14
|
-
const generateShortId = () => {
|
|
15
|
-
return crypto_1.default.randomBytes(4).toString('hex');
|
|
16
|
-
};
|
|
17
|
-
const runRemoteCommand = async (deviceHostname, command, checkOutput = false) => {
|
|
18
|
-
return new Promise((resolve, reject) => {
|
|
19
|
-
let output = '';
|
|
20
|
-
const sshProcess = (0, child_process_1.spawn)('ssh', ['-tt', `dev@${deviceHostname}`, `TERM=xterm-256color ${command}`], {
|
|
21
|
-
stdio: checkOutput
|
|
22
|
-
? ['inherit', 'pipe', 'inherit']
|
|
23
|
-
: ['inherit', 'inherit', 'inherit'],
|
|
24
|
-
});
|
|
25
|
-
if (checkOutput) {
|
|
26
|
-
sshProcess.stdout?.on('data', (data) => {
|
|
27
|
-
output += data.toString();
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
sshProcess.on('close', (code) => {
|
|
31
|
-
if (checkOutput) {
|
|
32
|
-
resolve(output.trim());
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
resolve(code === 0);
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
sshProcess.on('error', (error) => {
|
|
39
|
-
console.error(chalk_1.default.red(`Failed to execute remote command: ${error.message}`));
|
|
40
|
-
reject(error);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
|
-
const getSystemArch = async (deviceHostname) => {
|
|
45
|
-
const arch = (await runRemoteCommand(deviceHostname, 'uname -m', true));
|
|
46
|
-
// Map common architecture names to our standard names
|
|
47
|
-
switch (arch) {
|
|
48
|
-
case 'x86_64':
|
|
49
|
-
return 'amd64';
|
|
50
|
-
case 'aarch64':
|
|
51
|
-
return 'arm64';
|
|
52
|
-
default:
|
|
53
|
-
throw new Error(`Unsupported architecture: ${arch}`);
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
const findArchs = (dir, currentArch) => {
|
|
57
|
-
const result = {};
|
|
58
|
-
// Check for architecture-specific Dockerfile
|
|
59
|
-
const specificDockerfile = `Dockerfile.${currentArch}`;
|
|
60
|
-
const hasSpecificDockerfile = fs_1.default.existsSync(path_1.default.join(dir, specificDockerfile));
|
|
61
|
-
// Check for generic Dockerfile
|
|
62
|
-
const hasGenericDockerfile = fs_1.default.existsSync(path_1.default.join(dir, 'Dockerfile'));
|
|
63
|
-
if (!hasSpecificDockerfile && !hasGenericDockerfile) {
|
|
64
|
-
throw new Error(`No Dockerfile found for architecture ${currentArch}. ` +
|
|
65
|
-
`Expected either 'Dockerfile.${currentArch}' or 'Dockerfile'`);
|
|
66
|
-
}
|
|
67
|
-
// If we have a specific Dockerfile for this architecture, use it
|
|
68
|
-
if (hasSpecificDockerfile) {
|
|
69
|
-
result[currentArch] = specificDockerfile;
|
|
70
|
-
}
|
|
71
|
-
// Otherwise use the generic Dockerfile if it exists
|
|
72
|
-
else if (hasGenericDockerfile) {
|
|
73
|
-
result[currentArch] = 'Dockerfile';
|
|
74
|
-
}
|
|
75
|
-
return result;
|
|
76
|
-
};
|
|
77
|
-
exports.findArchs = findArchs;
|
|
78
|
-
async function build({ tag, dir, arch, dockerfile, deviceHostname, remoteDir, phygridLocalNpm = false, isInProjectsDir = false }) {
|
|
79
|
-
// Convert ~ to /home/dev for remote paths
|
|
80
|
-
const fullRemoteDir = remoteDir.replace('~', '/home/dev');
|
|
81
|
-
console.log(chalk_1.default.dim('Checking for yarn installation...'));
|
|
82
|
-
await runRemoteCommand(deviceHostname, 'which yarn || sudo npm install -g yarn');
|
|
83
|
-
console.log(chalk_1.default.dim('Installing dependencies...'));
|
|
84
|
-
await runRemoteCommand(deviceHostname, `cd ${fullRemoteDir} && yarn install`);
|
|
85
|
-
console.log(chalk_1.default.dim('Building application...'));
|
|
86
|
-
await runRemoteCommand(deviceHostname, `cd ${fullRemoteDir} && yarn devbuild`);
|
|
87
|
-
const platform = arch === 'arm64' ? 'linux/arm64/v8' : 'linux/amd64';
|
|
88
|
-
console.log(chalk_1.default.dim(`Building Docker container for ${platform}...`));
|
|
89
|
-
// Add the build arg for PHYGRID_LOCAL_NPM if enabled
|
|
90
|
-
const buildArgs = phygridLocalNpm
|
|
91
|
-
? `--build-arg PHYGRID_LOCAL_NPM=true`
|
|
92
|
-
: '';
|
|
93
|
-
await runRemoteCommand(deviceHostname, `cd ${fullRemoteDir} && sudo docker buildx build ${buildArgs} --platform ${platform} --load --rm -f "${dockerfile}" -t ${tag} .`);
|
|
94
|
-
return true;
|
|
95
|
-
}
|
|
96
|
-
async function buildContainer({ name, version, registry, deviceHostname, remoteDir, customImageName, phygridLocalNpm = false, isInProjectsDir = false }) {
|
|
97
|
-
const currentArch = await getSystemArch(deviceHostname);
|
|
98
|
-
const archs = (0, exports.findArchs)(process.cwd(), currentArch);
|
|
99
|
-
console.log(chalk_1.default.dim(`Building ${chalk_1.default.blueBright(name)} for architecture ${chalk_1.default.greenBright(currentArch)}`));
|
|
100
|
-
// Use the custom image name if provided, otherwise construct it
|
|
101
|
-
const tag = customImageName || `${name}:${version}-${currentArch}`;
|
|
102
|
-
await build({
|
|
103
|
-
dir: process.cwd(),
|
|
104
|
-
tag,
|
|
105
|
-
arch: currentArch,
|
|
106
|
-
dockerfile: archs[currentArch],
|
|
107
|
-
deviceHostname,
|
|
108
|
-
remoteDir,
|
|
109
|
-
phygridLocalNpm,
|
|
110
|
-
isInProjectsDir
|
|
111
|
-
});
|
|
112
|
-
console.log(chalk_1.default.dim(`Build done ${tag}`));
|
|
113
|
-
return tag;
|
|
114
|
-
}
|
|
115
|
-
async function createLocalTwin(deviceHostname, image, createOptions) {
|
|
116
|
-
const twinConfig = {
|
|
117
|
-
type: 'Edge',
|
|
118
|
-
properties: {
|
|
119
|
-
desired: {
|
|
120
|
-
image,
|
|
121
|
-
createOptions,
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
};
|
|
125
|
-
const twinConfigJson = JSON.stringify(twinConfig).replace(/'/g, "\\'");
|
|
126
|
-
const command = `phyctl local create -t '${twinConfigJson}'`;
|
|
127
|
-
console.log(chalk_1.default.dim('Creating local twin...'));
|
|
128
|
-
await runRemoteCommand(deviceHostname, command);
|
|
129
|
-
}
|
|
130
|
-
exports.default = async (moduleName, { deviceHostname, remoteDir, phygridLocalNpm = false, isInProjectsDir = false }) => {
|
|
131
|
-
const cwd = process.cwd();
|
|
132
|
-
const packageFile = path_1.default.join(cwd, 'package.json');
|
|
133
|
-
const settingsFile = path_1.default.join(cwd, 'settings.json');
|
|
134
|
-
if (!fs_1.default.existsSync(packageFile)) {
|
|
135
|
-
throw new Error('Run this command from a module repository');
|
|
136
|
-
}
|
|
137
|
-
if (!fs_1.default.existsSync(settingsFile)) {
|
|
138
|
-
throw new Error('settings.json file is required');
|
|
139
|
-
}
|
|
140
|
-
const info = JSON.parse(fs_1.default.readFileSync(packageFile).toString());
|
|
141
|
-
const createOptions = JSON.parse(fs_1.default.readFileSync(settingsFile).toString());
|
|
142
|
-
const { name } = info;
|
|
143
|
-
const dockerCredentials = info['docker-credentials'];
|
|
144
|
-
const registry = dockerCredentials?.registry || info['container-registry'] || DEFAULT_REGISTRY;
|
|
145
|
-
const version = generateShortId();
|
|
146
|
-
// Check if a custom image name is specified in docker-credentials
|
|
147
|
-
let customImageName = null;
|
|
148
|
-
if (dockerCredentials?.image) {
|
|
149
|
-
customImageName = dockerCredentials.image;
|
|
150
|
-
console.log(chalk_1.default.dim(`Using custom image name from docker-credentials: ${chalk_1.default.blue(customImageName)}`));
|
|
151
|
-
}
|
|
152
|
-
// Log if using local phygrid-npm
|
|
153
|
-
if (phygridLocalNpm) {
|
|
154
|
-
console.log(chalk_1.default.cyan('Using local phygrid-npm packages for Docker build'));
|
|
155
|
-
}
|
|
156
|
-
console.log(chalk_1.default.dim(`Building ${name}...`));
|
|
157
|
-
const imageName = await buildContainer({
|
|
158
|
-
name,
|
|
159
|
-
version,
|
|
160
|
-
registry,
|
|
161
|
-
deviceHostname,
|
|
162
|
-
remoteDir,
|
|
163
|
-
customImageName,
|
|
164
|
-
phygridLocalNpm,
|
|
165
|
-
isInProjectsDir
|
|
166
|
-
});
|
|
167
|
-
// Create local twin with the built image
|
|
168
|
-
await createLocalTwin(deviceHostname, imageName, createOptions);
|
|
169
|
-
return imageName;
|
|
170
|
-
};
|
|
171
|
-
//# sourceMappingURL=build-container-remote.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build-container-remote.js","sourceRoot":"","sources":["../../../src/commands/app/build-container-remote.ts"],"names":[],"mappings":"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"}
|