@phystack/cli 5.0.3 → 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.
Files changed (218) hide show
  1. package/bin/index.js +27 -1
  2. package/package.json +12 -65
  3. package/dist/commands/app/build-apps.js +0 -66
  4. package/dist/commands/app/build-apps.js.map +0 -1
  5. package/dist/commands/app/build-container-remote.js +0 -171
  6. package/dist/commands/app/build-container-remote.js.map +0 -1
  7. package/dist/commands/app/build-container.js +0 -330
  8. package/dist/commands/app/build-container.js.map +0 -1
  9. package/dist/commands/app/build.js +0 -398
  10. package/dist/commands/app/build.js.map +0 -1
  11. package/dist/commands/app/create.js +0 -463
  12. package/dist/commands/app/create.js.map +0 -1
  13. package/dist/commands/app/deploy.js +0 -176
  14. package/dist/commands/app/deploy.js.map +0 -1
  15. package/dist/commands/app/device-picker.js +0 -150
  16. package/dist/commands/app/device-picker.js.map +0 -1
  17. package/dist/commands/app/import.js +0 -336
  18. package/dist/commands/app/import.js.map +0 -1
  19. package/dist/commands/app/list.js +0 -26
  20. package/dist/commands/app/list.js.map +0 -1
  21. package/dist/commands/app/publish.js +0 -332
  22. package/dist/commands/app/publish.js.map +0 -1
  23. package/dist/commands/app/settings.js +0 -133
  24. package/dist/commands/app/settings.js.map +0 -1
  25. package/dist/commands/app/types.js +0 -14
  26. package/dist/commands/app/types.js.map +0 -1
  27. package/dist/commands/app/upload-description.js +0 -139
  28. package/dist/commands/app/upload-description.js.map +0 -1
  29. package/dist/commands/app/upload-settings.js +0 -29
  30. package/dist/commands/app/upload-settings.js.map +0 -1
  31. package/dist/commands/app/utils.js +0 -86
  32. package/dist/commands/app/utils.js.map +0 -1
  33. package/dist/commands/auth/login.js +0 -145
  34. package/dist/commands/auth/login.js.map +0 -1
  35. package/dist/commands/auth/logout.js +0 -19
  36. package/dist/commands/auth/logout.js.map +0 -1
  37. package/dist/commands/descriptor/create.js +0 -143
  38. package/dist/commands/descriptor/create.js.map +0 -1
  39. package/dist/commands/descriptor/index.js +0 -36
  40. package/dist/commands/descriptor/index.js.map +0 -1
  41. package/dist/commands/descriptor/publish.js +0 -163
  42. package/dist/commands/descriptor/publish.js.map +0 -1
  43. package/dist/commands/descriptor/show.js +0 -68
  44. package/dist/commands/descriptor/show.js.map +0 -1
  45. package/dist/commands/dev/cp.js +0 -764
  46. package/dist/commands/dev/cp.js.map +0 -1
  47. package/dist/commands/dev/develop.js +0 -175
  48. package/dist/commands/dev/develop.js.map +0 -1
  49. package/dist/commands/dev/forward.js +0 -132
  50. package/dist/commands/dev/forward.js.map +0 -1
  51. package/dist/commands/dev/index.js +0 -80
  52. package/dist/commands/dev/index.js.map +0 -1
  53. package/dist/commands/dev/list.js +0 -96
  54. package/dist/commands/dev/list.js.map +0 -1
  55. package/dist/commands/dev/screen-devtools.js +0 -156
  56. package/dist/commands/dev/screen-devtools.js.map +0 -1
  57. package/dist/commands/dev/select.js +0 -118
  58. package/dist/commands/dev/select.js.map +0 -1
  59. package/dist/commands/dev/shell.js +0 -186
  60. package/dist/commands/dev/shell.js.map +0 -1
  61. package/dist/commands/dev/vnc.js +0 -75
  62. package/dist/commands/dev/vnc.js.map +0 -1
  63. package/dist/commands/device/select.js +0 -118
  64. package/dist/commands/device/select.js.map +0 -1
  65. package/dist/commands/flash.js +0 -1120
  66. package/dist/commands/flash.js.map +0 -1
  67. package/dist/commands/inst/create.js +0 -55
  68. package/dist/commands/inst/create.js.map +0 -1
  69. package/dist/commands/inst/index.js +0 -15
  70. package/dist/commands/inst/index.js.map +0 -1
  71. package/dist/commands/inst/list.js +0 -26
  72. package/dist/commands/inst/list.js.map +0 -1
  73. package/dist/commands/legacydev/debug.js +0 -11
  74. package/dist/commands/legacydev/debug.js.map +0 -1
  75. package/dist/commands/legacydev/deploy.js +0 -15
  76. package/dist/commands/legacydev/deploy.js.map +0 -1
  77. package/dist/commands/legacydev/dumpTwin.js +0 -27
  78. package/dist/commands/legacydev/dumpTwin.js.map +0 -1
  79. package/dist/commands/legacydev/forward.js +0 -104
  80. package/dist/commands/legacydev/forward.js.map +0 -1
  81. package/dist/commands/legacydev/index.js +0 -188
  82. package/dist/commands/legacydev/index.js.map +0 -1
  83. package/dist/commands/legacydev/invoke.js +0 -29
  84. package/dist/commands/legacydev/invoke.js.map +0 -1
  85. package/dist/commands/legacydev/js.js +0 -69
  86. package/dist/commands/legacydev/js.js.map +0 -1
  87. package/dist/commands/legacydev/list.js +0 -196
  88. package/dist/commands/legacydev/list.js.map +0 -1
  89. package/dist/commands/legacydev/logs.js +0 -60
  90. package/dist/commands/legacydev/logs.js.map +0 -1
  91. package/dist/commands/legacydev/modules.js +0 -50
  92. package/dist/commands/legacydev/modules.js.map +0 -1
  93. package/dist/commands/legacydev/move.js +0 -23
  94. package/dist/commands/legacydev/move.js.map +0 -1
  95. package/dist/commands/legacydev/ota.js +0 -88
  96. package/dist/commands/legacydev/ota.js.map +0 -1
  97. package/dist/commands/legacydev/patchTwin.js +0 -21
  98. package/dist/commands/legacydev/patchTwin.js.map +0 -1
  99. package/dist/commands/legacydev/pin.js +0 -23
  100. package/dist/commands/legacydev/pin.js.map +0 -1
  101. package/dist/commands/legacydev/pub.js +0 -25
  102. package/dist/commands/legacydev/pub.js.map +0 -1
  103. package/dist/commands/legacydev/rdp.js +0 -64
  104. package/dist/commands/legacydev/rdp.js.map +0 -1
  105. package/dist/commands/legacydev/screen-devtools.js +0 -142
  106. package/dist/commands/legacydev/screen-devtools.js.map +0 -1
  107. package/dist/commands/legacydev/settingsShow.js +0 -89
  108. package/dist/commands/legacydev/settingsShow.js.map +0 -1
  109. package/dist/commands/legacydev/settingsUpdate.js +0 -114
  110. package/dist/commands/legacydev/settingsUpdate.js.map +0 -1
  111. package/dist/commands/legacydev/shell.js +0 -167
  112. package/dist/commands/legacydev/shell.js.map +0 -1
  113. package/dist/commands/legacydev/showTwin.js +0 -9
  114. package/dist/commands/legacydev/showTwin.js.map +0 -1
  115. package/dist/commands/legacydev/statusLog.js +0 -56
  116. package/dist/commands/legacydev/statusLog.js.map +0 -1
  117. package/dist/commands/legacydev/sub.js +0 -39
  118. package/dist/commands/legacydev/sub.js.map +0 -1
  119. package/dist/commands/legacydev/vnc.js +0 -61
  120. package/dist/commands/legacydev/vnc.js.map +0 -1
  121. package/dist/commands/simulator/index.js +0 -37
  122. package/dist/commands/simulator/index.js.map +0 -1
  123. package/dist/commands/simulator/list.js +0 -20
  124. package/dist/commands/simulator/list.js.map +0 -1
  125. package/dist/commands/simulator/remove.js +0 -19
  126. package/dist/commands/simulator/remove.js.map +0 -1
  127. package/dist/commands/simulator/run.js +0 -380
  128. package/dist/commands/simulator/run.js.map +0 -1
  129. package/dist/commands/simulator/start.js +0 -186
  130. package/dist/commands/simulator/start.js.map +0 -1
  131. package/dist/commands/tenant/index.js +0 -21
  132. package/dist/commands/tenant/index.js.map +0 -1
  133. package/dist/commands/tenant/list.js +0 -14
  134. package/dist/commands/tenant/list.js.map +0 -1
  135. package/dist/commands/tenant/select.js +0 -87
  136. package/dist/commands/tenant/select.js.map +0 -1
  137. package/dist/commands/vm/create.js +0 -959
  138. package/dist/commands/vm/create.js.map +0 -1
  139. package/dist/commands/vm/index.js +0 -130
  140. package/dist/commands/vm/index.js.map +0 -1
  141. package/dist/commands/vm/list.js +0 -124
  142. package/dist/commands/vm/list.js.map +0 -1
  143. package/dist/commands/vm/logs.js +0 -66
  144. package/dist/commands/vm/logs.js.map +0 -1
  145. package/dist/commands/vm/remove.js +0 -180
  146. package/dist/commands/vm/remove.js.map +0 -1
  147. package/dist/commands/vm/shell.js +0 -400
  148. package/dist/commands/vm/shell.js.map +0 -1
  149. package/dist/commands/vm/start.js +0 -861
  150. package/dist/commands/vm/start.js.map +0 -1
  151. package/dist/commands/vm/stop.js +0 -232
  152. package/dist/commands/vm/stop.js.map +0 -1
  153. package/dist/index.js +0 -169
  154. package/dist/index.js.map +0 -1
  155. package/dist/services/admin-api/admin-api.types.js +0 -3
  156. package/dist/services/admin-api/admin-api.types.js.map +0 -1
  157. package/dist/services/admin-api/device-modules.admin-api.service.js +0 -58
  158. package/dist/services/admin-api/device-modules.admin-api.service.js.map +0 -1
  159. package/dist/services/admin-api/devices-admin-api.service.js +0 -213
  160. package/dist/services/admin-api/devices-admin-api.service.js.map +0 -1
  161. package/dist/services/admin-api/gridapps-admin-api.service.js +0 -59
  162. package/dist/services/admin-api/gridapps-admin-api.service.js.map +0 -1
  163. package/dist/services/admin-api/index.js +0 -151
  164. package/dist/services/admin-api/index.js.map +0 -1
  165. package/dist/services/admin-api/installations-admin-api.service.js +0 -29
  166. package/dist/services/admin-api/installations-admin-api.service.js.map +0 -1
  167. package/dist/services/admin-api/organizations-admin-api.service.js +0 -53
  168. package/dist/services/admin-api/organizations-admin-api.service.js.map +0 -1
  169. package/dist/services/auth/device-grant-auth.service.js +0 -226
  170. package/dist/services/auth/device-grant-auth.service.js.map +0 -1
  171. package/dist/services/env.js +0 -21
  172. package/dist/services/env.js.map +0 -1
  173. package/dist/services/phyhub/index.js +0 -200
  174. package/dist/services/phyhub/index.js.map +0 -1
  175. package/dist/services/phyhub/phyhub.types.js +0 -3
  176. package/dist/services/phyhub/phyhub.types.js.map +0 -1
  177. package/dist/simulator/index.js +0 -162
  178. package/dist/simulator/index.js.map +0 -1
  179. package/dist/simulator/local-server.js +0 -147
  180. package/dist/simulator/local-server.js.map +0 -1
  181. package/dist/simulator/logger.js +0 -43
  182. package/dist/simulator/logger.js.map +0 -1
  183. package/dist/simulator/message-router.js +0 -379
  184. package/dist/simulator/message-router.js.map +0 -1
  185. package/dist/simulator/twin-cache.js +0 -58
  186. package/dist/simulator/twin-cache.js.map +0 -1
  187. package/dist/simulator/types.js +0 -16
  188. package/dist/simulator/types.js.map +0 -1
  189. package/dist/utils/device-fetcher.js +0 -92
  190. package/dist/utils/device-fetcher.js.map +0 -1
  191. package/dist/utils/devices.js +0 -41
  192. package/dist/utils/devices.js.map +0 -1
  193. package/dist/utils/docker-credentials.js +0 -720
  194. package/dist/utils/docker-credentials.js.map +0 -1
  195. package/dist/utils/emulated-device.js +0 -91
  196. package/dist/utils/emulated-device.js.map +0 -1
  197. package/dist/utils/index.js +0 -147
  198. package/dist/utils/index.js.map +0 -1
  199. package/dist/utils/modules.js +0 -36
  200. package/dist/utils/modules.js.map +0 -1
  201. package/dist/utils/org-selector.js +0 -108
  202. package/dist/utils/org-selector.js.map +0 -1
  203. package/dist/utils/proxy.js +0 -31
  204. package/dist/utils/proxy.js.map +0 -1
  205. package/dist/utils/registry-credentials.js +0 -113
  206. package/dist/utils/registry-credentials.js.map +0 -1
  207. package/dist/utils/simulator-config.js +0 -142
  208. package/dist/utils/simulator-config.js.map +0 -1
  209. package/dist/utils/statuses.js +0 -124
  210. package/dist/utils/statuses.js.map +0 -1
  211. package/dist/utils/templates.js +0 -197
  212. package/dist/utils/templates.js.map +0 -1
  213. package/dist/utils/tenant-storage.js +0 -88
  214. package/dist/utils/tenant-storage.js.map +0 -1
  215. package/dist/utils/vm.js +0 -434
  216. package/dist/utils/vm.js.map +0 -1
  217. package/dist/utils/with-spinner.js +0 -20
  218. 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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"}