@phystack/cli 4.3.40-dev
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/LICENSE.md +19 -0
- package/README.md +24 -0
- package/bin/index.js +2 -0
- package/dist/commands/app/build-apps.js +66 -0
- package/dist/commands/app/build-apps.js.map +1 -0
- package/dist/commands/app/build-container-remote.js +171 -0
- package/dist/commands/app/build-container-remote.js.map +1 -0
- package/dist/commands/app/build-container.js +330 -0
- package/dist/commands/app/build-container.js.map +1 -0
- package/dist/commands/app/build.js +393 -0
- package/dist/commands/app/build.js.map +1 -0
- package/dist/commands/app/create.js +451 -0
- package/dist/commands/app/create.js.map +1 -0
- package/dist/commands/app/deploy.js +176 -0
- package/dist/commands/app/deploy.js.map +1 -0
- package/dist/commands/app/device-picker.js +150 -0
- package/dist/commands/app/device-picker.js.map +1 -0
- package/dist/commands/app/import.js +303 -0
- package/dist/commands/app/import.js.map +1 -0
- package/dist/commands/app/list.js +26 -0
- package/dist/commands/app/list.js.map +1 -0
- package/dist/commands/app/publish.js +327 -0
- package/dist/commands/app/publish.js.map +1 -0
- package/dist/commands/app/settings.js +129 -0
- package/dist/commands/app/settings.js.map +1 -0
- package/dist/commands/app/types.js +13 -0
- package/dist/commands/app/types.js.map +1 -0
- package/dist/commands/app/upload-description.js +139 -0
- package/dist/commands/app/upload-description.js.map +1 -0
- package/dist/commands/app/upload-settings.js +29 -0
- package/dist/commands/app/upload-settings.js.map +1 -0
- package/dist/commands/app/utils.js +86 -0
- package/dist/commands/app/utils.js.map +1 -0
- package/dist/commands/auth/login.js +111 -0
- package/dist/commands/auth/login.js.map +1 -0
- package/dist/commands/auth/logout.js +19 -0
- package/dist/commands/auth/logout.js.map +1 -0
- package/dist/commands/descriptor/create.js +143 -0
- package/dist/commands/descriptor/create.js.map +1 -0
- package/dist/commands/descriptor/index.js +36 -0
- package/dist/commands/descriptor/index.js.map +1 -0
- package/dist/commands/descriptor/publish.js +163 -0
- package/dist/commands/descriptor/publish.js.map +1 -0
- package/dist/commands/descriptor/show.js +68 -0
- package/dist/commands/descriptor/show.js.map +1 -0
- package/dist/commands/dev/develop.js +175 -0
- package/dist/commands/dev/develop.js.map +1 -0
- package/dist/commands/dev/forward.js +118 -0
- package/dist/commands/dev/forward.js.map +1 -0
- package/dist/commands/dev/index.js +66 -0
- package/dist/commands/dev/index.js.map +1 -0
- package/dist/commands/dev/list.js +96 -0
- package/dist/commands/dev/list.js.map +1 -0
- package/dist/commands/dev/screen-devtools.js +156 -0
- package/dist/commands/dev/screen-devtools.js.map +1 -0
- package/dist/commands/dev/select.js +118 -0
- package/dist/commands/dev/select.js.map +1 -0
- package/dist/commands/dev/shell.js +171 -0
- package/dist/commands/dev/shell.js.map +1 -0
- package/dist/commands/dev/vnc.js +75 -0
- package/dist/commands/dev/vnc.js.map +1 -0
- package/dist/commands/device/select.js +118 -0
- package/dist/commands/device/select.js.map +1 -0
- package/dist/commands/flash.js +1120 -0
- package/dist/commands/flash.js.map +1 -0
- package/dist/commands/inst/create.js +55 -0
- package/dist/commands/inst/create.js.map +1 -0
- package/dist/commands/inst/index.js +15 -0
- package/dist/commands/inst/index.js.map +1 -0
- package/dist/commands/inst/list.js +26 -0
- package/dist/commands/inst/list.js.map +1 -0
- package/dist/commands/legacydev/debug.js +11 -0
- package/dist/commands/legacydev/debug.js.map +1 -0
- package/dist/commands/legacydev/deploy.js +15 -0
- package/dist/commands/legacydev/deploy.js.map +1 -0
- package/dist/commands/legacydev/dumpTwin.js +27 -0
- package/dist/commands/legacydev/dumpTwin.js.map +1 -0
- package/dist/commands/legacydev/forward.js +104 -0
- package/dist/commands/legacydev/forward.js.map +1 -0
- package/dist/commands/legacydev/index.js +188 -0
- package/dist/commands/legacydev/index.js.map +1 -0
- package/dist/commands/legacydev/invoke.js +29 -0
- package/dist/commands/legacydev/invoke.js.map +1 -0
- package/dist/commands/legacydev/js.js +69 -0
- package/dist/commands/legacydev/js.js.map +1 -0
- package/dist/commands/legacydev/list.js +196 -0
- package/dist/commands/legacydev/list.js.map +1 -0
- package/dist/commands/legacydev/logs.js +60 -0
- package/dist/commands/legacydev/logs.js.map +1 -0
- package/dist/commands/legacydev/modules.js +50 -0
- package/dist/commands/legacydev/modules.js.map +1 -0
- package/dist/commands/legacydev/move.js +23 -0
- package/dist/commands/legacydev/move.js.map +1 -0
- package/dist/commands/legacydev/ota.js +88 -0
- package/dist/commands/legacydev/ota.js.map +1 -0
- package/dist/commands/legacydev/patchTwin.js +21 -0
- package/dist/commands/legacydev/patchTwin.js.map +1 -0
- package/dist/commands/legacydev/pin.js +23 -0
- package/dist/commands/legacydev/pin.js.map +1 -0
- package/dist/commands/legacydev/pub.js +25 -0
- package/dist/commands/legacydev/pub.js.map +1 -0
- package/dist/commands/legacydev/rdp.js +64 -0
- package/dist/commands/legacydev/rdp.js.map +1 -0
- package/dist/commands/legacydev/screen-devtools.js +142 -0
- package/dist/commands/legacydev/screen-devtools.js.map +1 -0
- package/dist/commands/legacydev/settingsShow.js +89 -0
- package/dist/commands/legacydev/settingsShow.js.map +1 -0
- package/dist/commands/legacydev/settingsUpdate.js +114 -0
- package/dist/commands/legacydev/settingsUpdate.js.map +1 -0
- package/dist/commands/legacydev/shell.js +167 -0
- package/dist/commands/legacydev/shell.js.map +1 -0
- package/dist/commands/legacydev/showTwin.js +9 -0
- package/dist/commands/legacydev/showTwin.js.map +1 -0
- package/dist/commands/legacydev/statusLog.js +56 -0
- package/dist/commands/legacydev/statusLog.js.map +1 -0
- package/dist/commands/legacydev/sub.js +39 -0
- package/dist/commands/legacydev/sub.js.map +1 -0
- package/dist/commands/legacydev/vnc.js +61 -0
- package/dist/commands/legacydev/vnc.js.map +1 -0
- package/dist/commands/tenant/index.js +21 -0
- package/dist/commands/tenant/index.js.map +1 -0
- package/dist/commands/tenant/list.js +14 -0
- package/dist/commands/tenant/list.js.map +1 -0
- package/dist/commands/tenant/select.js +87 -0
- package/dist/commands/tenant/select.js.map +1 -0
- package/dist/commands/vm/create.js +718 -0
- package/dist/commands/vm/create.js.map +1 -0
- package/dist/commands/vm/index.js +130 -0
- package/dist/commands/vm/index.js.map +1 -0
- package/dist/commands/vm/list.js +124 -0
- package/dist/commands/vm/list.js.map +1 -0
- package/dist/commands/vm/logs.js +66 -0
- package/dist/commands/vm/logs.js.map +1 -0
- package/dist/commands/vm/remove.js +180 -0
- package/dist/commands/vm/remove.js.map +1 -0
- package/dist/commands/vm/shell.js +400 -0
- package/dist/commands/vm/shell.js.map +1 -0
- package/dist/commands/vm/start.js +861 -0
- package/dist/commands/vm/start.js.map +1 -0
- package/dist/commands/vm/stop.js +232 -0
- package/dist/commands/vm/stop.js.map +1 -0
- package/dist/index.js +158 -0
- package/dist/index.js.map +1 -0
- package/dist/services/admin-api/admin-api.types.js +3 -0
- package/dist/services/admin-api/admin-api.types.js.map +1 -0
- package/dist/services/admin-api/device-modules.admin-api.service.js +58 -0
- package/dist/services/admin-api/device-modules.admin-api.service.js.map +1 -0
- package/dist/services/admin-api/devices-admin-api.service.js +213 -0
- package/dist/services/admin-api/devices-admin-api.service.js.map +1 -0
- package/dist/services/admin-api/gridapps-admin-api.service.js +59 -0
- package/dist/services/admin-api/gridapps-admin-api.service.js.map +1 -0
- package/dist/services/admin-api/index.js +157 -0
- package/dist/services/admin-api/index.js.map +1 -0
- package/dist/services/admin-api/installations-admin-api.service.js +29 -0
- package/dist/services/admin-api/installations-admin-api.service.js.map +1 -0
- package/dist/services/admin-api/organizations-admin-api.service.js +53 -0
- package/dist/services/admin-api/organizations-admin-api.service.js.map +1 -0
- package/dist/services/auth/device-grant-auth.service.js +224 -0
- package/dist/services/auth/device-grant-auth.service.js.map +1 -0
- package/dist/services/phyhub/index.js +200 -0
- package/dist/services/phyhub/index.js.map +1 -0
- package/dist/services/phyhub/phyhub.types.js +3 -0
- package/dist/services/phyhub/phyhub.types.js.map +1 -0
- package/dist/utils/device-fetcher.js +92 -0
- package/dist/utils/device-fetcher.js.map +1 -0
- package/dist/utils/devices.js +41 -0
- package/dist/utils/devices.js.map +1 -0
- package/dist/utils/docker-credentials.js +720 -0
- package/dist/utils/docker-credentials.js.map +1 -0
- package/dist/utils/emulated-device.js +91 -0
- package/dist/utils/emulated-device.js.map +1 -0
- package/dist/utils/index.js +180 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/modules.js +36 -0
- package/dist/utils/modules.js.map +1 -0
- package/dist/utils/org-selector.js +108 -0
- package/dist/utils/org-selector.js.map +1 -0
- package/dist/utils/proxy.js +31 -0
- package/dist/utils/proxy.js.map +1 -0
- package/dist/utils/registry-credentials.js +113 -0
- package/dist/utils/registry-credentials.js.map +1 -0
- package/dist/utils/statuses.js +124 -0
- package/dist/utils/statuses.js.map +1 -0
- package/dist/utils/templates.js +197 -0
- package/dist/utils/templates.js.map +1 -0
- package/dist/utils/tenant-storage.js +88 -0
- package/dist/utils/tenant-storage.js.map +1 -0
- package/dist/utils/vm.js +434 -0
- package/dist/utils/vm.js.map +1 -0
- package/dist/utils/with-spinner.js +20 -0
- package/dist/utils/with-spinner.js.map +1 -0
- package/package.json +103 -0
|
@@ -0,0 +1,327 @@
|
|
|
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.uploadGridApp = exports.registerApp = void 0;
|
|
7
|
+
/* eslint no-constant-condition: ["error", { "checkLoops": false }] */
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const child_process_1 = __importDefault(require("child_process"));
|
|
12
|
+
const trimEnd_1 = __importDefault(require("lodash/trimEnd"));
|
|
13
|
+
const build_1 = require("./build");
|
|
14
|
+
const utils_1 = require("./utils");
|
|
15
|
+
const upload_description_1 = __importDefault(require("./upload-description"));
|
|
16
|
+
const build_container_1 = __importDefault(require("./build-container"));
|
|
17
|
+
const docker_credentials_1 = require("../../utils/docker-credentials");
|
|
18
|
+
const admin_api_1 = require("../../services/admin-api");
|
|
19
|
+
const PKG_FILE = './package.json';
|
|
20
|
+
/**
|
|
21
|
+
* Checks if a Docker image exists locally
|
|
22
|
+
*/
|
|
23
|
+
const imageExistsLocally = (image) => {
|
|
24
|
+
try {
|
|
25
|
+
child_process_1.default.execSync(`docker image inspect ${image}`, { stdio: 'ignore' });
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
// NOTE: we cant parse .gridapp file here, so we just guess the version from filename
|
|
33
|
+
const guessVersion = (packageJsonPath, gridappFilename) => {
|
|
34
|
+
if (fs_1.default.existsSync(packageJsonPath)) {
|
|
35
|
+
const { version } = JSON.parse(fs_1.default.readFileSync(packageJsonPath).toString());
|
|
36
|
+
if (/^[0-9.]+$/.test(version))
|
|
37
|
+
return version;
|
|
38
|
+
}
|
|
39
|
+
const name = path_1.default.basename(gridappFilename, '.gridapp');
|
|
40
|
+
if (!name)
|
|
41
|
+
return null;
|
|
42
|
+
const version = name.split('-').pop();
|
|
43
|
+
if (/^[0-9.]+$/.test(version))
|
|
44
|
+
return version;
|
|
45
|
+
return null;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* This function registers the app with the admin API.
|
|
49
|
+
* It will read package.json, verify the app identifier (<org>.<appName>) and create the app record if needed.
|
|
50
|
+
* This registration step happens immediately after cloning.
|
|
51
|
+
*/
|
|
52
|
+
const registerApp = async (id, { appDir, overwrite }) => {
|
|
53
|
+
const packageJsonPath = appDir ? `${appDir}/package.json` : 'package.json';
|
|
54
|
+
if (!fs_1.default.existsSync(packageJsonPath))
|
|
55
|
+
throw new Error(`${packageJsonPath} not found. Please specify app-id or run in an app directory`);
|
|
56
|
+
const pkgData = await fs_1.default.promises.readFile(packageJsonPath);
|
|
57
|
+
const { name, 'application-type': type } = JSON.parse(pkgData.toString());
|
|
58
|
+
const appIdentifier = id || name;
|
|
59
|
+
const [orgName, appName] = appIdentifier.split('.');
|
|
60
|
+
if (!appName) {
|
|
61
|
+
if (id)
|
|
62
|
+
throw new Error('Specify application name as <org>.<appName>');
|
|
63
|
+
throw new Error('Specify app name as "<org>.<appName>" in your package.json');
|
|
64
|
+
}
|
|
65
|
+
console.log(chalk_1.default.dim(`Looking for an application ${chalk_1.default.blue(appIdentifier)}`));
|
|
66
|
+
const orgs = await (0, admin_api_1.adminApi)().organizations.listOrganizations();
|
|
67
|
+
const org = orgs.find(({ organizationName }) => organizationName === orgName);
|
|
68
|
+
if (!org) {
|
|
69
|
+
throw new Error('Organisation not found');
|
|
70
|
+
}
|
|
71
|
+
const apps = await (0, admin_api_1.adminApi)().gridapps.listGridappsByOrganizationId(org.id);
|
|
72
|
+
let app = apps.find(({ packageName, organizationId }) => packageName === appName && organizationId === org.id);
|
|
73
|
+
if (!app) {
|
|
74
|
+
console.log(`App ${chalk_1.default.yellow('NOT FOUND')} in ${chalk_1.default.white(org.displayName)} organisation, ${chalk_1.default.yellow(`attempting to create it`)}`);
|
|
75
|
+
app = await (0, admin_api_1.adminApi)().gridapps.createGridapp({
|
|
76
|
+
packageName: appName,
|
|
77
|
+
type,
|
|
78
|
+
access: 'private',
|
|
79
|
+
organizationId: org.id,
|
|
80
|
+
description: 'no description',
|
|
81
|
+
displayName: appName,
|
|
82
|
+
});
|
|
83
|
+
console.log(`App ${chalk_1.default.blue(appName)} ${chalk_1.default.green('created successfully')}`);
|
|
84
|
+
}
|
|
85
|
+
return { id: app.id, name: appName, organizationId: org.id };
|
|
86
|
+
};
|
|
87
|
+
exports.registerApp = registerApp;
|
|
88
|
+
/**
|
|
89
|
+
* Uploads a GridApp for a specific app
|
|
90
|
+
*/
|
|
91
|
+
const uploadGridApp = async (app, gridappFile, appInfo, overwrite) => {
|
|
92
|
+
const { id: appId } = app;
|
|
93
|
+
// If the app is a docker image, build and push it to registry
|
|
94
|
+
if (appInfo.image) {
|
|
95
|
+
const fullImage = appInfo.image;
|
|
96
|
+
// The image should already have a version tag from the build process
|
|
97
|
+
const versionedImage = fullImage;
|
|
98
|
+
// Log the image being used
|
|
99
|
+
console.log(chalk_1.default.dim(`Using image: ${chalk_1.default.blue(versionedImage)}`));
|
|
100
|
+
// Extract registry information from the image
|
|
101
|
+
const registry = versionedImage.split('/')[0].includes('.')
|
|
102
|
+
? versionedImage.split('/')[0]
|
|
103
|
+
: utils_1.DEFAULT_REGISTRY;
|
|
104
|
+
// Check for cached build metadata
|
|
105
|
+
const metadataFile = '.phygrid-image.json';
|
|
106
|
+
let hasCachedBuild = false;
|
|
107
|
+
if (fs_1.default.existsSync(metadataFile)) {
|
|
108
|
+
const metadata = JSON.parse(fs_1.default.readFileSync(metadataFile, 'utf8'));
|
|
109
|
+
// Check if the cached build matches the expected tag
|
|
110
|
+
if (metadata.cached && metadata.tag === versionedImage) {
|
|
111
|
+
hasCachedBuild = true;
|
|
112
|
+
console.log(chalk_1.default.green(`✓ Found cached multi-platform build`));
|
|
113
|
+
console.log(chalk_1.default.dim(` Tag: ${metadata.tag}`));
|
|
114
|
+
console.log(chalk_1.default.dim(` Platforms: ${metadata.platforms.join(', ')}`));
|
|
115
|
+
console.log(chalk_1.default.dim(` Built: ${metadata.buildTime}`));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Verify Docker credentials before pushing
|
|
119
|
+
console.log(chalk_1.default.dim('Verifying Docker registry credentials for pushing'));
|
|
120
|
+
const verifiedCredentials = await (0, docker_credentials_1.setupDockerCredentials)(registry, app.name, 'package.json', versionedImage);
|
|
121
|
+
// Check if the image already exists in the registry
|
|
122
|
+
console.log(chalk_1.default.dim(`Checking if image already exists in registry: ${versionedImage}`));
|
|
123
|
+
const imageExists = await (0, utils_1.checkImageExistsInRegistry)(versionedImage, { username: verifiedCredentials.pullUsername, password: verifiedCredentials.pullPassword }, registry);
|
|
124
|
+
if (imageExists && !overwrite) {
|
|
125
|
+
throw new Error(`Docker image ${versionedImage} already exists in registry. Use --overwrite to replace it.`);
|
|
126
|
+
}
|
|
127
|
+
if (imageExists && overwrite) {
|
|
128
|
+
console.log(chalk_1.default.yellow(`⚠️ Image ${versionedImage} exists in registry and will be overwritten`));
|
|
129
|
+
}
|
|
130
|
+
else if (!imageExists) {
|
|
131
|
+
console.log(chalk_1.default.dim(`Image does not exist in registry, proceeding with build...`));
|
|
132
|
+
}
|
|
133
|
+
// Build and push the container to registry
|
|
134
|
+
console.log(chalk_1.default.dim('Building and pushing container to registry...'));
|
|
135
|
+
await (0, build_container_1.default)(undefined, { platforms: appInfo.platforms, shouldPush: true });
|
|
136
|
+
// Verify the image was pushed to the registry
|
|
137
|
+
console.log(chalk_1.default.dim('Verifying image was pushed to registry:', versionedImage));
|
|
138
|
+
const imagePushed = await (0, utils_1.checkImageExistsInRegistry)(versionedImage, { username: verifiedCredentials.pullUsername, password: verifiedCredentials.pullPassword }, registry);
|
|
139
|
+
if (!imagePushed) {
|
|
140
|
+
throw new Error(`Image was not pushed to registry: ${versionedImage}`);
|
|
141
|
+
}
|
|
142
|
+
console.log(chalk_1.default.green(`✓ Image successfully pushed to registry`));
|
|
143
|
+
}
|
|
144
|
+
console.log(chalk_1.default.dim('Obtaining upload token'));
|
|
145
|
+
const token = await (0, admin_api_1.adminApi)().gridapps.getBuildUploadToken();
|
|
146
|
+
// Call a helper upload function to push the .gridapp file.
|
|
147
|
+
const url = await (0, utils_1.upload)({
|
|
148
|
+
file: gridappFile,
|
|
149
|
+
token,
|
|
150
|
+
gridappId: appId,
|
|
151
|
+
contentType: 'application/octet-stream',
|
|
152
|
+
});
|
|
153
|
+
console.log(chalk_1.default.green(`Gridapp uploaded successfully: ${url}`));
|
|
154
|
+
return { id: appId, name: '', organizationId: '' };
|
|
155
|
+
};
|
|
156
|
+
exports.uploadGridApp = uploadGridApp;
|
|
157
|
+
exports.default = async (id, { file, appDir, overwrite }) => {
|
|
158
|
+
let appIdentifier = id;
|
|
159
|
+
let appType = 'screen';
|
|
160
|
+
const appRootDir = `${(0, trimEnd_1.default)(appDir, '/')}`;
|
|
161
|
+
const packageJsonPath = appDir ? `${appRootDir}/package.json` : PKG_FILE;
|
|
162
|
+
if (!id) {
|
|
163
|
+
if (!fs_1.default.existsSync(packageJsonPath))
|
|
164
|
+
throw new Error(`${packageJsonPath} not found. Please specify app-id, omg app publish [organization-slug.installation-slug]`);
|
|
165
|
+
const { name, 'application-type': type } = JSON.parse(fs_1.default.readFileSync(packageJsonPath).toString());
|
|
166
|
+
appIdentifier = name;
|
|
167
|
+
if (type === 'iot' || type === 'module' || type === 'edge')
|
|
168
|
+
appType = 'module';
|
|
169
|
+
if (type === 'mobile')
|
|
170
|
+
appType = 'mobile';
|
|
171
|
+
}
|
|
172
|
+
const [orgName, appName] = appIdentifier.split('.');
|
|
173
|
+
if (!appName) {
|
|
174
|
+
if (id) {
|
|
175
|
+
throw new Error('Specify application name as <org>.<appName>');
|
|
176
|
+
}
|
|
177
|
+
throw new Error('Specify app name as "<org>.<appName>" in your package.json');
|
|
178
|
+
}
|
|
179
|
+
console.log(chalk_1.default.dim(`Looking for an application ${chalk_1.default.blue(appIdentifier)}`));
|
|
180
|
+
const orgs = await (0, admin_api_1.adminApi)().organizations.listOrganizations();
|
|
181
|
+
const org = orgs.find(({ organizationName }) => organizationName === orgName);
|
|
182
|
+
if (!org) {
|
|
183
|
+
throw new Error('Organisation not found');
|
|
184
|
+
}
|
|
185
|
+
const apps = await (0, admin_api_1.adminApi)().gridapps.listGridappsByOrganizationId(org.id);
|
|
186
|
+
let app = apps.find(({ packageName, organizationId }) => packageName === appName && organizationId === org.id);
|
|
187
|
+
if (!app) {
|
|
188
|
+
console.log(`App ${chalk_1.default.yellow('NOT FOUND')} in ${chalk_1.default.white(org.displayName)} organisation, ${chalk_1.default.yellow(`attempting to create it`)}`);
|
|
189
|
+
const metaData = {
|
|
190
|
+
packageName: appName,
|
|
191
|
+
type: appType,
|
|
192
|
+
access: 'private',
|
|
193
|
+
organizationId: org.id,
|
|
194
|
+
description: 'no description',
|
|
195
|
+
displayName: appName,
|
|
196
|
+
appContainerGridappId: appType === 'module' ? undefined : 'app-container',
|
|
197
|
+
};
|
|
198
|
+
console.log(chalk_1.default.dim(`Creating app with metadata: ${JSON.stringify(metaData)}`));
|
|
199
|
+
app = await (0, admin_api_1.adminApi)().gridapps.createGridapp(metaData);
|
|
200
|
+
console.log(`App ${chalk_1.default.blue(appName)} ${chalk_1.default.green('created successfully')}`);
|
|
201
|
+
}
|
|
202
|
+
const { outputFilePath, appInfo } = await (0, build_1.getGridAppFileInfo)(appRootDir);
|
|
203
|
+
const gridappFile = file || outputFilePath;
|
|
204
|
+
console.log(chalk_1.default.dim(`Looking for a bundle: ${chalk_1.default.blue(gridappFile)}`));
|
|
205
|
+
let stat;
|
|
206
|
+
try {
|
|
207
|
+
stat = await fs_1.default.promises.stat(gridappFile);
|
|
208
|
+
}
|
|
209
|
+
catch (e) {
|
|
210
|
+
throw new Error(`.gridapp file not found. Try --file <file-path> command option`);
|
|
211
|
+
}
|
|
212
|
+
if (!stat.isFile())
|
|
213
|
+
throw new Error(`.gridapp file not found`);
|
|
214
|
+
const version = guessVersion(packageJsonPath, gridappFile);
|
|
215
|
+
if (version) {
|
|
216
|
+
console.log(chalk_1.default.dim(`Checking release version ${chalk_1.default.blue(version)}`));
|
|
217
|
+
const builds = await (0, admin_api_1.adminApi)().gridapps.listGridappBuilds(app.id);
|
|
218
|
+
if (!overwrite &&
|
|
219
|
+
builds
|
|
220
|
+
.filter((build) => build.result)
|
|
221
|
+
.find((build) => build.result.version === version)) {
|
|
222
|
+
throw new Error(`Version ${version} aleady exists`);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// If the app is a docker image, build and push it to registry
|
|
226
|
+
if (appInfo.image) {
|
|
227
|
+
const fullImage = appInfo.image;
|
|
228
|
+
// The image should already have a version tag from the build process
|
|
229
|
+
const versionedImage = fullImage;
|
|
230
|
+
// Log the image being used
|
|
231
|
+
console.log(chalk_1.default.dim(`Using image: ${chalk_1.default.blue(versionedImage)}`));
|
|
232
|
+
// Extract registry information from the image
|
|
233
|
+
const registry = versionedImage.split('/')[0].includes('.')
|
|
234
|
+
? versionedImage.split('/')[0]
|
|
235
|
+
: utils_1.DEFAULT_REGISTRY;
|
|
236
|
+
// Verify Docker credentials before pushing
|
|
237
|
+
console.log(chalk_1.default.dim('Verifying Docker registry credentials for pushing'));
|
|
238
|
+
const verifiedCredentials = await (0, docker_credentials_1.setupDockerCredentials)(registry, app.packageName, packageJsonPath, versionedImage);
|
|
239
|
+
// Check if the image already exists in the registry
|
|
240
|
+
console.log(chalk_1.default.dim(`Checking if image already exists in registry: ${versionedImage}`));
|
|
241
|
+
const imageExists = await (0, utils_1.checkImageExistsInRegistry)(versionedImage, { username: verifiedCredentials.pullUsername, password: verifiedCredentials.pullPassword }, registry);
|
|
242
|
+
if (imageExists && !overwrite) {
|
|
243
|
+
throw new Error(`Docker image ${versionedImage} already exists in registry. Use --overwrite to replace it.`);
|
|
244
|
+
}
|
|
245
|
+
if (imageExists && overwrite) {
|
|
246
|
+
console.log(chalk_1.default.yellow(`⚠️ Image ${versionedImage} exists in registry and will be overwritten`));
|
|
247
|
+
}
|
|
248
|
+
else if (!imageExists) {
|
|
249
|
+
console.log(chalk_1.default.dim(`Image does not exist in registry, proceeding with build...`));
|
|
250
|
+
}
|
|
251
|
+
// Build and push the container to registry
|
|
252
|
+
console.log(chalk_1.default.dim('Building and pushing container to registry...'));
|
|
253
|
+
await (0, build_container_1.default)(undefined, { platforms: appInfo.platforms, shouldPush: true });
|
|
254
|
+
// Verify the image was pushed to the registry
|
|
255
|
+
console.log(chalk_1.default.dim('Verifying image was pushed to registry:', versionedImage));
|
|
256
|
+
const imagePushed = await (0, utils_1.checkImageExistsInRegistry)(versionedImage, { username: verifiedCredentials.pullUsername, password: verifiedCredentials.pullPassword }, registry);
|
|
257
|
+
if (!imagePushed) {
|
|
258
|
+
throw new Error(`Image was not pushed to registry: ${versionedImage}`);
|
|
259
|
+
}
|
|
260
|
+
console.log(chalk_1.default.green(`✓ Image successfully pushed to registry`));
|
|
261
|
+
}
|
|
262
|
+
console.log(chalk_1.default.dim('Obtaining upload token'));
|
|
263
|
+
const token = await (0, admin_api_1.adminApi)().gridapps.getBuildUploadToken();
|
|
264
|
+
process.stdout.write(chalk_1.default.dim('Uploading...'));
|
|
265
|
+
await (0, utils_1.upload)({
|
|
266
|
+
suffix: '.gridapp',
|
|
267
|
+
file: gridappFile,
|
|
268
|
+
token,
|
|
269
|
+
gridappId: app.id,
|
|
270
|
+
onProgress: (p) => process.stdout.write(chalk_1.default.dim(`\rUploading...`) + chalk_1.default.white(p)),
|
|
271
|
+
contentType: 'application/x-gridapp',
|
|
272
|
+
});
|
|
273
|
+
console.log('');
|
|
274
|
+
console.log(chalk_1.default.dim('Creating a release'));
|
|
275
|
+
const build = await (0, admin_api_1.adminApi)().gridapps.createGridappBuild({
|
|
276
|
+
filename: path_1.default.basename(gridappFile),
|
|
277
|
+
size: stat.size,
|
|
278
|
+
fileUuid: token.uuid,
|
|
279
|
+
gridappId: app.id,
|
|
280
|
+
});
|
|
281
|
+
process.stdout.write(chalk_1.default.dim('Waiting for build...'));
|
|
282
|
+
let release;
|
|
283
|
+
while (true) {
|
|
284
|
+
process.stdout.write(chalk_1.default.dim('.'));
|
|
285
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
286
|
+
const res = await (0, admin_api_1.adminApi)().gridapps.listGridappBuilds(app.id);
|
|
287
|
+
release = res.find((data) => data.id === build.id);
|
|
288
|
+
if (release && release.status !== 'processing') {
|
|
289
|
+
break;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
console.log('');
|
|
293
|
+
if (release.status === 'error') {
|
|
294
|
+
throw new Error(`Unable to create release: ${release.metadata.error}`);
|
|
295
|
+
}
|
|
296
|
+
if (release.result.packageName !== appIdentifier) {
|
|
297
|
+
console.log(chalk_1.default.yellow("Package name in package.json is different from .gridapp file, you'll likely want to run `yarn build` again"));
|
|
298
|
+
console.log(` package.json: ${chalk_1.default.yellowBright(appIdentifier)}`);
|
|
299
|
+
console.log(` gridapp: ${chalk_1.default.yellowBright(release.result.packageName)}`);
|
|
300
|
+
}
|
|
301
|
+
if (version && release.result.version !== version) {
|
|
302
|
+
console.log(chalk_1.default.yellow("Version in package.json is different from .gridapp file, you'll likely want to run `yarn build` again"));
|
|
303
|
+
console.log(` package.json: ${chalk_1.default.yellowBright(version)}`);
|
|
304
|
+
console.log(` gridapp: ${chalk_1.default.yellowBright(release.result.version)}`);
|
|
305
|
+
}
|
|
306
|
+
console.log(`Release created: ${chalk_1.default.greenBright(release.result.packageName)}@${chalk_1.default.greenBright(release.result.version)}`);
|
|
307
|
+
const root = appRootDir || '.';
|
|
308
|
+
const descFilePath = fs_1.default.existsSync(`${root}/DESCRIPTION.md`)
|
|
309
|
+
? `${root}/DESCRIPTION.md`
|
|
310
|
+
: `${root}/README.md`;
|
|
311
|
+
if (fs_1.default.existsSync(descFilePath)) {
|
|
312
|
+
await (0, upload_description_1.default)(appIdentifier, {
|
|
313
|
+
filepath: descFilePath,
|
|
314
|
+
applicationName: appName,
|
|
315
|
+
author: org.displayName,
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
console.log(chalk_1.default.dim('Description file not found, not updating app info'));
|
|
320
|
+
}
|
|
321
|
+
return {
|
|
322
|
+
id: app.id,
|
|
323
|
+
name: app.displayName,
|
|
324
|
+
organizationId: app.organizationId,
|
|
325
|
+
};
|
|
326
|
+
};
|
|
327
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/commands/app/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
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
|
+
require("isomorphic-fetch");
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
// import { execSync } from 'child_process';
|
|
11
|
+
const mkdirp_1 = __importDefault(require("mkdirp"));
|
|
12
|
+
const rimraf_1 = require("rimraf");
|
|
13
|
+
const lodash_1 = require("lodash");
|
|
14
|
+
// import tar from 'tar';
|
|
15
|
+
const applyMedia = (settings, gridSettingsFolder, ancestors = null) => (0, lodash_1.mapValues)(settings, (item, key) => {
|
|
16
|
+
if (Array.isArray(item)) {
|
|
17
|
+
return (0, lodash_1.values)(applyMedia(item, gridSettingsFolder));
|
|
18
|
+
}
|
|
19
|
+
if (typeof item === 'object' && item !== null) {
|
|
20
|
+
if (item.ref === 'media') {
|
|
21
|
+
let suffix = '';
|
|
22
|
+
switch (item.type) {
|
|
23
|
+
case 'image/jpeg':
|
|
24
|
+
suffix = '.jpg';
|
|
25
|
+
break;
|
|
26
|
+
case 'image/png':
|
|
27
|
+
suffix = '.png';
|
|
28
|
+
break;
|
|
29
|
+
case 'image/svg+xml':
|
|
30
|
+
suffix = '.svg';
|
|
31
|
+
break;
|
|
32
|
+
case 'video/mp4':
|
|
33
|
+
suffix = '.mp4';
|
|
34
|
+
break;
|
|
35
|
+
case 'video/webm':
|
|
36
|
+
suffix = '.webm';
|
|
37
|
+
break;
|
|
38
|
+
case 'application/x-gridapp':
|
|
39
|
+
suffix = '.tar.gz';
|
|
40
|
+
break;
|
|
41
|
+
default:
|
|
42
|
+
}
|
|
43
|
+
// eslint-disable-next-line no-param-reassign
|
|
44
|
+
item.filename = `${item.id}${suffix}`;
|
|
45
|
+
// eslint-disable-next-line no-param-reassign
|
|
46
|
+
item.path = `/grid-settings/${item.filename}`;
|
|
47
|
+
if (item.type === 'application/x-gridapp') {
|
|
48
|
+
// const itemUrl = `${item.url}${suffix}`;
|
|
49
|
+
// const downloadPath = path.resolve(gridSettingsFolder, item.filename);
|
|
50
|
+
// eslint-disable-next-line no-param-reassign
|
|
51
|
+
item.path = `/grid-settings/${item.id}`;
|
|
52
|
+
// console.log('Downloading asset', key, itemUrl, downloadPath);
|
|
53
|
+
// // Don't download a file more than once
|
|
54
|
+
// try {
|
|
55
|
+
// execSync(
|
|
56
|
+
// `[ -f "${downloadPath}" ] || curl -s -o "${downloadPath}" "${itemUrl}" -O`,
|
|
57
|
+
// );
|
|
58
|
+
// console.log('Extracting assets', downloadPath);
|
|
59
|
+
// const directory = path.join(gridSettingsFolder, item.id);
|
|
60
|
+
// mkdirp.sync(directory);
|
|
61
|
+
// tar.x({
|
|
62
|
+
// file: downloadPath,
|
|
63
|
+
// cwd: directory,
|
|
64
|
+
// });
|
|
65
|
+
// } catch (error) {
|
|
66
|
+
// console.error('Error downloading asset', itemUrl, error);
|
|
67
|
+
// return false;
|
|
68
|
+
// }
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (Object.keys(item).length > 0) {
|
|
72
|
+
return applyMedia(item, gridSettingsFolder, `${ancestors || ''}${key}.`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return item;
|
|
76
|
+
});
|
|
77
|
+
async function writeConfigFile(filename, data) {
|
|
78
|
+
const jsonData = JSON.stringify(data, null, 2);
|
|
79
|
+
fs_extra_1.default.writeFileSync(filename, jsonData);
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
async function createGridSettingsFolder(settingsRaw, gridSettingsFolder) {
|
|
83
|
+
if (!gridSettingsFolder) {
|
|
84
|
+
throw new Error('No destination folder');
|
|
85
|
+
}
|
|
86
|
+
(0, rimraf_1.rimrafSync)(gridSettingsFolder);
|
|
87
|
+
mkdirp_1.default.sync(gridSettingsFolder);
|
|
88
|
+
const filename = `${gridSettingsFolder}/index.json`;
|
|
89
|
+
writeConfigFile(filename, applyMedia(settingsRaw, gridSettingsFolder));
|
|
90
|
+
return gridSettingsFolder;
|
|
91
|
+
}
|
|
92
|
+
exports.default = async (appName, destination = './src/settings') => {
|
|
93
|
+
try {
|
|
94
|
+
const gridSettingsFolder = destination ||
|
|
95
|
+
process.env.PHYGRID_SETTINGS_FOLDER ||
|
|
96
|
+
path_1.default.resolve(process.cwd(), './grid-settings');
|
|
97
|
+
const apiEndpoint = process.env[`${process.env.PHYGRID_ENV}_PHYGRID_ADMIN_API`] ||
|
|
98
|
+
process.env.PHYGRID_ADMIN_API ||
|
|
99
|
+
'https://api.omborigrid.com';
|
|
100
|
+
const settingsUrl = `${apiEndpoint}/api/settings/${appName}`;
|
|
101
|
+
// eslint-disable-next-line no-undef
|
|
102
|
+
const result = await fetch(settingsUrl);
|
|
103
|
+
const settings = await result.json();
|
|
104
|
+
if (settings.error) {
|
|
105
|
+
console.log(chalk_1.default.red('Fetch error:', settings.error));
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (settings.provider && settings.provider.app) {
|
|
109
|
+
settings.app = settings.provider.app;
|
|
110
|
+
}
|
|
111
|
+
if (settings.provider && settings.provider.web) {
|
|
112
|
+
settings.web = settings.provider.web;
|
|
113
|
+
}
|
|
114
|
+
if (settings.provider && settings.provider.generic) {
|
|
115
|
+
settings.generic = settings.provider.generic;
|
|
116
|
+
}
|
|
117
|
+
if (settings.provider) {
|
|
118
|
+
delete settings.provider;
|
|
119
|
+
}
|
|
120
|
+
const settingsDirectory = await createGridSettingsFolder(settings, gridSettingsFolder);
|
|
121
|
+
console.log(chalk_1.default.green(`✓ Successfully applied settings. It can be found in ${settingsDirectory}`));
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
// TODO: setup logging (Sentry, file, console output)
|
|
125
|
+
console.error(chalk_1.default.red(`❗️There was an error: ${err.message}`));
|
|
126
|
+
throw err;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/commands/app/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProjectType = void 0;
|
|
4
|
+
/* eslint-disable import/prefer-default-export */
|
|
5
|
+
var ProjectType;
|
|
6
|
+
(function (ProjectType) {
|
|
7
|
+
ProjectType["Basic"] = "basic";
|
|
8
|
+
ProjectType["Handlebars"] = "handlebars";
|
|
9
|
+
ProjectType["React"] = "react";
|
|
10
|
+
ProjectType["EdgeNode"] = "edgenode";
|
|
11
|
+
ProjectType["Mobile"] = "mobile";
|
|
12
|
+
})(ProjectType || (exports.ProjectType = ProjectType = {}));
|
|
13
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/app/types.ts"],"names":[],"mappings":";;;AAAA,iDAAiD;AACjD,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,wCAAyB,CAAA;IACzB,8BAAe,CAAA;IACf,oCAAqB,CAAA;IACrB,gCAAiB,CAAA;AACnB,CAAC,EANW,WAAW,2BAAX,WAAW,QAMtB"}
|
|
@@ -0,0 +1,139 @@
|
|
|
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
|