@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
|
@@ -1,330 +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_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const child_process_1 = __importDefault(require("child_process"));
|
|
10
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
-
const docker_credentials_1 = require("../../utils/docker-credentials");
|
|
12
|
-
const registry_credentials_1 = require("../../utils/registry-credentials");
|
|
13
|
-
const DEFAULT_REGISTRY = 'docker.io';
|
|
14
|
-
const ALL_ARCHS = ['arm64', 'amd64'];
|
|
15
|
-
const findArchs = (dir, filter) => {
|
|
16
|
-
// Only support a single Dockerfile, no platform-specific Dockerfiles
|
|
17
|
-
const hasDockerfile = fs_extra_1.default.existsSync(path_1.default.join(dir, 'Dockerfile'));
|
|
18
|
-
if (!hasDockerfile) {
|
|
19
|
-
console.error(chalk_1.default.red('❌ Dockerfile not found. Please create a Dockerfile in the project root.'));
|
|
20
|
-
process.exit(1);
|
|
21
|
-
}
|
|
22
|
-
const result = {};
|
|
23
|
-
// Determine which architectures to include based on filter
|
|
24
|
-
if (filter === 'all') {
|
|
25
|
-
// Include all supported architectures
|
|
26
|
-
for (const arch of ALL_ARCHS) {
|
|
27
|
-
result[arch] = 'Dockerfile';
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
// Include only the specified architecture
|
|
32
|
-
result[filter] = 'Dockerfile';
|
|
33
|
-
}
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
|
-
exports.findArchs = findArchs;
|
|
37
|
-
function setupBuildxBuilder() {
|
|
38
|
-
const builderName = 'phygrid-multiplatform';
|
|
39
|
-
try {
|
|
40
|
-
// Check if our builder already exists
|
|
41
|
-
const result = child_process_1.default.execSync('docker buildx ls', { encoding: 'utf8' });
|
|
42
|
-
if (result.includes(builderName)) {
|
|
43
|
-
console.log(chalk_1.default.dim(`Using existing buildx builder: ${builderName}`));
|
|
44
|
-
// Make sure it's active
|
|
45
|
-
child_process_1.default.execSync(`docker buildx use ${builderName}`, { stdio: 'pipe' });
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
// Builder list failed, continue to create
|
|
51
|
-
}
|
|
52
|
-
console.log(chalk_1.default.dim('Setting up Docker buildx for multi-platform builds...'));
|
|
53
|
-
// Check if running in CI environment
|
|
54
|
-
const isCI = process.env.CI || process.env.GITHUB_ACTIONS || process.env.GITLAB_CI;
|
|
55
|
-
if (isCI) {
|
|
56
|
-
console.log(chalk_1.default.dim('CI environment detected, setting up QEMU and buildx...'));
|
|
57
|
-
// Set up QEMU for cross-platform emulation
|
|
58
|
-
try {
|
|
59
|
-
console.log(chalk_1.default.dim('Setting up QEMU for cross-platform builds...'));
|
|
60
|
-
child_process_1.default.execSync('docker run --rm --privileged multiarch/qemu-user-static --reset -p yes', {
|
|
61
|
-
stdio: 'inherit',
|
|
62
|
-
});
|
|
63
|
-
console.log(chalk_1.default.green('✓ QEMU set up successfully'));
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
console.log(chalk_1.default.yellow('Warning: QEMU setup failed, cross-platform builds may not work'));
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
// Create and use a new buildx builder instance
|
|
70
|
-
try {
|
|
71
|
-
console.log(chalk_1.default.dim(`Creating buildx builder: ${builderName}...`));
|
|
72
|
-
child_process_1.default.execSync(`docker buildx create --name ${builderName} --use --bootstrap`, {
|
|
73
|
-
stdio: 'inherit',
|
|
74
|
-
});
|
|
75
|
-
console.log(chalk_1.default.green(`✓ Buildx builder '${builderName}' created and activated`));
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
console.log(chalk_1.default.yellow('Warning: Failed to create buildx builder, trying default...'));
|
|
79
|
-
// Try to use the default builder
|
|
80
|
-
try {
|
|
81
|
-
child_process_1.default.execSync('docker buildx use default', { stdio: 'pipe' });
|
|
82
|
-
}
|
|
83
|
-
catch (e) {
|
|
84
|
-
throw new Error('Failed to set up Docker buildx for multi-platform builds');
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
async function build({ tag, dir, archs, dockerfiles, registry, pushCredentials, shouldPush = false, isPrivateRepo = false }) {
|
|
89
|
-
// Extract base image name without version tag for cache-from
|
|
90
|
-
const baseImage = tag.split(':')[0];
|
|
91
|
-
const cacheImage = `${baseImage}:latest`;
|
|
92
|
-
// Check if latest tag exists in registry for caching
|
|
93
|
-
let cacheFromArg = '';
|
|
94
|
-
try {
|
|
95
|
-
child_process_1.default.execSync(`docker manifest inspect ${cacheImage}`, { stdio: 'pipe' });
|
|
96
|
-
cacheFromArg = `--cache-from=${cacheImage}`;
|
|
97
|
-
console.log(chalk_1.default.dim(`Using cache from: ${cacheImage}`));
|
|
98
|
-
}
|
|
99
|
-
catch (e) {
|
|
100
|
-
// Cache image doesn't exist, skip cache-from arg
|
|
101
|
-
console.log(chalk_1.default.dim(`No cache image found: ${cacheImage}`));
|
|
102
|
-
}
|
|
103
|
-
// Build platforms string for all architectures
|
|
104
|
-
const platforms = archs
|
|
105
|
-
.map((arch) => (arch === 'arm64' ? 'linux/arm64/v8' : 'linux/amd64'))
|
|
106
|
-
.join(',');
|
|
107
|
-
const platformArg = `--platform=${platforms}`;
|
|
108
|
-
// Use first Dockerfile in the list (should be the same for multiarch builds)
|
|
109
|
-
const dockerfile = dockerfiles[0];
|
|
110
|
-
// Check if building for multiple platforms
|
|
111
|
-
const isMultiPlatform = archs.length > 1;
|
|
112
|
-
// Set up buildx for multi-platform builds if needed
|
|
113
|
-
if (isMultiPlatform || shouldPush) {
|
|
114
|
-
setupBuildxBuilder();
|
|
115
|
-
}
|
|
116
|
-
// Determine output strategy
|
|
117
|
-
let outputArg = '';
|
|
118
|
-
let cmdExplanation = '';
|
|
119
|
-
if (shouldPush) {
|
|
120
|
-
// Push to registry for publish command
|
|
121
|
-
outputArg = '--push';
|
|
122
|
-
cmdExplanation = 'Pushing image to registry...';
|
|
123
|
-
// Login to Docker registry with push credentials (only needed when pushing)
|
|
124
|
-
if (pushCredentials && pushCredentials.username && pushCredentials.password) {
|
|
125
|
-
console.log(chalk_1.default.dim(`Logging in to registry ${registry} with push credentials...`));
|
|
126
|
-
try {
|
|
127
|
-
child_process_1.default.execSync(`docker login ${registry} -u ${pushCredentials.username} -p ${pushCredentials.password}`, { stdio: 'pipe' });
|
|
128
|
-
console.log(chalk_1.default.green('✓ Logged in to registry for pushing'));
|
|
129
|
-
}
|
|
130
|
-
catch (error) {
|
|
131
|
-
console.error(chalk_1.default.red(`Failed to login to registry: ${error.message}`));
|
|
132
|
-
// Continue with build as Docker might use cached credentials
|
|
133
|
-
}
|
|
134
|
-
// For Docker Hub, ensure the repository exists before pushing
|
|
135
|
-
await (0, docker_credentials_1.createDockerHubRepository)(registry, tag, pushCredentials.username, pushCredentials.password, isPrivateRepo);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
else if (isMultiPlatform) {
|
|
139
|
-
// Multi-platform builds cannot be loaded into daemon
|
|
140
|
-
console.log(chalk_1.default.yellow('⚠️ Multi-platform builds cannot be loaded into Docker daemon'));
|
|
141
|
-
console.log(chalk_1.default.yellow(' Build will be skipped. Use "yarn publish" to build and push multi-platform images'));
|
|
142
|
-
return true;
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
// Single platform: load into daemon
|
|
146
|
-
outputArg = '--load';
|
|
147
|
-
cmdExplanation = 'Loading image into Docker daemon...';
|
|
148
|
-
console.log(chalk_1.default.dim(cmdExplanation));
|
|
149
|
-
}
|
|
150
|
-
// When pushing, also tag as latest for better cache hits on subsequent builds
|
|
151
|
-
const baseImageName = tag.split(':')[0];
|
|
152
|
-
const versionTag = tag.split(':')[1] || 'latest';
|
|
153
|
-
const latestTag = `${baseImageName}:latest`;
|
|
154
|
-
const tagsArg = shouldPush ? `-t ${tag} -t ${latestTag}` : `-t ${tag}`;
|
|
155
|
-
const buildCmd = `docker buildx build ${platformArg} ${cacheFromArg} --build-arg BUILDKIT_INLINE_CACHE=1 ${outputArg} --rm -f "${dir}/${dockerfile}" ${tagsArg} "${dir}"`;
|
|
156
|
-
console.log(`$ ${buildCmd}`);
|
|
157
|
-
child_process_1.default.execSync(buildCmd, {
|
|
158
|
-
stdio: 'inherit',
|
|
159
|
-
});
|
|
160
|
-
if (shouldPush) {
|
|
161
|
-
console.log(chalk_1.default.green(`✓ Image pushed to registry (tagged as ${versionTag} and latest)`));
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
console.log(chalk_1.default.green(`✓ Image loaded into Docker daemon`));
|
|
165
|
-
}
|
|
166
|
-
return true;
|
|
167
|
-
}
|
|
168
|
-
async function buildModule({ name, version, registry, arch: selectedArch = 'all', platforms: platformsFromGridApp = null, customImageName = null, pushCredentials = null, shouldPush = false, isPrivateRepo = false, architecturesFromPackageJson = null, }) {
|
|
169
|
-
const dir = process.cwd();
|
|
170
|
-
// Priority: explicit --arch flag > package.json architectures > .gridapp platforms > default (both)
|
|
171
|
-
let archFilter;
|
|
172
|
-
if (selectedArch !== 'all') {
|
|
173
|
-
// Explicit arch was provided via --arch flag (highest priority)
|
|
174
|
-
archFilter = selectedArch;
|
|
175
|
-
console.log(chalk_1.default.dim(`Using architecture from --arch flag: ${chalk_1.default.blue(selectedArch)}`));
|
|
176
|
-
}
|
|
177
|
-
else if (architecturesFromPackageJson && architecturesFromPackageJson.length > 0) {
|
|
178
|
-
// Use architectures from package.json docker-credentials
|
|
179
|
-
archFilter = architecturesFromPackageJson.length === 1 ? architecturesFromPackageJson[0] : 'all';
|
|
180
|
-
console.log(chalk_1.default.dim(`Using architectures from package.json: ${chalk_1.default.blue(architecturesFromPackageJson.join(', '))}`));
|
|
181
|
-
}
|
|
182
|
-
else if (platformsFromGridApp && platformsFromGridApp.length > 0) {
|
|
183
|
-
// Use platforms from .gridapp file (for backward compatibility)
|
|
184
|
-
archFilter = platformsFromGridApp.length === 1 ? platformsFromGridApp[0] : 'all';
|
|
185
|
-
console.log(chalk_1.default.dim(`Using architectures from .gridapp: ${chalk_1.default.blue(platformsFromGridApp.join(', '))}`));
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
// Default to both architectures
|
|
189
|
-
archFilter = 'all';
|
|
190
|
-
console.log(chalk_1.default.dim(`Using default architectures: ${chalk_1.default.blue('arm64, amd64')}`));
|
|
191
|
-
}
|
|
192
|
-
const archsMap = (0, exports.findArchs)(dir, archFilter);
|
|
193
|
-
const archs = Object.keys(archsMap);
|
|
194
|
-
console.log(chalk_1.default.dim(`Building ${chalk_1.default.blueBright(name)} for architectures ${chalk_1.default.greenBright(archs.join(' '))}`));
|
|
195
|
-
// Use the custom image name if provided, otherwise construct it
|
|
196
|
-
// Ensure the tag always has a version
|
|
197
|
-
let tag;
|
|
198
|
-
if (customImageName) {
|
|
199
|
-
// Check if customImageName already has a version tag
|
|
200
|
-
if (customImageName.includes(':')) {
|
|
201
|
-
tag = customImageName;
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
// Add version tag if missing
|
|
205
|
-
tag = `${customImageName}:${version}`;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
tag = `${registry}/${name}:${version}`;
|
|
210
|
-
}
|
|
211
|
-
console.log(chalk_1.default.dim(`Using image tag: ${chalk_1.default.blue(tag)}`));
|
|
212
|
-
// Build all architectures in a single command using the single Dockerfile
|
|
213
|
-
await build({
|
|
214
|
-
dir,
|
|
215
|
-
tag,
|
|
216
|
-
archs,
|
|
217
|
-
dockerfiles: archs.map(() => 'Dockerfile'),
|
|
218
|
-
registry,
|
|
219
|
-
pushCredentials,
|
|
220
|
-
shouldPush,
|
|
221
|
-
isPrivateRepo,
|
|
222
|
-
});
|
|
223
|
-
console.log(chalk_1.default.dim('Build done'));
|
|
224
|
-
}
|
|
225
|
-
exports.default = async (moduleName, options = {}) => {
|
|
226
|
-
const { arch, platforms, shouldPush = false } = options;
|
|
227
|
-
const cwd = process.cwd();
|
|
228
|
-
const packageFile = path_1.default.join(cwd, 'package.json');
|
|
229
|
-
if (!fs_extra_1.default.existsSync(packageFile))
|
|
230
|
-
throw new Error('Run this command from a module repository');
|
|
231
|
-
const info = JSON.parse(fs_extra_1.default.readFileSync(packageFile).toString());
|
|
232
|
-
let { name, version } = info;
|
|
233
|
-
const dockerCredentials = info['docker-credentials'];
|
|
234
|
-
const registry = dockerCredentials?.registry || info['container-registry'] || DEFAULT_REGISTRY;
|
|
235
|
-
// Check if a custom image name is specified in docker-credentials
|
|
236
|
-
let customImageName = null;
|
|
237
|
-
// Get repository privacy setting (default to false for public)
|
|
238
|
-
const isPrivateRepo = dockerCredentials?.isPrivate === true;
|
|
239
|
-
// Get architectures from docker-credentials (default to both if not specified)
|
|
240
|
-
const architecturesFromPackageJson = dockerCredentials?.architectures || null;
|
|
241
|
-
if (dockerCredentials?.image) {
|
|
242
|
-
customImageName = dockerCredentials.image;
|
|
243
|
-
console.log(chalk_1.default.dim(`Using custom image name from docker-credentials: ${chalk_1.default.blue(customImageName)}`));
|
|
244
|
-
}
|
|
245
|
-
if (architecturesFromPackageJson) {
|
|
246
|
-
console.log(chalk_1.default.dim(`Architectures from package.json: ${chalk_1.default.blue(architecturesFromPackageJson.join(', '))}`));
|
|
247
|
-
}
|
|
248
|
-
if (moduleName) {
|
|
249
|
-
const [modName, modVersion] = moduleName.split('@');
|
|
250
|
-
name = modName || name;
|
|
251
|
-
version = modVersion || version;
|
|
252
|
-
}
|
|
253
|
-
// Set up Docker registry authentication based on whether we're pushing
|
|
254
|
-
let pushCredentials = null;
|
|
255
|
-
if (shouldPush) {
|
|
256
|
-
// Only authenticate with registry when pushing
|
|
257
|
-
// First check environment variables
|
|
258
|
-
const envPushUsername = process.env.PHYGRID_REGISTRY_PUSH_USERNAME;
|
|
259
|
-
const envPushPassword = process.env.PHYGRID_REGISTRY_PUSH_PASSWORD;
|
|
260
|
-
if (envPushUsername && envPushPassword) {
|
|
261
|
-
console.log(chalk_1.default.dim('Using push credentials from environment variables'));
|
|
262
|
-
pushCredentials = {
|
|
263
|
-
username: envPushUsername,
|
|
264
|
-
password: envPushPassword,
|
|
265
|
-
};
|
|
266
|
-
}
|
|
267
|
-
else {
|
|
268
|
-
// Check if credentials exist in registry credentials store
|
|
269
|
-
const storedCredentials = await (0, registry_credentials_1.getRegistryCredentials)(registry);
|
|
270
|
-
// If stored credentials exist, use them
|
|
271
|
-
if (storedCredentials &&
|
|
272
|
-
storedCredentials.push &&
|
|
273
|
-
storedCredentials.push.username &&
|
|
274
|
-
storedCredentials.push.password) {
|
|
275
|
-
console.log(chalk_1.default.dim('Using stored push credentials'));
|
|
276
|
-
pushCredentials = {
|
|
277
|
-
username: storedCredentials.push.username,
|
|
278
|
-
password: storedCredentials.push.password,
|
|
279
|
-
};
|
|
280
|
-
}
|
|
281
|
-
else {
|
|
282
|
-
// If no stored credentials, verify new ones
|
|
283
|
-
console.log(chalk_1.default.dim('No stored credentials found. Verifying Docker registry credentials...'));
|
|
284
|
-
const verifiedCredentials = await (0, docker_credentials_1.setupDockerCredentials)(registry, name, packageFile, customImageName);
|
|
285
|
-
pushCredentials = {
|
|
286
|
-
username: verifiedCredentials.pushUsername,
|
|
287
|
-
password: verifiedCredentials.pushPassword,
|
|
288
|
-
};
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
// If a custom image name is provided, use it directly
|
|
293
|
-
if (customImageName) {
|
|
294
|
-
// Extract name and version from the custom image
|
|
295
|
-
const parts = customImageName.split(':');
|
|
296
|
-
const customTag = parts.length > 1 ? parts[1] : version;
|
|
297
|
-
const customName = parts[0].split('/').pop();
|
|
298
|
-
// Ensure the custom image name has a version tag
|
|
299
|
-
if (!customImageName.includes(':')) {
|
|
300
|
-
customImageName = `${customImageName}:${version}`;
|
|
301
|
-
console.log(chalk_1.default.dim(`Adding version tag to custom image name: ${chalk_1.default.blue(customImageName)}`));
|
|
302
|
-
}
|
|
303
|
-
await buildModule({
|
|
304
|
-
name: customName,
|
|
305
|
-
version: customTag,
|
|
306
|
-
registry,
|
|
307
|
-
arch,
|
|
308
|
-
platforms,
|
|
309
|
-
customImageName,
|
|
310
|
-
pushCredentials,
|
|
311
|
-
shouldPush,
|
|
312
|
-
isPrivateRepo,
|
|
313
|
-
architecturesFromPackageJson,
|
|
314
|
-
});
|
|
315
|
-
}
|
|
316
|
-
else {
|
|
317
|
-
await buildModule({
|
|
318
|
-
name,
|
|
319
|
-
version,
|
|
320
|
-
registry,
|
|
321
|
-
arch,
|
|
322
|
-
platforms,
|
|
323
|
-
pushCredentials,
|
|
324
|
-
shouldPush,
|
|
325
|
-
isPrivateRepo,
|
|
326
|
-
architecturesFromPackageJson,
|
|
327
|
-
});
|
|
328
|
-
}
|
|
329
|
-
};
|
|
330
|
-
//# sourceMappingURL=build-container.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build-container.js","sourceRoot":"","sources":["../../../src/commands/app/build-container.ts"],"names":[],"mappings":"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"}
|