@gtkx/cli 2.0.0-beta.6 → 2.0.0-beta.8
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/README.md +43 -40
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/codegen/freshness.d.ts.map +1 -1
- package/dist/codegen/freshness.js +5 -1
- package/dist/codegen/freshness.js.map +1 -1
- package/dist/commands/deploy.d.ts +4 -0
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +6 -0
- package/dist/commands/deploy.js.map +1 -1
- package/dist/deploy/download.d.ts +7 -3
- package/dist/deploy/download.d.ts.map +1 -1
- package/dist/deploy/download.js +19 -15
- package/dist/deploy/download.js.map +1 -1
- package/dist/deploy/native-addon.d.ts +5 -0
- package/dist/deploy/native-addon.d.ts.map +1 -0
- package/dist/deploy/native-addon.js +134 -0
- package/dist/deploy/native-addon.js.map +1 -0
- package/dist/deploy/node-runtime/download.js +2 -2
- package/dist/deploy/node-runtime/download.js.map +1 -1
- package/dist/deploy/node-runtime/elf.d.ts +3 -1
- package/dist/deploy/node-runtime/elf.d.ts.map +1 -1
- package/dist/deploy/node-runtime/elf.js +3 -1
- package/dist/deploy/node-runtime/elf.js.map +1 -1
- package/dist/deploy/node-runtime/index.d.ts.map +1 -1
- package/dist/deploy/node-runtime/index.js +14 -2
- package/dist/deploy/node-runtime/index.js.map +1 -1
- package/dist/deploy/payload/stage.d.ts +2 -1
- package/dist/deploy/payload/stage.d.ts.map +1 -1
- package/dist/deploy/payload/stage.js +22 -2
- package/dist/deploy/payload/stage.js.map +1 -1
- package/dist/deploy/run-deploy.d.ts +1 -0
- package/dist/deploy/run-deploy.d.ts.map +1 -1
- package/dist/deploy/run-deploy.js +135 -79
- package/dist/deploy/run-deploy.js.map +1 -1
- package/dist/deploy/settings/arch.d.ts +9 -3
- package/dist/deploy/settings/arch.d.ts.map +1 -1
- package/dist/deploy/settings/arch.js +27 -6
- package/dist/deploy/settings/arch.js.map +1 -1
- package/dist/deploy/settings/index.d.ts +2 -1
- package/dist/deploy/settings/index.d.ts.map +1 -1
- package/dist/deploy/settings/index.js +2 -1
- package/dist/deploy/settings/index.js.map +1 -1
- package/dist/deploy/settings/libraries.d.ts.map +1 -1
- package/dist/deploy/settings/libraries.js +2 -1
- package/dist/deploy/settings/libraries.js.map +1 -1
- package/dist/deploy/settings/paths.d.ts +2 -1
- package/dist/deploy/settings/paths.d.ts.map +1 -1
- package/dist/deploy/settings/paths.js +6 -5
- package/dist/deploy/settings/paths.js.map +1 -1
- package/dist/deploy/targets/appimage.d.ts.map +1 -1
- package/dist/deploy/targets/appimage.js +1 -0
- package/dist/deploy/targets/appimage.js.map +1 -1
- package/dist/deploy/targets/flatpak-pnpm.js +4 -4
- package/dist/deploy/targets/flatpak-pnpm.js.map +1 -1
- package/dist/deploy/targets/flatpak-source.d.ts.map +1 -1
- package/dist/deploy/targets/flatpak-source.js +2 -0
- package/dist/deploy/targets/flatpak-source.js.map +1 -1
- package/dist/deploy/targets/flatpak.d.ts.map +1 -1
- package/dist/deploy/targets/flatpak.js +1 -0
- package/dist/deploy/targets/flatpak.js.map +1 -1
- package/dist/deploy/targets/nfpm-target.d.ts.map +1 -1
- package/dist/deploy/targets/nfpm-target.js +1 -0
- package/dist/deploy/targets/nfpm-target.js.map +1 -1
- package/dist/deploy/types.d.ts +4 -2
- package/dist/deploy/types.d.ts.map +1 -1
- package/dist/deploy/types.js.map +1 -1
- package/dist/deploy/vendored/appimagetool.js +2 -2
- package/dist/deploy/vendored/appimagetool.js.map +1 -1
- package/dist/deploy/vendored/nfpm.js +1 -1
- package/dist/deploy/vendored/nfpm.js.map +1 -1
- package/dist/dev/font-dir.d.ts +3 -0
- package/dist/dev/font-dir.d.ts.map +1 -0
- package/dist/dev/font-dir.js +9 -0
- package/dist/dev/font-dir.js.map +1 -0
- package/dist/dev/runner-main.d.ts.map +1 -1
- package/dist/dev/runner-main.js +2 -0
- package/dist/dev/runner-main.js.map +1 -1
- package/dist/dev/runner.d.ts.map +1 -1
- package/dist/dev/runner.js +19 -6
- package/dist/dev/runner.js.map +1 -1
- package/dist/internal/agent-rules.d.ts.map +1 -1
- package/dist/internal/agent-rules.js +6 -2
- package/dist/internal/agent-rules.js.map +1 -1
- package/dist/internal/banner.d.ts.map +1 -1
- package/dist/internal/banner.js +3 -0
- package/dist/internal/banner.js.map +1 -1
- package/dist/internal/font-path.d.ts +4 -0
- package/dist/internal/font-path.d.ts.map +1 -0
- package/dist/internal/font-path.js +12 -0
- package/dist/internal/font-path.js.map +1 -0
- package/dist/internal/font-staging.d.ts +6 -0
- package/dist/internal/font-staging.d.ts.map +1 -0
- package/dist/internal/font-staging.js +92 -0
- package/dist/internal/font-staging.js.map +1 -0
- package/dist/internal/source-imports.d.ts +2 -1
- package/dist/internal/source-imports.d.ts.map +1 -1
- package/dist/internal/source-imports.js +8 -3
- package/dist/internal/source-imports.js.map +1 -1
- package/dist/internal/xdg-banner.d.ts +4 -0
- package/dist/internal/xdg-banner.d.ts.map +1 -0
- package/dist/internal/xdg-banner.js +11 -0
- package/dist/internal/xdg-banner.js.map +1 -0
- package/dist/internal/xdg-data-dirs.d.ts +2 -1
- package/dist/internal/xdg-data-dirs.d.ts.map +1 -1
- package/dist/internal/xdg-data-dirs.js +1 -1
- package/dist/internal/xdg-data-dirs.js.map +1 -1
- package/dist/settings/schema.d.ts.map +1 -1
- package/dist/settings/schema.js +1 -6
- package/dist/settings/schema.js.map +1 -1
- package/dist/vite-plugins/asset-extensions.d.ts.map +1 -1
- package/dist/vite-plugins/asset-extensions.js +2 -0
- package/dist/vite-plugins/asset-extensions.js.map +1 -1
- package/dist/vite-plugins/asset-imports.d.ts.map +1 -1
- package/dist/vite-plugins/asset-imports.js +7 -2
- package/dist/vite-plugins/asset-imports.js.map +1 -1
- package/dist/vite-plugins/asset-specifier.d.ts +5 -1
- package/dist/vite-plugins/asset-specifier.d.ts.map +1 -1
- package/dist/vite-plugins/asset-specifier.js +10 -1
- package/dist/vite-plugins/asset-specifier.js.map +1 -1
- package/dist/vite-plugins/css.d.ts.map +1 -1
- package/dist/vite-plugins/css.js +3 -2
- package/dist/vite-plugins/css.js.map +1 -1
- package/dist/vite-plugins/font-name.d.ts +3 -0
- package/dist/vite-plugins/font-name.d.ts.map +1 -0
- package/dist/vite-plugins/font-name.js +406 -0
- package/dist/vite-plugins/font-name.js.map +1 -0
- package/dist/vite-plugins/font-worker-env.d.ts +4 -0
- package/dist/vite-plugins/font-worker-env.d.ts.map +1 -0
- package/dist/vite-plugins/font-worker-env.js +19 -0
- package/dist/vite-plugins/font-worker-env.js.map +1 -0
- package/dist/vite-plugins/font.d.ts +4 -0
- package/dist/vite-plugins/font.d.ts.map +1 -0
- package/dist/vite-plugins/font.js +99 -0
- package/dist/vite-plugins/font.js.map +1 -0
- package/dist/vite-plugins/icons.d.ts.map +1 -1
- package/dist/vite-plugins/icons.js +5 -10
- package/dist/vite-plugins/icons.js.map +1 -1
- package/dist/vite-plugins/index.d.ts.map +1 -1
- package/dist/vite-plugins/index.js +2 -0
- package/dist/vite-plugins/index.js.map +1 -1
- package/dist/vite-plugins/react-compiler.js +2 -2
- package/dist/vite-plugins/react-compiler.js.map +1 -1
- package/dist/vite-plugins/resources.js +3 -3
- package/dist/vite-plugins/resources.js.map +1 -1
- package/dist/vite-plugins/settings-worker-env.js +2 -2
- package/dist/vite-plugins/settings-worker-env.js.map +1 -1
- package/dist/vite-plugins/store-links.d.ts.map +1 -1
- package/dist/vite-plugins/store-links.js +2 -1
- package/dist/vite-plugins/store-links.js.map +1 -1
- package/dist/vite-plugins/undeclared-library.js +5 -5
- package/dist/vite-plugins/undeclared-library.js.map +1 -1
- package/dist/vitest-plugin.d.ts.map +1 -1
- package/dist/vitest-plugin.js +2 -0
- package/dist/vitest-plugin.js.map +1 -1
- package/env.d.ts +9 -0
- package/package.json +17 -15
- package/src/cli.ts +1 -1
- package/src/codegen/freshness.ts +5 -1
- package/src/commands/deploy.ts +6 -0
- package/src/deploy/download.ts +33 -17
- package/src/deploy/native-addon.ts +183 -0
- package/src/deploy/node-runtime/download.ts +2 -2
- package/src/deploy/node-runtime/elf.ts +4 -1
- package/src/deploy/node-runtime/index.ts +24 -4
- package/src/deploy/payload/stage.ts +34 -2
- package/src/deploy/run-deploy.ts +203 -93
- package/src/deploy/settings/arch.ts +40 -8
- package/src/deploy/settings/index.ts +4 -1
- package/src/deploy/settings/libraries.ts +2 -1
- package/src/deploy/settings/paths.ts +8 -6
- package/src/deploy/targets/appimage.ts +1 -0
- package/src/deploy/targets/flatpak-pnpm.ts +4 -4
- package/src/deploy/targets/flatpak-source.ts +2 -0
- package/src/deploy/targets/flatpak.ts +1 -0
- package/src/deploy/targets/nfpm-target.ts +1 -0
- package/src/deploy/types.ts +4 -1
- package/src/deploy/vendored/appimagetool.ts +2 -2
- package/src/deploy/vendored/nfpm.ts +1 -1
- package/src/dev/font-dir.ts +11 -0
- package/src/dev/runner-main.ts +2 -0
- package/src/dev/runner.ts +24 -6
- package/src/internal/agent-rules.ts +6 -2
- package/src/internal/banner.ts +4 -0
- package/src/internal/font-path.ts +15 -0
- package/src/internal/font-staging.ts +129 -0
- package/src/internal/source-imports.ts +18 -3
- package/src/internal/xdg-banner.ts +13 -0
- package/src/internal/xdg-data-dirs.ts +1 -1
- package/src/settings/schema.ts +1 -8
- package/src/vite-plugins/asset-extensions.ts +2 -0
- package/src/vite-plugins/asset-imports.ts +9 -1
- package/src/vite-plugins/asset-specifier.ts +17 -0
- package/src/vite-plugins/css.ts +4 -2
- package/src/vite-plugins/font-name.ts +582 -0
- package/src/vite-plugins/font-worker-env.ts +25 -0
- package/src/vite-plugins/font.ts +165 -0
- package/src/vite-plugins/icons.ts +6 -12
- package/src/vite-plugins/index.ts +2 -0
- package/src/vite-plugins/react-compiler.ts +2 -2
- package/src/vite-plugins/resources.ts +3 -3
- package/src/vite-plugins/settings-worker-env.ts +2 -2
- package/src/vite-plugins/store-links.ts +2 -1
- package/src/vite-plugins/undeclared-library.ts +5 -5
- package/src/vitest-plugin.ts +2 -0
|
@@ -66,10 +66,12 @@ import { extractMetadataMessages, localizeMetadata } from "./freedesktop/localiz
|
|
|
66
66
|
import { renderMetainfo } from "./freedesktop/metainfo.js";
|
|
67
67
|
import { renderMimePackage } from "./freedesktop/mime-package.js";
|
|
68
68
|
import { validateDesktopEntry, validateMetainfo } from "./freedesktop/validate.js";
|
|
69
|
+
import { resolveStagedAddon } from "./native-addon.js";
|
|
69
70
|
import { resolveNodeRuntime } from "./node-runtime/index.js";
|
|
70
71
|
import { collectNotices } from "./notices/collect.js";
|
|
71
72
|
import { stageOverlays, stagePayload } from "./payload/stage.js";
|
|
72
73
|
import { DEFAULT_TARGETS, parseTargetList, targetsFor } from "./registry.js";
|
|
74
|
+
import { archesFor, hostArchName, isHostArch, parseArchList } from "./settings/arch.js";
|
|
73
75
|
import { readBuildManifest } from "./settings/build-manifest.js";
|
|
74
76
|
import { resolveDeploySettings } from "./settings/index.js";
|
|
75
77
|
import { readPackageManifest } from "./settings/package-manifest.js";
|
|
@@ -176,14 +178,20 @@ const sourceModeTools = (targets, settings) => {
|
|
|
176
178
|
return detectPackageManager(settings) === "pnpm" ? [FLATPAK_NODE_GENERATOR_PNPM] : [FLATPAK_NODE_GENERATOR];
|
|
177
179
|
};
|
|
178
180
|
const isNodeRequired = (targets, settings) => !(settings.deploy.flatpak?.mode === "source" && targets.every((target) => target.name === FLATPAK_TARGET));
|
|
179
|
-
const
|
|
181
|
+
const archiveToolsFor = (settings) => (settings.deploy.node?.source ?? "download") === "download" ? [TAR] : [];
|
|
182
|
+
const stripToolsFor = (settings, arches) => {
|
|
183
|
+
if (settings.deploy.node?.shouldStrip === false) {
|
|
184
|
+
return [];
|
|
185
|
+
}
|
|
186
|
+
return arches.some((arch) => isHostArch(arch)) ? [STRIP] : [];
|
|
187
|
+
};
|
|
188
|
+
const runtimeToolsFor = (targets, settings, arches) => {
|
|
180
189
|
if (!isNodeRequired(targets, settings)) {
|
|
181
190
|
return [];
|
|
182
191
|
}
|
|
183
|
-
|
|
184
|
-
const archiveTools = (node.source ?? "download") === "download" ? [TAR] : [];
|
|
185
|
-
return node.shouldStrip === false ? archiveTools : [...archiveTools, STRIP];
|
|
192
|
+
return [...archiveToolsFor(settings), ...stripToolsFor(settings, arches)];
|
|
186
193
|
};
|
|
194
|
+
const crossBuildToolsFor = (arches) => arches.every((arch) => isHostArch(arch)) ? [] : [TAR];
|
|
187
195
|
const mutableCatalogTools = (project) => {
|
|
188
196
|
if (project.catalogs.length === 0) {
|
|
189
197
|
return [MSGGREP, XGETTEXT];
|
|
@@ -205,13 +213,15 @@ const catalogTools = (project, shouldSkipBuild) => {
|
|
|
205
213
|
}
|
|
206
214
|
return project.catalogs.length === 0 ? [] : [MSGFMT];
|
|
207
215
|
};
|
|
208
|
-
const preflight = ({
|
|
216
|
+
const preflight = ({ plan, settings, shouldPrintManifests, shouldSkipBuild }) => {
|
|
217
|
+
const { targets, arches, project } = plan;
|
|
209
218
|
const packagerTools = shouldPrintManifests
|
|
210
219
|
? []
|
|
211
|
-
: [...runtimeToolsFor(targets, settings), ...targets.flatMap((target) => target.tools)];
|
|
220
|
+
: [...runtimeToolsFor(targets, settings, arches), ...targets.flatMap((target) => target.tools)];
|
|
212
221
|
const required = [
|
|
213
222
|
DESKTOP_FILE_VALIDATE,
|
|
214
223
|
APPSTREAMCLI,
|
|
224
|
+
...crossBuildToolsFor(arches),
|
|
215
225
|
...catalogTools(project, shouldSkipBuild),
|
|
216
226
|
...sourceModeTools(targets, settings),
|
|
217
227
|
];
|
|
@@ -221,13 +231,35 @@ const preflight = ({ targets, settings, project, shouldPrintManifests, shouldSki
|
|
|
221
231
|
warnFlatpakPermissions(targets, settings);
|
|
222
232
|
warnLibraryMinimums(targets, settings);
|
|
223
233
|
};
|
|
224
|
-
const
|
|
234
|
+
const hostOnlyNames = (targets) => targets.filter((target) => target.isHostOnly).map((target) => target.name);
|
|
235
|
+
const assertCrossBuild = (plan) => {
|
|
236
|
+
const foreign = plan.arches.filter((arch) => !isHostArch(arch));
|
|
237
|
+
if (foreign.length === 0) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
const hostOnly = hostOnlyNames(plan.targets);
|
|
241
|
+
if (hostOnly.length > 0) {
|
|
242
|
+
throw new Error(`Cannot build ${hostOnly.join(" and ")} for ${foreign.join(" and ")}: those targets package with ` +
|
|
243
|
+
`tooling that only runs on ${hostArchName()}. Deploy them in a separate run without --arch.`);
|
|
244
|
+
}
|
|
245
|
+
if ((plan.loaded.deploy.node?.source ?? "download") !== "download") {
|
|
246
|
+
throw new Error('Cannot deploy for another architecture with a `deploy.node.source` other than "download": ' +
|
|
247
|
+
`a host or path runtime is always ${hostArchName()}.`);
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
const resolveTargetNames = (options, deploy) => {
|
|
225
251
|
if (options.targets !== undefined) {
|
|
226
252
|
return parseTargetList(options.targets);
|
|
227
253
|
}
|
|
228
|
-
return
|
|
254
|
+
return deploy.targets ?? DEFAULT_TARGETS;
|
|
255
|
+
};
|
|
256
|
+
const resolveArchNames = (options, deploy) => {
|
|
257
|
+
if (options.arches !== undefined) {
|
|
258
|
+
return parseArchList(options.arches);
|
|
259
|
+
}
|
|
260
|
+
return deploy.architectures ?? [hostArchName()];
|
|
229
261
|
};
|
|
230
|
-
const
|
|
262
|
+
const loadDeployConfig = async (options) => {
|
|
231
263
|
const { config, configFile, root } = await loadConfig(options.cwd, {
|
|
232
264
|
mode: BUILD_MODE,
|
|
233
265
|
configFile: options.configFile,
|
|
@@ -235,15 +267,22 @@ const loadSettings = async (options) => {
|
|
|
235
267
|
if (config.deploy === undefined) {
|
|
236
268
|
throw missingDeployError(config.applicationId, readPackageManifest(root));
|
|
237
269
|
}
|
|
270
|
+
return { config, configFile, root, deploy: config.deploy };
|
|
271
|
+
};
|
|
272
|
+
const settingsFor = (plan, options, arch) => resolveDeploySettings({
|
|
273
|
+
root: plan.loaded.root,
|
|
274
|
+
config: plan.loaded.config,
|
|
275
|
+
configFile: plan.loaded.configFile,
|
|
276
|
+
outDirOverride: options.outDir,
|
|
277
|
+
arch,
|
|
278
|
+
});
|
|
279
|
+
const planDeploy = async (options) => {
|
|
280
|
+
const loaded = await loadDeployConfig(options);
|
|
238
281
|
return {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
config,
|
|
244
|
-
configFile,
|
|
245
|
-
outDirOverride: options.outDir,
|
|
246
|
-
}),
|
|
282
|
+
loaded,
|
|
283
|
+
targets: targetsFor(resolveTargetNames(options, loaded.deploy)),
|
|
284
|
+
arches: archesFor(resolveArchNames(options, loaded.deploy)),
|
|
285
|
+
project: resolveCatalogProject(loaded.root, loaded.config.applicationId),
|
|
247
286
|
};
|
|
248
287
|
};
|
|
249
288
|
const synchronizeMetadataCatalogs = async (settings, templates, project) => {
|
|
@@ -266,44 +305,47 @@ const synchronizeMetadataCatalogs = async (settings, templates, project) => {
|
|
|
266
305
|
rmSync(stagingDir, { recursive: true, force: true });
|
|
267
306
|
}
|
|
268
307
|
};
|
|
269
|
-
const
|
|
270
|
-
const
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
entry: options.entry,
|
|
279
|
-
configFile: options.configFile,
|
|
280
|
-
vite: { root: options.cwd, build: { outDir: preparedOutput.path, emptyOutDir: false } },
|
|
281
|
-
});
|
|
282
|
-
preparedOutput.commit();
|
|
283
|
-
await synchronizeMetadataCatalogs(settings, templates, project);
|
|
284
|
-
}
|
|
285
|
-
catch (e_1) {
|
|
286
|
-
env_1.error = e_1;
|
|
287
|
-
env_1.hasError = true;
|
|
288
|
-
}
|
|
289
|
-
finally {
|
|
290
|
-
__disposeResources(env_1);
|
|
308
|
+
const buildApplication = async ({ options, plan, settings, buildOutDir, }) => {
|
|
309
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
310
|
+
try {
|
|
311
|
+
const templates = renderMetadata(settings);
|
|
312
|
+
if (buildOutDir === null) {
|
|
313
|
+
if (plan.project !== null) {
|
|
314
|
+
compileCatalogs(plan.project, join(settings.paths.dist, LOCALE_DIRNAME));
|
|
315
|
+
}
|
|
316
|
+
return localizeMetadata(templates, plan.project);
|
|
291
317
|
}
|
|
318
|
+
info(`Building ${options.entry}`);
|
|
319
|
+
const preparedOutput = __addDisposableResource(env_1, prepareBuildOutDir(settings.paths.root, buildOutDir), false);
|
|
320
|
+
await buildApp({
|
|
321
|
+
entry: options.entry,
|
|
322
|
+
configFile: options.configFile,
|
|
323
|
+
vite: { root: options.cwd, build: { outDir: preparedOutput.path, emptyOutDir: false } },
|
|
324
|
+
});
|
|
325
|
+
preparedOutput.commit();
|
|
326
|
+
await synchronizeMetadataCatalogs(settings, templates, plan.project);
|
|
327
|
+
return localizeMetadata(templates, plan.project);
|
|
292
328
|
}
|
|
293
|
-
|
|
294
|
-
|
|
329
|
+
catch (e_1) {
|
|
330
|
+
env_1.error = e_1;
|
|
331
|
+
env_1.hasError = true;
|
|
332
|
+
}
|
|
333
|
+
finally {
|
|
334
|
+
__disposeResources(env_1);
|
|
295
335
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
336
|
+
};
|
|
337
|
+
const buildArchPayload = async ({ options, plan, settings, metadata, }) => {
|
|
338
|
+
validateMetadata(settings, metadata, isFlathubSubmission(settings, plan.targets));
|
|
339
|
+
const buildManifest = readBuildManifest(settings, plan.loaded);
|
|
299
340
|
const builtSettings = {
|
|
300
341
|
...settings,
|
|
301
342
|
paths: { ...settings.paths, schemaFiles: buildManifest.schemaFiles },
|
|
302
343
|
};
|
|
303
|
-
const node = options.shouldPrintManifests || !isNodeRequired(targets, builtSettings)
|
|
344
|
+
const node = options.shouldPrintManifests || !isNodeRequired(plan.targets, builtSettings)
|
|
304
345
|
? null
|
|
305
346
|
: await resolveNodeRuntime(builtSettings);
|
|
306
|
-
const
|
|
347
|
+
const addon = await resolveStagedAddon(builtSettings);
|
|
348
|
+
const stage = stagePayload({ settings: builtSettings, node, addon, metadata });
|
|
307
349
|
info(`Staged ${String(stage.length)} files into ${displayPath(builtSettings, builtSettings.paths.stage)}`);
|
|
308
350
|
const notices = collectNotices({ settings: builtSettings, node, packages: buildManifest.packages });
|
|
309
351
|
return {
|
|
@@ -337,48 +379,62 @@ const packTargets = async (rendered, payload) => {
|
|
|
337
379
|
}
|
|
338
380
|
return artifacts;
|
|
339
381
|
};
|
|
340
|
-
const announce = (settings,
|
|
341
|
-
const names = targets.map((target) => target.name).join(", ");
|
|
382
|
+
const announce = (settings, plan) => {
|
|
383
|
+
const names = plan.targets.map((target) => target.name).join(", ");
|
|
342
384
|
const version = `${settings.versions.packageVersion}-${settings.versions.debRevision}`;
|
|
343
|
-
|
|
385
|
+
const arches = plan.arches.join(", ");
|
|
386
|
+
info(`Deploying ${settings.name} ${version} as ${settings.binaryName} (${arches}) to ${names}`);
|
|
387
|
+
};
|
|
388
|
+
const deployArch = async (request) => {
|
|
389
|
+
const { options, plan, arch, metadata } = request;
|
|
390
|
+
const settings = settingsFor(plan, options, arch);
|
|
391
|
+
const payload = await buildArchPayload({ options, plan, settings, metadata });
|
|
392
|
+
const rendered = renderTargetManifests(plan.targets, payload);
|
|
393
|
+
if (options.shouldPrintManifests) {
|
|
394
|
+
const count = rendered.values().toArray().flat().length;
|
|
395
|
+
info(`Wrote ${String(count)} manifests for ${arch}, 0 packages built`);
|
|
396
|
+
return [];
|
|
397
|
+
}
|
|
398
|
+
return await packTargets(rendered, payload);
|
|
399
|
+
};
|
|
400
|
+
const regenerate = async (options, plan) => {
|
|
401
|
+
if (options.shouldSkipBuild) {
|
|
402
|
+
return plan;
|
|
403
|
+
}
|
|
404
|
+
await ensureGenerated(options.cwd, {
|
|
405
|
+
shouldAnnounce: true,
|
|
406
|
+
mode: BUILD_MODE,
|
|
407
|
+
configFile: options.configFile,
|
|
408
|
+
});
|
|
409
|
+
return await planDeploy(options);
|
|
410
|
+
};
|
|
411
|
+
const finish = (options, settings, artifacts) => {
|
|
412
|
+
if (options.shouldPrintManifests) {
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
const output = displayPath(settings, settings.paths.output);
|
|
416
|
+
info(`Deploy complete: ${String(artifacts.length)} artifacts in ${output}`);
|
|
344
417
|
};
|
|
345
418
|
const runDeploy = async (options) => {
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
let targets = targetsFor(resolveTargetNames(options, settings));
|
|
350
|
-
let buildOutDir = options.shouldSkipBuild ? null : resolveBuildOutDir(settings.paths.root, settings.paths.dist);
|
|
351
|
-
announce(settings, targets);
|
|
419
|
+
const planned = await planDeploy(options);
|
|
420
|
+
assertCrossBuild(planned);
|
|
421
|
+
announce(settingsFor(planned, options, planned.arches[0]), planned);
|
|
352
422
|
preflight({
|
|
353
|
-
|
|
354
|
-
settings,
|
|
355
|
-
project,
|
|
423
|
+
plan: planned,
|
|
424
|
+
settings: settingsFor(planned, options, planned.arches[0]),
|
|
356
425
|
shouldPrintManifests: options.shouldPrintManifests,
|
|
357
426
|
shouldSkipBuild: options.shouldSkipBuild,
|
|
358
427
|
});
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
mode: BUILD_MODE,
|
|
363
|
-
configFile: options.configFile,
|
|
364
|
-
});
|
|
365
|
-
loaded = await loadSettings(options);
|
|
366
|
-
settings = loaded.settings;
|
|
367
|
-
project = resolveCatalogProject(settings.paths.root, settings.applicationId);
|
|
368
|
-
targets = targetsFor(resolveTargetNames(options, settings));
|
|
369
|
-
buildOutDir = resolveBuildOutDir(settings.paths.root, settings.paths.dist);
|
|
370
|
-
}
|
|
428
|
+
const plan = await regenerate(options, planned);
|
|
429
|
+
const settings = settingsFor(plan, options, plan.arches[0]);
|
|
430
|
+
const buildOutDir = options.shouldSkipBuild ? null : resolveBuildOutDir(settings.paths.root, settings.paths.dist);
|
|
371
431
|
prepareDeployOutDir(settings.paths.root, settings.paths.outDir);
|
|
372
|
-
const
|
|
373
|
-
const
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
info(`Wrote ${String(count)} manifests, 0 packages built`);
|
|
377
|
-
return;
|
|
432
|
+
const metadata = await buildApplication({ options, plan, settings, buildOutDir });
|
|
433
|
+
const artifacts = [];
|
|
434
|
+
for (const arch of plan.arches) {
|
|
435
|
+
artifacts.push(...await deployArch({ options, plan, arch, metadata }));
|
|
378
436
|
}
|
|
379
|
-
|
|
380
|
-
const output = displayPath(settings, settings.paths.output);
|
|
381
|
-
info(`Deploy complete: ${String(artifacts.length)} artifacts in ${output}`);
|
|
437
|
+
finish(options, settings, artifacts);
|
|
382
438
|
};
|
|
383
439
|
export { runDeploy };
|
|
384
440
|
//# sourceMappingURL=run-deploy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-deploy.js","sourceRoot":"","sources":["../../src/deploy/run-deploy.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Config, loadConfig } from \"@gtkx/config\";\nimport { info, warn } from \"@gtkx/utils\";\nimport { existsSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport type {\n DeployArtifact,\n DeployManifest,\n DeployPayload,\n DeploySettings,\n DeployTarget,\n DeployTool,\n} from \"./types.js\";\nimport { build as buildApp } from \"../builder.js\";\nimport { ensureGenerated } from \"../codegen/run-codegen.js\";\nimport { replaceCatalogTemplate } from \"../i18n/catalog-template.js\";\nimport {\n type CatalogProject,\n compileCatalogs,\n LOCALE_DIRNAME,\n requiresCatalogInitialization,\n resolveCatalogProject,\n synchronizeCatalogs,\n} from \"../i18n/catalogs.js\";\nimport { extractSourceCatalogTo } from \"../i18n/source-messages.js\";\nimport { prepareBuildOutDir, resolveBuildOutDir } from \"../internal/build-output.js\";\nimport { discoverSourceFiles } from \"../internal/source-imports.js\";\nimport { renderDesktopEntry } from \"./freedesktop/desktop-entry.js\";\nimport { extractMetadataMessages, localizeMetadata } from \"./freedesktop/localize.js\";\nimport { renderMetainfo } from \"./freedesktop/metainfo.js\";\nimport { renderMimePackage } from \"./freedesktop/mime-package.js\";\nimport { validateDesktopEntry, validateMetainfo } from \"./freedesktop/validate.js\";\nimport { resolveNodeRuntime } from \"./node-runtime/index.js\";\nimport { collectNotices } from \"./notices/collect.js\";\nimport { type StagedMetadata, stageOverlays, stagePayload } from \"./payload/stage.js\";\nimport { DEFAULT_TARGETS, parseTargetList, targetsFor } from \"./registry.js\";\nimport { readBuildManifest } from \"./settings/build-manifest.js\";\nimport { resolveDeploySettings } from \"./settings/index.js\";\nimport { readPackageManifest } from \"./settings/package-manifest.js\";\nimport { prepareDeployOutDir } from \"./settings/paths.js\";\nimport { missingDeployError } from \"./settings/starter.js\";\nimport { finishArgsFor, hasDisplaySocket, runtimeLabelFor } from \"./targets/flatpak-manifest.js\";\nimport { detectPackageManager } from \"./targets/flatpak-sources.js\";\nimport {\n APPSTREAMCLI,\n assertTools,\n DESKTOP_FILE_VALIDATE,\n FLATPAK_NODE_GENERATOR,\n FLATPAK_NODE_GENERATOR_PNPM,\n MSGFMT,\n MSGGREP,\n MSGINIT,\n MSGMERGE,\n probeTools,\n STRIP,\n TAR,\n warnMissingOptional,\n XGETTEXT,\n} from \"./tools.js\";\n\ntype DeployOptions = {\n entry: string;\n cwd: string;\n configFile?: string | undefined;\n targets?: string | undefined;\n outDir?: string | undefined;\n shouldPrintManifests: boolean;\n shouldSkipBuild: boolean;\n};\n\ntype PreflightRequest = {\n targets: DeployTarget[];\n settings: DeploySettings;\n project: CatalogProject | null;\n shouldPrintManifests: boolean;\n shouldSkipBuild: boolean;\n};\n\ntype LoadedDeploySettings = {\n config: Config;\n configFile: string;\n settings: DeploySettings;\n};\n\ntype BuildPayloadRequest = {\n options: DeployOptions;\n loaded: LoadedDeploySettings;\n targets: DeployTarget[];\n project: CatalogProject | null;\n buildOutDir: string | null;\n};\n\nconst BUILD_MODE = \"production\";\nconst BYTES_PER_MIB = 1024 * 1024;\nconst WEBKIT_LIBRARY = \"WebKit-6.0\";\nconst NETWORK_ARG = \"--share=network\";\nconst APPIMAGE_TARGET = \"appimage\";\nconst FLATPAK_TARGET = \"flatpak\";\n\nconst displayPath = (settings: DeploySettings, path: string): string => relative(settings.paths.root, path);\nconst megabytes = (size: number): string => (size / BYTES_PER_MIB).toFixed(1);\n\nconst writeManifest = (manifest: DeployManifest): void => {\n mkdirSync(dirname(manifest.path), { recursive: true });\n writeFileSync(manifest.path, manifest.contents);\n};\n\nconst renderMetadata = (settings: DeploySettings): StagedMetadata => ({\n desktopEntry: renderDesktopEntry(settings),\n metainfo: renderMetainfo(settings),\n mimePackage: renderMimePackage(settings),\n});\n\nconst isFlathubSubmission = (settings: DeploySettings, targets: DeployTarget[]): boolean =>\n settings.deploy.flatpak?.mode === \"source\" && targets.some((target) => target.name === FLATPAK_TARGET);\n\nconst validateMetadata = (settings: DeploySettings, metadata: StagedMetadata, areWarningsFatal: boolean): void => {\n const dir = settings.paths.metadata;\n mkdirSync(dir, { recursive: true });\n const desktopPath = join(dir, `${settings.applicationId}.desktop`);\n const metainfoPath = join(dir, `${settings.applicationId}.metainfo.xml`);\n writeFileSync(desktopPath, metadata.desktopEntry);\n writeFileSync(metainfoPath, metadata.metainfo);\n validateDesktopEntry(desktopPath);\n validateMetainfo(metainfoPath, areWarningsFatal);\n info(\"Validated the desktop entry and the metainfo\");\n};\n\nconst warnMissingDisplay = (settings: DeploySettings, finishArgs: string[]): void => {\n if (hasDisplaySocket(finishArgs)) {\n return;\n }\n\n warn(\n `The flatpak permissions grant no display socket, so ${settings.name} will start without a window. ` +\n \"Grant one through `deploy.flatpak.finishArgs`, such as `--socket=wayland`.\",\n );\n};\n\nconst warnMissingNetwork = (settings: DeploySettings, finishArgs: string[]): void => {\n if (settings.deploy.flatpak?.finishArgs === undefined || finishArgs.includes(NETWORK_ARG)) {\n return;\n }\n\n if (!settings.libraries.includes(WEBKIT_LIBRARY)) {\n return;\n }\n\n warn(`This app declares ${WEBKIT_LIBRARY} but its flatpak permissions omit ${NETWORK_ARG}, so pages will not load`);\n};\n\nconst warnFlatpakPermissions = (targets: DeployTarget[], settings: DeploySettings): void => {\n if (targets.every((target) => target.name !== FLATPAK_TARGET)) {\n return;\n }\n\n const finishArgs = finishArgsFor(settings);\n warnMissingDisplay(settings, finishArgs);\n warnMissingNetwork(settings, finishArgs);\n};\n\nconst minimumSummary = (settings: DeploySettings): string =>\n settings.libraries\n .filter((library) => settings.minimumLibraryVersions[library] !== undefined)\n .map((library) => `${library} >= ${String(settings.minimumLibraryVersions[library])}`)\n .join(\", \");\n\nconst warnAppImageMinimums = (settings: DeploySettings, summary: string): void => {\n warn(\n `An AppImage cannot declare a dependency, so nothing stops ${settings.name} from starting on a host ` +\n `whose libraries are older than the ones its bindings were generated against (${summary}). ` +\n \"Publish that requirement alongside the AppImage, or build on the oldest host you support.\",\n );\n};\n\nconst warnFlatpakMinimums = (settings: DeploySettings, summary: string): void => {\n warn(\n `The flatpak bundles binaries built against ${summary}, but runs them on ` +\n `${runtimeLabelFor(settings)}, whose libraries are whatever that runtime ships. ` +\n 'Set `deploy.flatpak.mode: \"source\"` to build inside the runtime instead.',\n );\n};\n\nconst warnUnusedMinimums = (settings: DeploySettings): void => {\n const minimums = settings.deploy.minimumLibraryVersions;\n\n if (minimums === undefined) {\n return;\n }\n\n const unused = Object.keys(minimums).filter((library) => !settings.libraries.includes(library));\n\n if (unused.length === 0) {\n return;\n }\n\n warn(\n `\\`deploy.minimumLibraryVersions\\` names ${unused.join(\", \")}, which this project generates no bindings for, ` +\n \"so those minimums change nothing.\",\n );\n};\n\nconst isPrebuiltFlatpak = (targets: DeployTarget[], settings: DeploySettings): boolean =>\n targets.some((target) => target.name === FLATPAK_TARGET) && settings.deploy.flatpak?.mode !== \"source\";\n\nconst warnLibraryMinimums = (targets: DeployTarget[], settings: DeploySettings): void => {\n const summary = minimumSummary(settings);\n\n if (summary.length > 0 && targets.some((target) => target.name === APPIMAGE_TARGET)) {\n warnAppImageMinimums(settings, summary);\n }\n\n if (summary.length > 0 && isPrebuiltFlatpak(targets, settings)) {\n warnFlatpakMinimums(settings, summary);\n }\n\n warnUnusedMinimums(settings);\n};\n\nconst sourceModeTools = (targets: DeployTarget[], settings: DeploySettings): DeployTool[] => {\n const isFlatpakSource = settings.deploy.flatpak?.mode === \"source\";\n\n if (!isFlatpakSource || targets.every((target) => target.name !== FLATPAK_TARGET)) {\n return [];\n }\n\n return detectPackageManager(settings) === \"pnpm\" ? [FLATPAK_NODE_GENERATOR_PNPM] : [FLATPAK_NODE_GENERATOR];\n};\n\nconst isNodeRequired = (targets: DeployTarget[], settings: DeploySettings): boolean =>\n !(settings.deploy.flatpak?.mode === \"source\" && targets.every((target) => target.name === FLATPAK_TARGET));\n\nconst runtimeToolsFor = (targets: DeployTarget[], settings: DeploySettings): DeployTool[] => {\n if (!isNodeRequired(targets, settings)) {\n return [];\n }\n\n const node = settings.deploy.node ?? {};\n const archiveTools = (node.source ?? \"download\") === \"download\" ? [TAR] : [];\n\n return node.shouldStrip === false ? archiveTools : [...archiveTools, STRIP];\n};\n\nconst mutableCatalogTools = (project: CatalogProject): DeployTool[] => {\n if (project.catalogs.length === 0) {\n return [MSGGREP, XGETTEXT];\n }\n\n return [\n MSGFMT,\n MSGGREP,\n ...(requiresCatalogInitialization(project) ? [MSGINIT] : []),\n MSGMERGE,\n XGETTEXT,\n ];\n};\n\nconst catalogTools = (project: CatalogProject | null, shouldSkipBuild: boolean): DeployTool[] => {\n if (project === null) {\n return [];\n }\n\n if (!shouldSkipBuild) {\n return mutableCatalogTools(project);\n }\n\n return project.catalogs.length === 0 ? [] : [MSGFMT];\n};\n\nconst preflight = ({\n targets,\n settings,\n project,\n shouldPrintManifests,\n shouldSkipBuild,\n}: PreflightRequest): void => {\n const packagerTools = shouldPrintManifests\n ? []\n : [...runtimeToolsFor(targets, settings), ...targets.flatMap((target) => target.tools)];\n\n const required = [\n DESKTOP_FILE_VALIDATE,\n APPSTREAMCLI,\n ...catalogTools(project, shouldSkipBuild),\n ...sourceModeTools(targets, settings),\n ];\n\n const report = probeTools([...required, ...packagerTools]);\n assertTools(report);\n warnMissingOptional(report);\n warnFlatpakPermissions(targets, settings);\n warnLibraryMinimums(targets, settings);\n};\n\nconst resolveTargetNames = (options: DeployOptions, settings: DeploySettings): string[] => {\n if (options.targets !== undefined) {\n return parseTargetList(options.targets);\n }\n\n return settings.deploy.targets ?? DEFAULT_TARGETS;\n};\n\nconst loadSettings = async (options: DeployOptions): Promise<LoadedDeploySettings> => {\n const { config, configFile, root } = await loadConfig(options.cwd, {\n mode: BUILD_MODE,\n configFile: options.configFile,\n });\n\n if (config.deploy === undefined) {\n throw missingDeployError(config.applicationId, readPackageManifest(root));\n }\n\n return {\n config,\n configFile,\n settings: resolveDeploySettings({\n root,\n config,\n configFile,\n outDirOverride: options.outDir,\n }),\n };\n};\n\nconst synchronizeMetadataCatalogs = async (\n settings: DeploySettings,\n templates: StagedMetadata,\n project: CatalogProject | null,\n): Promise<void> => {\n if (project === null) {\n return;\n }\n\n const srcDir = join(project.root, \"src\");\n const sourceFiles = discoverSourceFiles(existsSync(srcDir) ? srcDir : project.root);\n const stagingDir = mkdtempSync(join(project.poDir, \".gtkx-deploy-i18n-\"));\n const stagedTemplate = join(stagingDir, `${project.domain}.pot`);\n const template = join(project.poDir, `${project.domain}.pot`);\n\n try {\n await extractSourceCatalogTo(project, sourceFiles, stagedTemplate);\n extractMetadataMessages(templates, project, stagedTemplate);\n replaceCatalogTemplate(stagedTemplate, template);\n synchronizeCatalogs(project);\n compileCatalogs(project, join(settings.paths.dist, LOCALE_DIRNAME));\n } finally {\n rmSync(stagingDir, { recursive: true, force: true });\n }\n};\n\nconst buildPayload = async ({\n options,\n loaded,\n targets,\n project,\n buildOutDir,\n}: BuildPayloadRequest): Promise<DeployPayload> => {\n const settings = loaded.settings;\n const templates = renderMetadata(settings);\n\n if (buildOutDir !== null) {\n info(`Building ${options.entry}`);\n using preparedOutput = prepareBuildOutDir(settings.paths.root, buildOutDir);\n\n await buildApp({\n entry: options.entry,\n configFile: options.configFile,\n vite: { root: options.cwd, build: { outDir: preparedOutput.path, emptyOutDir: false } },\n });\n\n preparedOutput.commit();\n await synchronizeMetadataCatalogs(settings, templates, project);\n } else if (project !== null) {\n compileCatalogs(project, join(settings.paths.dist, LOCALE_DIRNAME));\n }\n\n const metadata = localizeMetadata(templates, project);\n validateMetadata(settings, metadata, isFlathubSubmission(settings, targets));\n const buildManifest = readBuildManifest(settings, loaded);\n\n const builtSettings: DeploySettings = {\n ...settings,\n paths: { ...settings.paths, schemaFiles: buildManifest.schemaFiles },\n };\n\n const node = options.shouldPrintManifests || !isNodeRequired(targets, builtSettings)\n ? null\n : await resolveNodeRuntime(builtSettings);\n\n const stage = stagePayload({ settings: builtSettings, node, metadata });\n info(`Staged ${String(stage.length)} files into ${displayPath(builtSettings, builtSettings.paths.stage)}`);\n const notices = collectNotices({ settings: builtSettings, node, packages: buildManifest.packages });\n\n return {\n settings: builtSettings,\n node,\n stage,\n notices,\n overlays: stageOverlays(builtSettings, notices, metadata),\n };\n};\n\nconst renderTargetManifests = (\n targets: DeployTarget[],\n payload: DeployPayload,\n): Map<DeployTarget, DeployManifest[]> => {\n const rendered: Map<DeployTarget, DeployManifest[]> = new Map();\n\n for (const target of targets) {\n const manifests = target.render(payload);\n\n for (const manifest of manifests) {\n writeManifest(manifest);\n info(`Wrote ${displayPath(payload.settings, manifest.path)}`);\n }\n\n rendered.set(target, manifests);\n }\n\n return rendered;\n};\n\nconst packTargets = async (\n rendered: Map<DeployTarget, DeployManifest[]>,\n payload: DeployPayload,\n): Promise<DeployArtifact[]> => {\n const artifacts: DeployArtifact[] = [];\n\n for (const [target, manifests] of rendered) {\n const built = await target.pack(payload, manifests);\n\n for (const artifact of built) {\n info(`Built ${displayPath(payload.settings, artifact.path)} (${megabytes(artifact.size)} MiB)`);\n }\n\n artifacts.push(...built);\n }\n\n return artifacts;\n};\n\nconst announce = (settings: DeploySettings, targets: DeployTarget[]): void => {\n const names = targets.map((target) => target.name).join(\", \");\n const version = `${settings.versions.packageVersion}-${settings.versions.debRevision}`;\n info(`Deploying ${settings.name} ${version} as ${settings.binaryName} (${settings.arch.rpm}) to ${names}`);\n};\n\nconst runDeploy = async (options: DeployOptions): Promise<void> => {\n let loaded = await loadSettings(options);\n let settings = loaded.settings;\n let project = resolveCatalogProject(settings.paths.root, settings.applicationId);\n let targets = targetsFor(resolveTargetNames(options, settings));\n let buildOutDir = options.shouldSkipBuild ? null : resolveBuildOutDir(settings.paths.root, settings.paths.dist);\n announce(settings, targets);\n\n preflight({\n targets,\n settings,\n project,\n shouldPrintManifests: options.shouldPrintManifests,\n shouldSkipBuild: options.shouldSkipBuild,\n });\n\n if (!options.shouldSkipBuild) {\n await ensureGenerated(options.cwd, {\n shouldAnnounce: true,\n mode: BUILD_MODE,\n configFile: options.configFile,\n });\n\n loaded = await loadSettings(options);\n settings = loaded.settings;\n project = resolveCatalogProject(settings.paths.root, settings.applicationId);\n targets = targetsFor(resolveTargetNames(options, settings));\n buildOutDir = resolveBuildOutDir(settings.paths.root, settings.paths.dist);\n }\n\n prepareDeployOutDir(settings.paths.root, settings.paths.outDir);\n const payload = await buildPayload({ options, loaded, targets, project, buildOutDir });\n const rendered = renderTargetManifests(targets, payload);\n\n if (options.shouldPrintManifests) {\n const count = rendered.values().toArray().flat().length;\n info(`Wrote ${String(count)} manifests, 0 packages built`);\n\n return;\n }\n\n const artifacts = await packTargets(rendered, payload);\n const output = displayPath(settings, settings.paths.output);\n info(`Deploy complete: ${String(artifacts.length)} artifacts in ${output}`);\n};\n\nexport { runDeploy };\n"]}
|
|
1
|
+
{"version":3,"file":"run-deploy.js","sourceRoot":"","sources":["../../src/deploy/run-deploy.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Config, loadConfig } from \"@gtkx/config\";\nimport { info, warn } from \"@gtkx/utils\";\nimport { existsSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport type {\n DeployArchName,\n DeployArtifact,\n DeployConfig,\n DeployManifest,\n DeployPayload,\n DeploySettings,\n DeployTarget,\n DeployTool,\n} from \"./types.js\";\nimport { build as buildApp } from \"../builder.js\";\nimport { ensureGenerated } from \"../codegen/run-codegen.js\";\nimport { replaceCatalogTemplate } from \"../i18n/catalog-template.js\";\nimport {\n type CatalogProject,\n compileCatalogs,\n LOCALE_DIRNAME,\n requiresCatalogInitialization,\n resolveCatalogProject,\n synchronizeCatalogs,\n} from \"../i18n/catalogs.js\";\nimport { extractSourceCatalogTo } from \"../i18n/source-messages.js\";\nimport { prepareBuildOutDir, resolveBuildOutDir } from \"../internal/build-output.js\";\nimport { discoverSourceFiles } from \"../internal/source-imports.js\";\nimport { renderDesktopEntry } from \"./freedesktop/desktop-entry.js\";\nimport { extractMetadataMessages, localizeMetadata } from \"./freedesktop/localize.js\";\nimport { renderMetainfo } from \"./freedesktop/metainfo.js\";\nimport { renderMimePackage } from \"./freedesktop/mime-package.js\";\nimport { validateDesktopEntry, validateMetainfo } from \"./freedesktop/validate.js\";\nimport { resolveStagedAddon } from \"./native-addon.js\";\nimport { resolveNodeRuntime } from \"./node-runtime/index.js\";\nimport { collectNotices } from \"./notices/collect.js\";\nimport { type StagedMetadata, stageOverlays, stagePayload } from \"./payload/stage.js\";\nimport { DEFAULT_TARGETS, parseTargetList, targetsFor } from \"./registry.js\";\nimport { archesFor, hostArchName, isHostArch, parseArchList } from \"./settings/arch.js\";\nimport { readBuildManifest } from \"./settings/build-manifest.js\";\nimport { resolveDeploySettings } from \"./settings/index.js\";\nimport { readPackageManifest } from \"./settings/package-manifest.js\";\nimport { prepareDeployOutDir } from \"./settings/paths.js\";\nimport { missingDeployError } from \"./settings/starter.js\";\nimport { finishArgsFor, hasDisplaySocket, runtimeLabelFor } from \"./targets/flatpak-manifest.js\";\nimport { detectPackageManager } from \"./targets/flatpak-sources.js\";\nimport {\n APPSTREAMCLI,\n assertTools,\n DESKTOP_FILE_VALIDATE,\n FLATPAK_NODE_GENERATOR,\n FLATPAK_NODE_GENERATOR_PNPM,\n MSGFMT,\n MSGGREP,\n MSGINIT,\n MSGMERGE,\n probeTools,\n STRIP,\n TAR,\n warnMissingOptional,\n XGETTEXT,\n} from \"./tools.js\";\n\ntype DeployOptions = {\n entry: string;\n cwd: string;\n configFile?: string | undefined;\n targets?: string | undefined;\n arches?: string | undefined;\n outDir?: string | undefined;\n shouldPrintManifests: boolean;\n shouldSkipBuild: boolean;\n};\n\ntype LoadedDeployConfig = {\n config: Config;\n configFile: string;\n root: string;\n deploy: DeployConfig;\n};\n\ntype DeployPlan = {\n loaded: LoadedDeployConfig;\n targets: DeployTarget[];\n arches: [DeployArchName, ...DeployArchName[]];\n project: CatalogProject | null;\n};\n\ntype PreflightRequest = {\n plan: DeployPlan;\n settings: DeploySettings;\n shouldPrintManifests: boolean;\n shouldSkipBuild: boolean;\n};\n\ntype BuildApplicationRequest = {\n options: DeployOptions;\n plan: DeployPlan;\n settings: DeploySettings;\n buildOutDir: string | null;\n};\n\ntype BuildPayloadRequest = {\n options: DeployOptions;\n plan: DeployPlan;\n settings: DeploySettings;\n metadata: StagedMetadata;\n};\n\ntype ArchRunRequest = {\n options: DeployOptions;\n plan: DeployPlan;\n arch: DeployArchName;\n metadata: StagedMetadata;\n};\n\nconst BUILD_MODE = \"production\";\nconst BYTES_PER_MIB = 1024 * 1024;\nconst WEBKIT_LIBRARY = \"WebKit-6.0\";\nconst NETWORK_ARG = \"--share=network\";\nconst APPIMAGE_TARGET = \"appimage\";\nconst FLATPAK_TARGET = \"flatpak\";\n\nconst displayPath = (settings: DeploySettings, path: string): string => relative(settings.paths.root, path);\nconst megabytes = (size: number): string => (size / BYTES_PER_MIB).toFixed(1);\n\nconst writeManifest = (manifest: DeployManifest): void => {\n mkdirSync(dirname(manifest.path), { recursive: true });\n writeFileSync(manifest.path, manifest.contents);\n};\n\nconst renderMetadata = (settings: DeploySettings): StagedMetadata => ({\n desktopEntry: renderDesktopEntry(settings),\n metainfo: renderMetainfo(settings),\n mimePackage: renderMimePackage(settings),\n});\n\nconst isFlathubSubmission = (settings: DeploySettings, targets: DeployTarget[]): boolean =>\n settings.deploy.flatpak?.mode === \"source\" && targets.some((target) => target.name === FLATPAK_TARGET);\n\nconst validateMetadata = (settings: DeploySettings, metadata: StagedMetadata, areWarningsFatal: boolean): void => {\n const dir = settings.paths.metadata;\n mkdirSync(dir, { recursive: true });\n const desktopPath = join(dir, `${settings.applicationId}.desktop`);\n const metainfoPath = join(dir, `${settings.applicationId}.metainfo.xml`);\n writeFileSync(desktopPath, metadata.desktopEntry);\n writeFileSync(metainfoPath, metadata.metainfo);\n validateDesktopEntry(desktopPath);\n validateMetainfo(metainfoPath, areWarningsFatal);\n info(\"Validated the desktop entry and the metainfo\");\n};\n\nconst warnMissingDisplay = (settings: DeploySettings, finishArgs: string[]): void => {\n if (hasDisplaySocket(finishArgs)) {\n return;\n }\n\n warn(\n `The flatpak permissions grant no display socket, so ${settings.name} will start without a window. ` +\n \"Grant one through `deploy.flatpak.finishArgs`, such as `--socket=wayland`.\",\n );\n};\n\nconst warnMissingNetwork = (settings: DeploySettings, finishArgs: string[]): void => {\n if (settings.deploy.flatpak?.finishArgs === undefined || finishArgs.includes(NETWORK_ARG)) {\n return;\n }\n\n if (!settings.libraries.includes(WEBKIT_LIBRARY)) {\n return;\n }\n\n warn(`This app declares ${WEBKIT_LIBRARY} but its flatpak permissions omit ${NETWORK_ARG}, so pages will not load`);\n};\n\nconst warnFlatpakPermissions = (targets: DeployTarget[], settings: DeploySettings): void => {\n if (targets.every((target) => target.name !== FLATPAK_TARGET)) {\n return;\n }\n\n const finishArgs = finishArgsFor(settings);\n warnMissingDisplay(settings, finishArgs);\n warnMissingNetwork(settings, finishArgs);\n};\n\nconst minimumSummary = (settings: DeploySettings): string =>\n settings.libraries\n .filter((library) => settings.minimumLibraryVersions[library] !== undefined)\n .map((library) => `${library} >= ${String(settings.minimumLibraryVersions[library])}`)\n .join(\", \");\n\nconst warnAppImageMinimums = (settings: DeploySettings, summary: string): void => {\n warn(\n `An AppImage cannot declare a dependency, so nothing stops ${settings.name} from starting on a host ` +\n `whose libraries are older than the ones its bindings were generated against (${summary}). ` +\n \"Publish that requirement alongside the AppImage, or build on the oldest host you support.\",\n );\n};\n\nconst warnFlatpakMinimums = (settings: DeploySettings, summary: string): void => {\n warn(\n `The flatpak bundles binaries built against ${summary}, but runs them on ` +\n `${runtimeLabelFor(settings)}, whose libraries are whatever that runtime ships. ` +\n 'Set `deploy.flatpak.mode: \"source\"` to build inside the runtime instead.',\n );\n};\n\nconst warnUnusedMinimums = (settings: DeploySettings): void => {\n const minimums = settings.deploy.minimumLibraryVersions;\n\n if (minimums === undefined) {\n return;\n }\n\n const unused = Object.keys(minimums).filter((library) => !settings.libraries.includes(library));\n\n if (unused.length === 0) {\n return;\n }\n\n warn(\n `\\`deploy.minimumLibraryVersions\\` names ${unused.join(\", \")}, which this project generates no bindings for, ` +\n \"so those minimums change nothing.\",\n );\n};\n\nconst isPrebuiltFlatpak = (targets: DeployTarget[], settings: DeploySettings): boolean =>\n targets.some((target) => target.name === FLATPAK_TARGET) && settings.deploy.flatpak?.mode !== \"source\";\n\nconst warnLibraryMinimums = (targets: DeployTarget[], settings: DeploySettings): void => {\n const summary = minimumSummary(settings);\n\n if (summary.length > 0 && targets.some((target) => target.name === APPIMAGE_TARGET)) {\n warnAppImageMinimums(settings, summary);\n }\n\n if (summary.length > 0 && isPrebuiltFlatpak(targets, settings)) {\n warnFlatpakMinimums(settings, summary);\n }\n\n warnUnusedMinimums(settings);\n};\n\nconst sourceModeTools = (targets: DeployTarget[], settings: DeploySettings): DeployTool[] => {\n const isFlatpakSource = settings.deploy.flatpak?.mode === \"source\";\n\n if (!isFlatpakSource || targets.every((target) => target.name !== FLATPAK_TARGET)) {\n return [];\n }\n\n return detectPackageManager(settings) === \"pnpm\" ? [FLATPAK_NODE_GENERATOR_PNPM] : [FLATPAK_NODE_GENERATOR];\n};\n\nconst isNodeRequired = (targets: DeployTarget[], settings: DeploySettings): boolean =>\n !(settings.deploy.flatpak?.mode === \"source\" && targets.every((target) => target.name === FLATPAK_TARGET));\n\nconst archiveToolsFor = (settings: DeploySettings): DeployTool[] =>\n (settings.deploy.node?.source ?? \"download\") === \"download\" ? [TAR] : [];\n\nconst stripToolsFor = (settings: DeploySettings, arches: DeployArchName[]): DeployTool[] => {\n if (settings.deploy.node?.shouldStrip === false) {\n return [];\n }\n\n return arches.some((arch) => isHostArch(arch)) ? [STRIP] : [];\n};\n\nconst runtimeToolsFor = (targets: DeployTarget[], settings: DeploySettings, arches: DeployArchName[]): DeployTool[] => {\n if (!isNodeRequired(targets, settings)) {\n return [];\n }\n\n return [...archiveToolsFor(settings), ...stripToolsFor(settings, arches)];\n};\n\nconst crossBuildToolsFor = (arches: DeployArchName[]): DeployTool[] =>\n arches.every((arch) => isHostArch(arch)) ? [] : [TAR];\n\nconst mutableCatalogTools = (project: CatalogProject): DeployTool[] => {\n if (project.catalogs.length === 0) {\n return [MSGGREP, XGETTEXT];\n }\n\n return [\n MSGFMT,\n MSGGREP,\n ...(requiresCatalogInitialization(project) ? [MSGINIT] : []),\n MSGMERGE,\n XGETTEXT,\n ];\n};\n\nconst catalogTools = (project: CatalogProject | null, shouldSkipBuild: boolean): DeployTool[] => {\n if (project === null) {\n return [];\n }\n\n if (!shouldSkipBuild) {\n return mutableCatalogTools(project);\n }\n\n return project.catalogs.length === 0 ? [] : [MSGFMT];\n};\n\nconst preflight = ({ plan, settings, shouldPrintManifests, shouldSkipBuild }: PreflightRequest): void => {\n const { targets, arches, project } = plan;\n\n const packagerTools = shouldPrintManifests\n ? []\n : [...runtimeToolsFor(targets, settings, arches), ...targets.flatMap((target) => target.tools)];\n\n const required = [\n DESKTOP_FILE_VALIDATE,\n APPSTREAMCLI,\n ...crossBuildToolsFor(arches),\n ...catalogTools(project, shouldSkipBuild),\n ...sourceModeTools(targets, settings),\n ];\n\n const report = probeTools([...required, ...packagerTools]);\n assertTools(report);\n warnMissingOptional(report);\n warnFlatpakPermissions(targets, settings);\n warnLibraryMinimums(targets, settings);\n};\n\nconst hostOnlyNames = (targets: DeployTarget[]): string[] =>\n targets.filter((target) => target.isHostOnly).map((target) => target.name);\n\nconst assertCrossBuild = (plan: DeployPlan): void => {\n const foreign = plan.arches.filter((arch) => !isHostArch(arch));\n\n if (foreign.length === 0) {\n return;\n }\n\n const hostOnly = hostOnlyNames(plan.targets);\n\n if (hostOnly.length > 0) {\n throw new Error(\n `Cannot build ${hostOnly.join(\" and \")} for ${foreign.join(\" and \")}: those targets package with ` +\n `tooling that only runs on ${hostArchName()}. Deploy them in a separate run without --arch.`,\n );\n }\n\n if ((plan.loaded.deploy.node?.source ?? \"download\") !== \"download\") {\n throw new Error(\n 'Cannot deploy for another architecture with a `deploy.node.source` other than \"download\": ' +\n `a host or path runtime is always ${hostArchName()}.`,\n );\n }\n};\n\nconst resolveTargetNames = (options: DeployOptions, deploy: DeployConfig): string[] => {\n if (options.targets !== undefined) {\n return parseTargetList(options.targets);\n }\n\n return deploy.targets ?? DEFAULT_TARGETS;\n};\n\nconst resolveArchNames = (options: DeployOptions, deploy: DeployConfig): string[] => {\n if (options.arches !== undefined) {\n return parseArchList(options.arches);\n }\n\n return deploy.architectures ?? [hostArchName()];\n};\n\nconst loadDeployConfig = async (options: DeployOptions): Promise<LoadedDeployConfig> => {\n const { config, configFile, root } = await loadConfig(options.cwd, {\n mode: BUILD_MODE,\n configFile: options.configFile,\n });\n\n if (config.deploy === undefined) {\n throw missingDeployError(config.applicationId, readPackageManifest(root));\n }\n\n return { config, configFile, root, deploy: config.deploy };\n};\n\nconst settingsFor = (plan: DeployPlan, options: DeployOptions, arch: DeployArchName): DeploySettings =>\n resolveDeploySettings({\n root: plan.loaded.root,\n config: plan.loaded.config,\n configFile: plan.loaded.configFile,\n outDirOverride: options.outDir,\n arch,\n });\n\nconst planDeploy = async (options: DeployOptions): Promise<DeployPlan> => {\n const loaded = await loadDeployConfig(options);\n\n return {\n loaded,\n targets: targetsFor(resolveTargetNames(options, loaded.deploy)),\n arches: archesFor(resolveArchNames(options, loaded.deploy)),\n project: resolveCatalogProject(loaded.root, loaded.config.applicationId),\n };\n};\n\nconst synchronizeMetadataCatalogs = async (\n settings: DeploySettings,\n templates: StagedMetadata,\n project: CatalogProject | null,\n): Promise<void> => {\n if (project === null) {\n return;\n }\n\n const srcDir = join(project.root, \"src\");\n const sourceFiles = discoverSourceFiles(existsSync(srcDir) ? srcDir : project.root);\n const stagingDir = mkdtempSync(join(project.poDir, \".gtkx-deploy-i18n-\"));\n const stagedTemplate = join(stagingDir, `${project.domain}.pot`);\n const template = join(project.poDir, `${project.domain}.pot`);\n\n try {\n await extractSourceCatalogTo(project, sourceFiles, stagedTemplate);\n extractMetadataMessages(templates, project, stagedTemplate);\n replaceCatalogTemplate(stagedTemplate, template);\n synchronizeCatalogs(project);\n compileCatalogs(project, join(settings.paths.dist, LOCALE_DIRNAME));\n } finally {\n rmSync(stagingDir, { recursive: true, force: true });\n }\n};\n\nconst buildApplication = async ({\n options,\n plan,\n settings,\n buildOutDir,\n}: BuildApplicationRequest): Promise<StagedMetadata> => {\n const templates = renderMetadata(settings);\n\n if (buildOutDir === null) {\n if (plan.project !== null) {\n compileCatalogs(plan.project, join(settings.paths.dist, LOCALE_DIRNAME));\n }\n\n return localizeMetadata(templates, plan.project);\n }\n\n info(`Building ${options.entry}`);\n using preparedOutput = prepareBuildOutDir(settings.paths.root, buildOutDir);\n\n await buildApp({\n entry: options.entry,\n configFile: options.configFile,\n vite: { root: options.cwd, build: { outDir: preparedOutput.path, emptyOutDir: false } },\n });\n\n preparedOutput.commit();\n await synchronizeMetadataCatalogs(settings, templates, plan.project);\n\n return localizeMetadata(templates, plan.project);\n};\n\nconst buildArchPayload = async ({\n options,\n plan,\n settings,\n metadata,\n}: BuildPayloadRequest): Promise<DeployPayload> => {\n validateMetadata(settings, metadata, isFlathubSubmission(settings, plan.targets));\n const buildManifest = readBuildManifest(settings, plan.loaded);\n\n const builtSettings: DeploySettings = {\n ...settings,\n paths: { ...settings.paths, schemaFiles: buildManifest.schemaFiles },\n };\n\n const node = options.shouldPrintManifests || !isNodeRequired(plan.targets, builtSettings)\n ? null\n : await resolveNodeRuntime(builtSettings);\n\n const addon = await resolveStagedAddon(builtSettings);\n const stage = stagePayload({ settings: builtSettings, node, addon, metadata });\n info(`Staged ${String(stage.length)} files into ${displayPath(builtSettings, builtSettings.paths.stage)}`);\n const notices = collectNotices({ settings: builtSettings, node, packages: buildManifest.packages });\n\n return {\n settings: builtSettings,\n node,\n stage,\n notices,\n overlays: stageOverlays(builtSettings, notices, metadata),\n };\n};\n\nconst renderTargetManifests = (\n targets: DeployTarget[],\n payload: DeployPayload,\n): Map<DeployTarget, DeployManifest[]> => {\n const rendered: Map<DeployTarget, DeployManifest[]> = new Map();\n\n for (const target of targets) {\n const manifests = target.render(payload);\n\n for (const manifest of manifests) {\n writeManifest(manifest);\n info(`Wrote ${displayPath(payload.settings, manifest.path)}`);\n }\n\n rendered.set(target, manifests);\n }\n\n return rendered;\n};\n\nconst packTargets = async (\n rendered: Map<DeployTarget, DeployManifest[]>,\n payload: DeployPayload,\n): Promise<DeployArtifact[]> => {\n const artifacts: DeployArtifact[] = [];\n\n for (const [target, manifests] of rendered) {\n const built = await target.pack(payload, manifests);\n\n for (const artifact of built) {\n info(`Built ${displayPath(payload.settings, artifact.path)} (${megabytes(artifact.size)} MiB)`);\n }\n\n artifacts.push(...built);\n }\n\n return artifacts;\n};\n\nconst announce = (settings: DeploySettings, plan: DeployPlan): void => {\n const names = plan.targets.map((target) => target.name).join(\", \");\n const version = `${settings.versions.packageVersion}-${settings.versions.debRevision}`;\n const arches = plan.arches.join(\", \");\n info(`Deploying ${settings.name} ${version} as ${settings.binaryName} (${arches}) to ${names}`);\n};\n\nconst deployArch = async (request: ArchRunRequest): Promise<DeployArtifact[]> => {\n const { options, plan, arch, metadata } = request;\n const settings = settingsFor(plan, options, arch);\n const payload = await buildArchPayload({ options, plan, settings, metadata });\n const rendered = renderTargetManifests(plan.targets, payload);\n\n if (options.shouldPrintManifests) {\n const count = rendered.values().toArray().flat().length;\n info(`Wrote ${String(count)} manifests for ${arch}, 0 packages built`);\n\n return [];\n }\n\n return await packTargets(rendered, payload);\n};\n\nconst regenerate = async (options: DeployOptions, plan: DeployPlan): Promise<DeployPlan> => {\n if (options.shouldSkipBuild) {\n return plan;\n }\n\n await ensureGenerated(options.cwd, {\n shouldAnnounce: true,\n mode: BUILD_MODE,\n configFile: options.configFile,\n });\n\n return await planDeploy(options);\n};\n\nconst finish = (options: DeployOptions, settings: DeploySettings, artifacts: DeployArtifact[]): void => {\n if (options.shouldPrintManifests) {\n return;\n }\n\n const output = displayPath(settings, settings.paths.output);\n info(`Deploy complete: ${String(artifacts.length)} artifacts in ${output}`);\n};\n\nconst runDeploy = async (options: DeployOptions): Promise<void> => {\n const planned = await planDeploy(options);\n assertCrossBuild(planned);\n announce(settingsFor(planned, options, planned.arches[0]), planned);\n\n preflight({\n plan: planned,\n settings: settingsFor(planned, options, planned.arches[0]),\n shouldPrintManifests: options.shouldPrintManifests,\n shouldSkipBuild: options.shouldSkipBuild,\n });\n\n const plan = await regenerate(options, planned);\n const settings = settingsFor(plan, options, plan.arches[0]);\n const buildOutDir = options.shouldSkipBuild ? null : resolveBuildOutDir(settings.paths.root, settings.paths.dist);\n prepareDeployOutDir(settings.paths.root, settings.paths.outDir);\n const metadata = await buildApplication({ options, plan, settings, buildOutDir });\n const artifacts: DeployArtifact[] = [];\n\n for (const arch of plan.arches) {\n artifacts.push(...await deployArch({ options, plan, arch, metadata }));\n }\n\n finish(options, settings, artifacts);\n};\n\nexport { runDeploy };\n"]}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import type { DeployArch } from "../types.js";
|
|
2
|
-
declare const
|
|
3
|
-
|
|
1
|
+
import type { DeployArch, DeployArchName } from "../types.js";
|
|
2
|
+
declare const KNOWN_ARCH_NAMES: string;
|
|
3
|
+
declare const resolveArch: (name: DeployArchName) => DeployArch;
|
|
4
|
+
declare const hostArchName: () => DeployArchName;
|
|
5
|
+
declare const isHostArch: (name: DeployArchName) => boolean;
|
|
6
|
+
declare const elfMachineFor: (name: DeployArchName) => number;
|
|
7
|
+
declare const parseArchList: (value: string) => string[];
|
|
8
|
+
declare const archesFor: (names: string[]) => [DeployArchName, ...DeployArchName[]];
|
|
9
|
+
export { archesFor, elfMachineFor, hostArchName, isHostArch, KNOWN_ARCH_NAMES, parseArchList, resolveArch };
|
|
4
10
|
//# sourceMappingURL=arch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arch.d.ts","sourceRoot":"","sources":["../../../src/deploy/settings/arch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"arch.d.ts","sourceRoot":"","sources":["../../../src/deploy/settings/arch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAe9D,QAAA,MAAM,gBAAgB,QAAkD,CAAC;AAYzE,QAAA,MAAM,WAAW,GAAI,MAAM,cAAc,KAAG,UAA8B,CAAC;AAE3E,QAAA,MAAM,YAAY,QAAO,cAA+C,CAAC;AAEzE,QAAA,MAAM,UAAU,GAAI,MAAM,cAAc,KAAG,OAAkC,CAAC;AAE9E,QAAA,MAAM,aAAa,GAAI,MAAM,cAAc,KAAG,MAAiC,CAAC;AAEhF,QAAA,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,MAAM,EAAiE,CAAC;AAE/G,QAAA,MAAM,SAAS,GAAI,OAAO,MAAM,EAAE,KAAG,CAAC,cAAc,EAAE,GAAG,cAAc,EAAE,CASxE,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1,13 +1,34 @@
|
|
|
1
|
+
import { sortStrings } from "@gtkx/utils";
|
|
2
|
+
const EM_X86_64 = 62;
|
|
3
|
+
const EM_AARCH64 = 183;
|
|
1
4
|
const ARCH_TABLE = {
|
|
2
5
|
arm64: { deb: "arm64", rpm: "aarch64", flatpak: "aarch64", appimage: "aarch64", node: "arm64" },
|
|
3
6
|
x64: { deb: "amd64", rpm: "x86_64", flatpak: "x86_64", appimage: "x86_64", node: "x64" },
|
|
4
7
|
};
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
const ELF_MACHINE_TABLE = {
|
|
9
|
+
arm64: EM_AARCH64,
|
|
10
|
+
x64: EM_X86_64,
|
|
11
|
+
};
|
|
12
|
+
const KNOWN_ARCH_NAMES = sortStrings(Object.keys(ARCH_TABLE)).join(", ");
|
|
13
|
+
const isArchName = (name) => Object.hasOwn(ARCH_TABLE, name);
|
|
14
|
+
const assertKnownArch = (name) => {
|
|
15
|
+
if (!isArchName(name)) {
|
|
16
|
+
throw new Error(`Cannot deploy for ${name}: only ${KNOWN_ARCH_NAMES} are supported`);
|
|
17
|
+
}
|
|
18
|
+
return name;
|
|
19
|
+
};
|
|
20
|
+
const resolveArch = (name) => ARCH_TABLE[name];
|
|
21
|
+
const hostArchName = () => assertKnownArch(process.arch);
|
|
22
|
+
const isHostArch = (name) => name === hostArchName();
|
|
23
|
+
const elfMachineFor = (name) => ELF_MACHINE_TABLE[name];
|
|
24
|
+
const parseArchList = (value) => value.split(",").map((name) => name.trim()).filter(Boolean);
|
|
25
|
+
const archesFor = (names) => {
|
|
26
|
+
const requested = sortStrings(new Set(names.map((name) => assertKnownArch(name.trim()))));
|
|
27
|
+
const [first, ...rest] = requested.map((name) => assertKnownArch(name));
|
|
28
|
+
if (first === undefined) {
|
|
29
|
+
throw new Error(`Cannot deploy without an architecture; choose from ${KNOWN_ARCH_NAMES}`);
|
|
9
30
|
}
|
|
10
|
-
return
|
|
31
|
+
return [first, ...rest];
|
|
11
32
|
};
|
|
12
|
-
export { resolveArch };
|
|
33
|
+
export { archesFor, elfMachineFor, hostArchName, isHostArch, KNOWN_ARCH_NAMES, parseArchList, resolveArch };
|
|
13
34
|
//# sourceMappingURL=arch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arch.js","sourceRoot":"","sources":["../../../src/deploy/settings/arch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"arch.js","sourceRoot":"","sources":["../../../src/deploy/settings/arch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,MAAM,UAAU,GAAuC;IACnD,KAAK,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;IAC/F,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;CAC3F,CAAC;AAEF,MAAM,iBAAiB,GAAmC;IACtD,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,SAAS;CACjB,CAAC;AAEF,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEzE,MAAM,UAAU,GAAG,CAAC,IAAY,EAA0B,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAE7F,MAAM,eAAe,GAAG,CAAC,IAAY,EAAkB,EAAE;IACrD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,UAAU,gBAAgB,gBAAgB,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAAoB,EAAc,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAE3E,MAAM,YAAY,GAAG,GAAmB,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzE,MAAM,UAAU,GAAG,CAAC,IAAoB,EAAW,EAAE,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;AAE9E,MAAM,aAAa,GAAG,CAAC,IAAoB,EAAU,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAEhF,MAAM,aAAa,GAAG,CAAC,KAAa,EAAY,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAE/G,MAAM,SAAS,GAAG,CAAC,KAAe,EAAyC,EAAE;IACzE,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAExE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,sDAAsD,gBAAgB,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;AAC5B,CAAC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import { sortStrings } from \"@gtkx/utils\";\nimport type { DeployArch, DeployArchName } from \"../types.js\";\n\nconst EM_X86_64 = 62;\nconst EM_AARCH64 = 183;\n\nconst ARCH_TABLE: Record<DeployArchName, DeployArch> = {\n arm64: { deb: \"arm64\", rpm: \"aarch64\", flatpak: \"aarch64\", appimage: \"aarch64\", node: \"arm64\" },\n x64: { deb: \"amd64\", rpm: \"x86_64\", flatpak: \"x86_64\", appimage: \"x86_64\", node: \"x64\" },\n};\n\nconst ELF_MACHINE_TABLE: Record<DeployArchName, number> = {\n arm64: EM_AARCH64,\n x64: EM_X86_64,\n};\n\nconst KNOWN_ARCH_NAMES = sortStrings(Object.keys(ARCH_TABLE)).join(\", \");\n\nconst isArchName = (name: string): name is DeployArchName => Object.hasOwn(ARCH_TABLE, name);\n\nconst assertKnownArch = (name: string): DeployArchName => {\n if (!isArchName(name)) {\n throw new Error(`Cannot deploy for ${name}: only ${KNOWN_ARCH_NAMES} are supported`);\n }\n\n return name;\n};\n\nconst resolveArch = (name: DeployArchName): DeployArch => ARCH_TABLE[name];\n\nconst hostArchName = (): DeployArchName => assertKnownArch(process.arch);\n\nconst isHostArch = (name: DeployArchName): boolean => name === hostArchName();\n\nconst elfMachineFor = (name: DeployArchName): number => ELF_MACHINE_TABLE[name];\n\nconst parseArchList = (value: string): string[] => value.split(\",\").map((name) => name.trim()).filter(Boolean);\n\nconst archesFor = (names: string[]): [DeployArchName, ...DeployArchName[]] => {\n const requested = sortStrings(new Set(names.map((name) => assertKnownArch(name.trim()))));\n const [first, ...rest] = requested.map((name) => assertKnownArch(name));\n\n if (first === undefined) {\n throw new Error(`Cannot deploy without an architecture; choose from ${KNOWN_ARCH_NAMES}`);\n }\n\n return [first, ...rest];\n};\n\nexport { archesFor, elfMachineFor, hostArchName, isHostArch, KNOWN_ARCH_NAMES, parseArchList, resolveArch };\n"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Config } from "@gtkx/config";
|
|
2
|
-
import type { DeploySettings } from "../types.js";
|
|
2
|
+
import type { DeployArchName, DeploySettings } from "../types.js";
|
|
3
3
|
type SettingsRequest = {
|
|
4
4
|
root: string;
|
|
5
5
|
config: Config;
|
|
6
6
|
configFile: string;
|
|
7
|
+
arch: DeployArchName;
|
|
7
8
|
outDirOverride?: string | undefined;
|
|
8
9
|
now?: Date | undefined;
|
|
9
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deploy/settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deploy/settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EACR,cAAc,EAKd,cAAc,EAEjB,MAAM,aAAa,CAAC;AAsBrB,KAAK,eAAe,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,cAAc,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CAC1B,CAAC;AAwIF,QAAA,MAAM,qBAAqB,GAAI,SAAS,eAAe,KAAG,cAuBzD,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -95,13 +95,14 @@ const resolveDeploySettings = (request) => {
|
|
|
95
95
|
...desktopSlice(deploy),
|
|
96
96
|
extraFiles: resolveExtraFiles(request.root, deploy),
|
|
97
97
|
versions: core.versions,
|
|
98
|
-
arch: resolveArch(),
|
|
98
|
+
arch: resolveArch(request.arch),
|
|
99
99
|
paths: resolvePaths({
|
|
100
100
|
root: request.root,
|
|
101
101
|
deploy,
|
|
102
102
|
applicationIcon: request.config.applicationIcon,
|
|
103
103
|
applicationId: request.config.applicationId,
|
|
104
104
|
outDirOverride: request.outDirOverride,
|
|
105
|
+
arch: request.arch,
|
|
105
106
|
}),
|
|
106
107
|
...resolveLibraries(request.root, request.config),
|
|
107
108
|
deploy,
|