@phystack/cli 5.0.3 → 5.1.1
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
|
@@ -1,139 +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.updateDescription = void 0;
|
|
7
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
8
|
-
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
9
|
-
const fs_1 = __importDefault(require("fs"));
|
|
10
|
-
const path_1 = __importDefault(require("path"));
|
|
11
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
-
const template_1 = __importDefault(require("lodash/template"));
|
|
13
|
-
const utils_1 = require("./utils");
|
|
14
|
-
const with_spinner_1 = __importDefault(require("../../utils/with-spinner"));
|
|
15
|
-
const admin_api_1 = require("../../services/admin-api");
|
|
16
|
-
const readDescriptionFile = async (filename) => {
|
|
17
|
-
try {
|
|
18
|
-
await fs_1.default.promises.stat(filename);
|
|
19
|
-
}
|
|
20
|
-
catch (e) {
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
const result = {
|
|
24
|
-
title: null,
|
|
25
|
-
author: null,
|
|
26
|
-
description: '',
|
|
27
|
-
screenshots: [],
|
|
28
|
-
};
|
|
29
|
-
const descriptionText = await fs_1.default.promises.readFile(filename);
|
|
30
|
-
descriptionText
|
|
31
|
-
.toString()
|
|
32
|
-
.split('\n\n')
|
|
33
|
-
.forEach((p) => {
|
|
34
|
-
const images = Array.from(p.matchAll(/!\[.*?\]\((.+?)\)/g));
|
|
35
|
-
if (images.length) {
|
|
36
|
-
images.forEach(([_, file]) => result.screenshots.push(file));
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
const header = p.match(/^# /);
|
|
40
|
-
if (header) {
|
|
41
|
-
result.title = p
|
|
42
|
-
.split('\n')
|
|
43
|
-
.shift()
|
|
44
|
-
.replace(/#/g, '')
|
|
45
|
-
.trim();
|
|
46
|
-
const by = p
|
|
47
|
-
.split('\n')
|
|
48
|
-
.map((line) => /^[bB]y (.+)$/.exec(line))
|
|
49
|
-
.filter((a) => a)
|
|
50
|
-
.shift();
|
|
51
|
-
if (by) {
|
|
52
|
-
result.author = by[1]; // eslint-disable-line prefer-destructuring
|
|
53
|
-
}
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
result.description += `${p}\n\n`;
|
|
57
|
-
});
|
|
58
|
-
return result;
|
|
59
|
-
};
|
|
60
|
-
const getNameFromPackageJson = async (projectDir) => {
|
|
61
|
-
const packageFile = `${projectDir}/package.json`;
|
|
62
|
-
const resultRaw = await fs_1.default.promises.readFile(packageFile);
|
|
63
|
-
const resultParsed = JSON.parse(resultRaw.toString());
|
|
64
|
-
return resultParsed.name;
|
|
65
|
-
};
|
|
66
|
-
const updateDescription = async (descFilePath, data) => {
|
|
67
|
-
try {
|
|
68
|
-
const buffer = await fs_1.default.promises.readFile(descFilePath);
|
|
69
|
-
const content = buffer.toString();
|
|
70
|
-
const compiled = (0, template_1.default)(content, { interpolate: /{{([\s\S]+?)}}/g });
|
|
71
|
-
const updatedContent = compiled(data);
|
|
72
|
-
await fs_1.default.promises.writeFile(descFilePath, updatedContent);
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
console.log(chalk_1.default.green('Cannot update the description file. You may manually update it on your succeeding builds.'));
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
exports.updateDescription = updateDescription;
|
|
79
|
-
const uploadDescription = async (id, { filepath, applicationName, author, }) => {
|
|
80
|
-
let file = filepath;
|
|
81
|
-
if (!file) {
|
|
82
|
-
file = fs_1.default.existsSync('./DESCRIPTION.md') ? './DESCRIPTION.md' : './README.md';
|
|
83
|
-
}
|
|
84
|
-
const desc = await readDescriptionFile(file);
|
|
85
|
-
if (!desc) {
|
|
86
|
-
throw new Error('Unable to find description file');
|
|
87
|
-
}
|
|
88
|
-
const { dir: projectDir } = path_1.default.parse(file);
|
|
89
|
-
const projectId = id ||
|
|
90
|
-
(await (0, with_spinner_1.default)(() => getNameFromPackageJson(projectDir), 'Extracting app id from package.json'));
|
|
91
|
-
const [orgName, appId] = projectId.split('.');
|
|
92
|
-
const org = await (0, with_spinner_1.default)(() => (0, admin_api_1.adminApi)().organizations.getOrganizationBySlug(orgName), 'Fetching organization info');
|
|
93
|
-
if (!org) {
|
|
94
|
-
throw new Error('Organization not found');
|
|
95
|
-
}
|
|
96
|
-
// TO DO: Fetch the app by package name and organization id, instead of all apps
|
|
97
|
-
const apps = await (0, with_spinner_1.default)(() => (0, admin_api_1.adminApi)().gridapps.listGridappsByOrganizationId(org.id), 'Fetching app info');
|
|
98
|
-
const app = apps.find(({ packageName }) => packageName === appId);
|
|
99
|
-
if (!app) {
|
|
100
|
-
throw new Error('Application not found, should you create one?');
|
|
101
|
-
}
|
|
102
|
-
console.log(chalk_1.default.dim('Obtaining upload token'));
|
|
103
|
-
const token = await (0, admin_api_1.adminApi)().gridapps.getBuildUploadToken();
|
|
104
|
-
console.log(chalk_1.default.dim('Uploading screenshots'));
|
|
105
|
-
// eslint-disable-next-line guard-for-in
|
|
106
|
-
for (const n in desc.screenshots) {
|
|
107
|
-
const image = `${path_1.default.parse(file).dir}/${desc.screenshots[n]}`;
|
|
108
|
-
process.stdout.write(chalk_1.default.dim(`Uploading ${image}...`));
|
|
109
|
-
try {
|
|
110
|
-
await fs_1.default.promises.stat(image);
|
|
111
|
-
}
|
|
112
|
-
catch (e) {
|
|
113
|
-
console.log('not found');
|
|
114
|
-
continue; // eslint-disable-line no-continue
|
|
115
|
-
}
|
|
116
|
-
const url = await (0, utils_1.upload)({
|
|
117
|
-
file: image,
|
|
118
|
-
token,
|
|
119
|
-
gridappId: app.id,
|
|
120
|
-
suffix: `/screen${n}.png`,
|
|
121
|
-
contentType: 'image/png',
|
|
122
|
-
});
|
|
123
|
-
console.log(chalk_1.default.dim('ok'));
|
|
124
|
-
desc.screenshots[n] = url;
|
|
125
|
-
}
|
|
126
|
-
console.log(chalk_1.default.dim('Uploading description'));
|
|
127
|
-
await (0, admin_api_1.adminApi)().gridapps.updateGridapp({
|
|
128
|
-
id: app.id,
|
|
129
|
-
displayName: app.displayName,
|
|
130
|
-
packageName: app.packageName,
|
|
131
|
-
author: app.author,
|
|
132
|
-
access: app.access,
|
|
133
|
-
description: desc.description || app.description,
|
|
134
|
-
screenshots: desc.screenshots,
|
|
135
|
-
});
|
|
136
|
-
console.log(chalk_1.default.green('Description updated'));
|
|
137
|
-
};
|
|
138
|
-
exports.default = uploadDescription;
|
|
139
|
-
//# sourceMappingURL=upload-description.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-description.js","sourceRoot":"","sources":["../../../src/commands/app/upload-description.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +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 chalk_1 = __importDefault(require("chalk"));
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const admin_api_1 = require("../../services/admin-api");
|
|
9
|
-
exports.default = async (appName, destination) => {
|
|
10
|
-
try {
|
|
11
|
-
console.log(chalk_1.default.grey('Uploading settings for app'), chalk_1.default.bold(appName), chalk_1.default.gray('from'), chalk_1.default.green(destination));
|
|
12
|
-
if (!fs_1.default.statSync(destination).isDirectory()) {
|
|
13
|
-
throw new Error(`Not a directory: ${destination}`);
|
|
14
|
-
}
|
|
15
|
-
const payload = JSON.parse(fs_1.default.readFileSync(`${destination}/index.json`).toString());
|
|
16
|
-
const insts = await (0, admin_api_1.adminApi)().installations.listInstallations();
|
|
17
|
-
const inst = insts.find((a) => a.appName === appName);
|
|
18
|
-
if (!inst)
|
|
19
|
-
throw new Error('Installation not found');
|
|
20
|
-
inst.settings.provider.app = payload.app;
|
|
21
|
-
await (0, admin_api_1.adminApi)().installations.updateInstallation(inst);
|
|
22
|
-
console.log(chalk_1.default.green('Settings updated'));
|
|
23
|
-
}
|
|
24
|
-
catch (err) {
|
|
25
|
-
console.error(chalk_1.default.red(`❗️There was an error: ${err.message}`));
|
|
26
|
-
throw err;
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=upload-settings.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-settings.js","sourceRoot":"","sources":["../../../src/commands/app/upload-settings.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,4CAAoB;AACpB,wDAAoD;AAEpD,kBAAe,KAAK,EAAE,OAAe,EAAE,WAAmB,EAAE,EAAE;IAC5D,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,EACxC,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EACnB,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAClB,eAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CACzB,CAAC;QACF,IAAI,CAAC,YAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,GAAG,WAAW,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEpF,MAAM,KAAK,GAAG,MAAM,IAAA,oBAAQ,GAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;QAEjE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAErD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QAEzC,MAAM,IAAA,oBAAQ,GAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,86 +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.checkIfImageExists = exports.upload = exports.DEFAULT_REGISTRY = void 0;
|
|
7
|
-
exports.checkImageExistsInRegistry = checkImageExistsInRegistry;
|
|
8
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
9
|
-
const azure_storage_1 = require("azure-storage");
|
|
10
|
-
const child_process_1 = __importDefault(require("child_process"));
|
|
11
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
-
exports.DEFAULT_REGISTRY = 'docker.io';
|
|
13
|
-
const upload = async ({ file, token, gridappId, onProgress = null, contentType, suffix = '', }) => {
|
|
14
|
-
const { uri, sas, container, uuid } = token;
|
|
15
|
-
// TODO: extract thi to a blob service
|
|
16
|
-
const blobService = (0, azure_storage_1.createBlobServiceWithSas)(uri, sas).withFilter(new azure_storage_1.ExponentialRetryPolicyFilter());
|
|
17
|
-
const checkMD5 = false;
|
|
18
|
-
const blockSize = file.size > 1024 * 1024 * 32 ? 1024 * 1024 * 4 : 1024 * 512;
|
|
19
|
-
const options = {
|
|
20
|
-
storeBlobContentMD5: checkMD5,
|
|
21
|
-
blockSize,
|
|
22
|
-
contentSettings: { contentType },
|
|
23
|
-
};
|
|
24
|
-
blobService.singleBlobPutThresholdInBytes = blockSize;
|
|
25
|
-
const filename = `${gridappId}/${uuid}${suffix}`;
|
|
26
|
-
await new Promise((resolve, reject) => {
|
|
27
|
-
const speedSummary = blobService.createBlockBlobFromLocalFile(container, filename, file, options, (error) => {
|
|
28
|
-
if (error) {
|
|
29
|
-
reject(error);
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
resolve();
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
speedSummary.on('progress', () => {
|
|
36
|
-
if (onProgress) {
|
|
37
|
-
const percent = speedSummary.getCompletePercent(0);
|
|
38
|
-
if (percent != null) {
|
|
39
|
-
onProgress(percent);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
return `${uri}/${container}/${filename}`;
|
|
45
|
-
};
|
|
46
|
-
exports.upload = upload;
|
|
47
|
-
const checkIfImageExists = (image) => {
|
|
48
|
-
try {
|
|
49
|
-
child_process_1.default.execSync(`docker inspect ${image}`);
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
catch (e) {
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
exports.checkIfImageExists = checkIfImageExists;
|
|
57
|
-
async function checkImageExistsInRegistry(image, pullCredentials = null, registry = null) {
|
|
58
|
-
try {
|
|
59
|
-
// Login to registry with pull credentials if provided
|
|
60
|
-
if (pullCredentials &&
|
|
61
|
-
pullCredentials.username &&
|
|
62
|
-
pullCredentials.password &&
|
|
63
|
-
registry) {
|
|
64
|
-
try {
|
|
65
|
-
console.log(chalk_1.default.dim(`Logging in to registry ${registry} to check image existence...`));
|
|
66
|
-
child_process_1.default.execSync(`docker login ${registry} -u ${pullCredentials.username} -p ${pullCredentials.password}`, { stdio: 'pipe' });
|
|
67
|
-
}
|
|
68
|
-
catch (loginError) {
|
|
69
|
-
// Silently continue - Docker might use cached credentials
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
// Use docker manifest inspect to check if image exists
|
|
73
|
-
child_process_1.default.execSync(`docker manifest inspect ${image}`, { stdio: 'pipe' });
|
|
74
|
-
return true;
|
|
75
|
-
}
|
|
76
|
-
catch (e) {
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
exports.default = {
|
|
81
|
-
DEFAULT_REGISTRY: exports.DEFAULT_REGISTRY,
|
|
82
|
-
upload: exports.upload,
|
|
83
|
-
checkIfImageExists: exports.checkIfImageExists,
|
|
84
|
-
checkImageExistsInRegistry,
|
|
85
|
-
};
|
|
86
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/commands/app/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,145 +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 chalk_1 = __importDefault(require("chalk"));
|
|
7
|
-
const open_1 = __importDefault(require("open"));
|
|
8
|
-
const readline_1 = __importDefault(require("readline"));
|
|
9
|
-
const inquirer_1 = __importDefault(require("inquirer"));
|
|
10
|
-
const device_grant_auth_service_1 = __importDefault(require("../../services/auth/device-grant-auth.service"));
|
|
11
|
-
const admin_api_1 = require("../../services/admin-api");
|
|
12
|
-
const tenant_storage_1 = require("../../utils/tenant-storage");
|
|
13
|
-
const org_selector_1 = require("../../utils/org-selector");
|
|
14
|
-
const autoSelectTenant = async () => {
|
|
15
|
-
try {
|
|
16
|
-
const organizations = await (0, admin_api_1.adminApi)().organizations.listOrganizations();
|
|
17
|
-
if (!organizations || organizations.length === 0) {
|
|
18
|
-
console.log(chalk_1.default.yellow('No tenants found. Use `phy tenant select` after being added to a tenant.'));
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
if (organizations.length === 1) {
|
|
22
|
-
const org = organizations[0];
|
|
23
|
-
const tenant = {
|
|
24
|
-
id: org.id,
|
|
25
|
-
slug: org.organizationName,
|
|
26
|
-
displayName: org.displayName,
|
|
27
|
-
phyhubUrl: org.phyhubUrl,
|
|
28
|
-
};
|
|
29
|
-
await (0, tenant_storage_1.saveTenant)(tenant);
|
|
30
|
-
console.log(chalk_1.default.green(`Auto-selected tenant: ${chalk_1.default.blue(tenant.displayName)} (${tenant.slug})`));
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
console.log(chalk_1.default.dim(`\nFound ${organizations.length} tenants. Please select one:`));
|
|
34
|
-
await (0, org_selector_1.selectOrganization)('Select a tenant:', true);
|
|
35
|
-
}
|
|
36
|
-
catch (error) {
|
|
37
|
-
console.log(chalk_1.default.yellow(`Could not auto-select tenant: ${error.message}`));
|
|
38
|
-
console.log(chalk_1.default.dim('You can manually select a tenant with `phy tenant select`.'));
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
const clearLastConsoleLines = (count) => {
|
|
42
|
-
for (let i = 0; i < count; i++) {
|
|
43
|
-
readline_1.default.moveCursor(process.stdout, 0, -1);
|
|
44
|
-
readline_1.default.clearLine(process.stdout, 0);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
const login = async ({ useDeviceCode, useDeveloperToken, }) => {
|
|
48
|
-
let intervalInstance = null;
|
|
49
|
-
let didStartAuthFlow = false;
|
|
50
|
-
// Check for environment variable first for developer token
|
|
51
|
-
const envToken = process.env.PHYGRID_DEVELOPER_TOKEN;
|
|
52
|
-
if (envToken) {
|
|
53
|
-
const authService = new device_grant_auth_service_1.default();
|
|
54
|
-
await authService.storeDeveloperToken(envToken);
|
|
55
|
-
console.log(chalk_1.default.green('Developer token from environment variable stored successfully'));
|
|
56
|
-
await autoSelectTenant();
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
// Handle developer token authentication
|
|
60
|
-
if (useDeveloperToken !== undefined) {
|
|
61
|
-
const authService = new device_grant_auth_service_1.default();
|
|
62
|
-
// If token was provided as argument, use it directly
|
|
63
|
-
if (useDeveloperToken) {
|
|
64
|
-
await authService.storeDeveloperToken(useDeveloperToken);
|
|
65
|
-
console.log(chalk_1.default.green('Developer token stored successfully'));
|
|
66
|
-
await autoSelectTenant();
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
// Otherwise prompt for token
|
|
70
|
-
const { token } = await inquirer_1.default.prompt([
|
|
71
|
-
{
|
|
72
|
-
type: 'password',
|
|
73
|
-
name: 'token',
|
|
74
|
-
message: 'Enter your developer token:',
|
|
75
|
-
validate: (input) => {
|
|
76
|
-
if (!input || input.length < 10) {
|
|
77
|
-
return 'Please enter a valid developer token';
|
|
78
|
-
}
|
|
79
|
-
return true;
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
]);
|
|
83
|
-
await authService.storeDeveloperToken(token);
|
|
84
|
-
console.log(chalk_1.default.green('Developer token stored successfully'));
|
|
85
|
-
await autoSelectTenant();
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
const showCountdown = (ttl) => {
|
|
89
|
-
const expirationTime = Date.now() + ttl * 1000;
|
|
90
|
-
intervalInstance = setInterval(() => {
|
|
91
|
-
const remainingTime = expirationTime - Date.now();
|
|
92
|
-
if (remainingTime <= 0) {
|
|
93
|
-
clearInterval(intervalInstance);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
const minutes = Math.floor(remainingTime / 1000 / 60);
|
|
97
|
-
const seconds = Math.floor((remainingTime / 1000) % 60);
|
|
98
|
-
readline_1.default.cursorTo(process.stdout, 0);
|
|
99
|
-
process.stdout.write(`Time remaining: ${minutes}m ${seconds}s`);
|
|
100
|
-
}, 1000);
|
|
101
|
-
};
|
|
102
|
-
const clearLoginSession = () => {
|
|
103
|
-
if (intervalInstance) {
|
|
104
|
-
clearInterval(intervalInstance);
|
|
105
|
-
}
|
|
106
|
-
if (!didStartAuthFlow) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
const prevLinesToClear = useDeviceCode ? 3 : 6;
|
|
110
|
-
clearLastConsoleLines(prevLinesToClear);
|
|
111
|
-
};
|
|
112
|
-
const handleDeviceAuthorizationRequestStart = ({ verificationUri, verificationUriComplete, code, codeExpiresIn, }) => {
|
|
113
|
-
didStartAuthFlow = true;
|
|
114
|
-
if (useDeviceCode) {
|
|
115
|
-
console.log(chalk_1.default.yellow(`
|
|
116
|
-
To sign in, use a web browser to open the page ${verificationUri} and enter the code ${code} to authenticate.
|
|
117
|
-
`));
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
(0, open_1.default)(verificationUriComplete);
|
|
121
|
-
console.log(chalk_1.default.yellow(`
|
|
122
|
-
A web browser has been opened at ${verificationUri}.
|
|
123
|
-
Please continue the login in the web browser.
|
|
124
|
-
If no web browser is available or if the web browser fails to open, use device code flow with "phy login --use-device-code".
|
|
125
|
-
`));
|
|
126
|
-
}
|
|
127
|
-
console.log('Code:', code);
|
|
128
|
-
showCountdown(codeExpiresIn);
|
|
129
|
-
};
|
|
130
|
-
try {
|
|
131
|
-
const authService = new device_grant_auth_service_1.default();
|
|
132
|
-
await authService.authenticate({
|
|
133
|
-
onDeviceAuthorizationRequestStart: handleDeviceAuthorizationRequestStart,
|
|
134
|
-
});
|
|
135
|
-
clearLoginSession();
|
|
136
|
-
console.log(chalk_1.default.green('\nSuccessfully authenticated. You can now use the CLI.'));
|
|
137
|
-
await autoSelectTenant();
|
|
138
|
-
}
|
|
139
|
-
catch (error) {
|
|
140
|
-
clearLoginSession();
|
|
141
|
-
console.log(chalk_1.default.red('\nLogin failed.', error.message));
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
exports.default = login;
|
|
145
|
-
//# sourceMappingURL=login.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +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 chalk_1 = __importDefault(require("chalk"));
|
|
7
|
-
const device_grant_auth_service_1 = __importDefault(require("../../services/auth/device-grant-auth.service"));
|
|
8
|
-
const logout = async () => {
|
|
9
|
-
try {
|
|
10
|
-
const authService = new device_grant_auth_service_1.default();
|
|
11
|
-
await authService.logout();
|
|
12
|
-
console.log(chalk_1.default.green('Successfully logged out.'));
|
|
13
|
-
}
|
|
14
|
-
catch (error) {
|
|
15
|
-
console.log(chalk_1.default.red('Error during logout.', error.message));
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
exports.default = logout;
|
|
19
|
-
//# sourceMappingURL=logout.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/commands/auth/logout.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,8GAAwE;AAExE,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,mCAAW,EAAE,CAAC;QACtC,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;AACH,CAAC,CAAC;AAEF,kBAAe,MAAM,CAAC"}
|
|
@@ -1,143 +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.initializeDescriptorProject = void 0;
|
|
7
|
-
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
-
const path_1 = __importDefault(require("path"));
|
|
10
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
11
|
-
const templates_1 = require("../../utils/templates");
|
|
12
|
-
const utils_1 = require("../../utils");
|
|
13
|
-
/**
|
|
14
|
-
* Validates if a name follows descriptor naming rules
|
|
15
|
-
* @param name Name to validate
|
|
16
|
-
* @returns An object with isValid flag and error message
|
|
17
|
-
*/
|
|
18
|
-
const validateDescriptorName = (name) => {
|
|
19
|
-
// Trim and convert to lowercase
|
|
20
|
-
const trimmedName = name.trim().toLowerCase();
|
|
21
|
-
// Check length
|
|
22
|
-
if (trimmedName.length < 3) {
|
|
23
|
-
return { isValid: false, message: 'Name must be at least 3 characters' };
|
|
24
|
-
}
|
|
25
|
-
if (trimmedName.length > 100) {
|
|
26
|
-
return { isValid: false, message: 'Name cannot exceed 100 characters' };
|
|
27
|
-
}
|
|
28
|
-
// Check format with regex (kebab-case: lowercase letters, numbers, dashes)
|
|
29
|
-
// Must start with a letter and cannot end with a dash
|
|
30
|
-
if (!/^[a-z][a-z0-9-]*[a-z0-9]$/.test(trimmedName)) {
|
|
31
|
-
return {
|
|
32
|
-
isValid: false,
|
|
33
|
-
message: 'Name must be in kebab-case format (lowercase letters, numbers, and dashes only). Must start with a letter and cannot end with a dash.',
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
return { isValid: true, message: '' };
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Initialize a new descriptor project by cloning the template repository
|
|
40
|
-
* @param projectName The kebab-case name of the project
|
|
41
|
-
* @param displayName The friendly display name for the descriptor
|
|
42
|
-
* @param projectDirectory The directory to create the project in
|
|
43
|
-
* @returns Details about the created project
|
|
44
|
-
*/
|
|
45
|
-
const initializeDescriptorProject = async (projectName, displayName, projectDirectory) => {
|
|
46
|
-
// Validate descriptor name
|
|
47
|
-
const validation = validateDescriptorName(projectName);
|
|
48
|
-
if (!validation.isValid) {
|
|
49
|
-
throw new Error(`Invalid descriptor name: ${validation.message}`);
|
|
50
|
-
}
|
|
51
|
-
console.log(chalk_1.default.gray(`Creating a new twin descriptor in ${projectDirectory}`));
|
|
52
|
-
// Clone the template repository
|
|
53
|
-
await (0, templates_1.cloneRepo)({
|
|
54
|
-
destinationPath: projectDirectory,
|
|
55
|
-
repo: 'https://github.com/phystack/template-twin-descriptor.git',
|
|
56
|
-
projectName, // Kebab case name
|
|
57
|
-
displayName, // Friendly display name
|
|
58
|
-
});
|
|
59
|
-
// Return the project details
|
|
60
|
-
return {
|
|
61
|
-
projectDirectory,
|
|
62
|
-
projectName,
|
|
63
|
-
};
|
|
64
|
-
};
|
|
65
|
-
exports.initializeDescriptorProject = initializeDescriptorProject;
|
|
66
|
-
/**
|
|
67
|
-
* Command handler for creating a new descriptor
|
|
68
|
-
* @param projectName Optional project name provided via command line
|
|
69
|
-
* @param options Command options
|
|
70
|
-
*/
|
|
71
|
-
const create = async (projectName, options = {}) => {
|
|
72
|
-
let safeProjectName = projectName ? (0, utils_1.kebabCase)(projectName) : '';
|
|
73
|
-
let displayName = projectName || '';
|
|
74
|
-
try {
|
|
75
|
-
// If no project name provided, prompt for it
|
|
76
|
-
while (!safeProjectName || safeProjectName.trim() === '') {
|
|
77
|
-
const { name } = await inquirer_1.default.prompt([
|
|
78
|
-
{
|
|
79
|
-
name: 'name',
|
|
80
|
-
type: 'input',
|
|
81
|
-
message: 'Enter name for your descriptor:',
|
|
82
|
-
validate: (input) => {
|
|
83
|
-
if (!input.trim()) {
|
|
84
|
-
return 'Descriptor name cannot be empty';
|
|
85
|
-
}
|
|
86
|
-
return true;
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
]);
|
|
90
|
-
safeProjectName = (0, utils_1.kebabCase)(name);
|
|
91
|
-
displayName = name;
|
|
92
|
-
}
|
|
93
|
-
console.log(chalk_1.default.gray(`Creating descriptor with name: ${chalk_1.default.blue(safeProjectName)}`));
|
|
94
|
-
// Check if directory already exists
|
|
95
|
-
const projectDirectory = path_1.default.join(process.cwd(), safeProjectName.toLowerCase());
|
|
96
|
-
if (fs_extra_1.default.existsSync(projectDirectory)) {
|
|
97
|
-
console.error(chalk_1.default.red(`Directory ${chalk_1.default.bold(projectDirectory)} already exists.`));
|
|
98
|
-
console.error(chalk_1.default.red(`Please choose a different name or delete the existing directory.`));
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
// Initialize the project
|
|
102
|
-
await (0, exports.initializeDescriptorProject)(safeProjectName, displayName, projectDirectory);
|
|
103
|
-
// Install dependencies and build
|
|
104
|
-
console.log(chalk_1.default.gray('Installing dependencies and building project. This may take a while...'));
|
|
105
|
-
await (0, templates_1.installRepo)({
|
|
106
|
-
destinationPath: projectDirectory,
|
|
107
|
-
projectName: safeProjectName,
|
|
108
|
-
displayName,
|
|
109
|
-
});
|
|
110
|
-
// Success message with next steps
|
|
111
|
-
console.log(chalk_1.default.green(`\n✓ Twin descriptor project created successfully at ${projectDirectory}`));
|
|
112
|
-
console.log(chalk_1.default.dim('\nNext steps:'));
|
|
113
|
-
console.log(chalk_1.default.dim(`1. cd ${safeProjectName}`));
|
|
114
|
-
console.log(chalk_1.default.dim(`2. Edit the descriptor schema in schema.json`));
|
|
115
|
-
console.log(chalk_1.default.dim(`3. Run 'phy descriptor publish' to publish your descriptor`));
|
|
116
|
-
}
|
|
117
|
-
catch (err) {
|
|
118
|
-
console.error(chalk_1.default.red(`❗️There was an error creating the descriptor:`));
|
|
119
|
-
if (err.response) {
|
|
120
|
-
// Handle API error responses
|
|
121
|
-
console.error(chalk_1.default.red(`Status: ${err.response.status}`));
|
|
122
|
-
console.error(chalk_1.default.red(`Message: ${err.response.data?.message || err.message}`));
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
// Handle other types of errors
|
|
126
|
-
console.error(chalk_1.default.red(err.message));
|
|
127
|
-
}
|
|
128
|
-
// Clean up any partially created files/directories if needed
|
|
129
|
-
try {
|
|
130
|
-
if (safeProjectName &&
|
|
131
|
-
fs_extra_1.default.existsSync(path_1.default.join(process.cwd(), safeProjectName.toLowerCase()))) {
|
|
132
|
-
console.log(chalk_1.default.yellow(`Cleaning up directory: ${safeProjectName.toLowerCase()}`));
|
|
133
|
-
await fs_extra_1.default.remove(path_1.default.join(process.cwd(), safeProjectName.toLowerCase()));
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
catch (cleanupErr) {
|
|
137
|
-
console.error(chalk_1.default.red(`Failed to clean up: ${cleanupErr.message}`));
|
|
138
|
-
}
|
|
139
|
-
process.exit(1);
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
exports.default = create;
|
|
143
|
-
//# sourceMappingURL=create.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/descriptor/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +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 commander_1 = __importDefault(require("commander"));
|
|
7
|
-
const utils_1 = require("../../utils");
|
|
8
|
-
const create_1 = __importDefault(require("./create"));
|
|
9
|
-
const publish_1 = __importDefault(require("./publish"));
|
|
10
|
-
const show_1 = __importDefault(require("./show"));
|
|
11
|
-
// Stub function for the "list" command
|
|
12
|
-
async function list(searchString, options) {
|
|
13
|
-
console.log(`Listing descriptors${searchString ? ` matching '${searchString}'` : ''}`);
|
|
14
|
-
// Implementation to be added later
|
|
15
|
-
}
|
|
16
|
-
const descriptor = commander_1.default.command('descriptor').description('Descriptor management');
|
|
17
|
-
descriptor
|
|
18
|
-
.command('create [<projectName>]')
|
|
19
|
-
.description('Create a new descriptor project')
|
|
20
|
-
.action((0, utils_1.handleError)(create_1.default));
|
|
21
|
-
descriptor
|
|
22
|
-
.command('publish [<descriptorName>]')
|
|
23
|
-
.description('Publish a descriptor - creates new descriptor and publishes first version or publishes a new version of an existing descriptor based on provided name')
|
|
24
|
-
.option('--packageJsonPath <path>', 'Path to the package.json file to use (defaults to ./package.json)')
|
|
25
|
-
.option('--buildDir <path>', 'Path to the build directory containing schema.json and meta-schema.json (defaults to ./build/{version})')
|
|
26
|
-
.action((0, utils_1.handleError)(publish_1.default));
|
|
27
|
-
descriptor
|
|
28
|
-
.command('list [<search-string>]')
|
|
29
|
-
.description('List descriptors in currently selected tenant')
|
|
30
|
-
.action((0, utils_1.handleError)(list));
|
|
31
|
-
descriptor
|
|
32
|
-
.command('show <descriptorName>')
|
|
33
|
-
.description('Show details of a descriptor')
|
|
34
|
-
.action((0, utils_1.handleError)(show_1.default));
|
|
35
|
-
exports.default = descriptor;
|
|
36
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/descriptor/index.ts"],"names":[],"mappings":";;;;;AAAA,0DAAgC;AAChC,uCAA0C;AAC1C,sDAA8B;AAC9B,wDAAgC;AAChC,kDAA0B;AAE1B,uCAAuC;AACvC,KAAK,UAAU,IAAI,CAAC,YAAoB,EAAE,OAAY;IACpD,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,CAAC,CAAC,CAAC,cAAc,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvF,mCAAmC;AACrC,CAAC;AAED,MAAM,UAAU,GAAG,mBAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;AAEtF,UAAU;KACP,OAAO,CAAC,wBAAwB,CAAC;KACjC,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,IAAA,mBAAW,EAAC,gBAAM,CAAC,CAAC,CAAC;AAE/B,UAAU;KACP,OAAO,CAAC,4BAA4B,CAAC;KACrC,WAAW,CACV,uJAAuJ,CACxJ;KACA,MAAM,CACL,0BAA0B,EAC1B,mEAAmE,CACpE;KACA,MAAM,CACL,mBAAmB,EACnB,yGAAyG,CAC1G;KACA,MAAM,CAAC,IAAA,mBAAW,EAAC,iBAAO,CAAC,CAAC,CAAC;AAEhC,UAAU;KACP,OAAO,CAAC,wBAAwB,CAAC;KACjC,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC,CAAC;AAE7B,UAAU;KACP,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,IAAA,mBAAW,EAAC,cAAI,CAAC,CAAC,CAAC;AAE7B,kBAAe,UAAU,CAAC"}
|