@gtkx/cli 2.0.0-beta.1 → 2.0.0-beta.3
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/dist/builder.d.ts +1 -0
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +17 -5
- package/dist/builder.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +9 -1
- package/dist/cli.js.map +1 -1
- package/dist/codegen/reference.d.ts.map +1 -1
- package/dist/codegen/reference.js +1 -0
- package/dist/codegen/reference.js.map +1 -1
- package/dist/codegen/run-codegen.d.ts +4 -2
- package/dist/codegen/run-codegen.d.ts.map +1 -1
- package/dist/codegen/run-codegen.js +15 -16
- package/dist/codegen/run-codegen.js.map +1 -1
- package/dist/codegen/store-resolver.d.ts +2 -1
- package/dist/codegen/store-resolver.d.ts.map +1 -1
- package/dist/codegen/store-resolver.js +4 -3
- package/dist/codegen/store-resolver.js.map +1 -1
- package/dist/commands/build.d.ts +5 -0
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +83 -10
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/codegen.d.ts +1 -0
- package/dist/commands/codegen.d.ts.map +1 -1
- package/dist/commands/codegen.js +6 -5
- package/dist/commands/codegen.js.map +1 -1
- package/dist/commands/deploy.d.ts +1 -0
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +4 -2
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts +9 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +29 -4
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/docs.d.ts.map +1 -1
- package/dist/commands/docs.js +1 -0
- package/dist/commands/docs.js.map +1 -1
- package/dist/deploy/freedesktop/metainfo.d.ts.map +1 -1
- package/dist/deploy/freedesktop/metainfo.js +41 -2
- package/dist/deploy/freedesktop/metainfo.js.map +1 -1
- package/dist/deploy/freedesktop/validate.d.ts.map +1 -1
- package/dist/deploy/freedesktop/validate.js +10 -4
- package/dist/deploy/freedesktop/validate.js.map +1 -1
- package/dist/deploy/nfpm/config.d.ts +3 -2
- package/dist/deploy/nfpm/config.d.ts.map +1 -1
- package/dist/deploy/nfpm/config.js +7 -4
- package/dist/deploy/nfpm/config.js.map +1 -1
- package/dist/deploy/nfpm/contents.d.ts.map +1 -1
- package/dist/deploy/nfpm/contents.js +8 -0
- package/dist/deploy/nfpm/contents.js.map +1 -1
- package/dist/deploy/node-runtime/elf.d.ts +2 -1
- package/dist/deploy/node-runtime/elf.d.ts.map +1 -1
- package/dist/deploy/node-runtime/elf.js +32 -5
- package/dist/deploy/node-runtime/elf.js.map +1 -1
- package/dist/deploy/node-runtime/index.d.ts +2 -1
- package/dist/deploy/node-runtime/index.d.ts.map +1 -1
- package/dist/deploy/node-runtime/index.js +75 -5
- package/dist/deploy/node-runtime/index.js.map +1 -1
- package/dist/deploy/notices/node-runtime.js +2 -2
- package/dist/deploy/notices/node-runtime.js.map +1 -1
- package/dist/deploy/payload/launcher.d.ts.map +1 -1
- package/dist/deploy/payload/launcher.js +14 -1
- package/dist/deploy/payload/launcher.js.map +1 -1
- package/dist/deploy/payload/stage.js +1 -1
- 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 +100 -14
- package/dist/deploy/run-deploy.js.map +1 -1
- package/dist/deploy/settings/build-manifest.d.ts +6 -1
- package/dist/deploy/settings/build-manifest.d.ts.map +1 -1
- package/dist/deploy/settings/build-manifest.js +15 -4
- package/dist/deploy/settings/build-manifest.js.map +1 -1
- package/dist/deploy/settings/extra-files.d.ts +1 -1
- package/dist/deploy/settings/extra-files.d.ts.map +1 -1
- package/dist/deploy/settings/extra-files.js +22 -1
- package/dist/deploy/settings/extra-files.js.map +1 -1
- package/dist/deploy/settings/index.d.ts +1 -0
- 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/paths.d.ts +2 -1
- package/dist/deploy/settings/paths.d.ts.map +1 -1
- package/dist/deploy/settings/paths.js +113 -5
- package/dist/deploy/settings/paths.js.map +1 -1
- package/dist/deploy/targets/flatpak-source.d.ts.map +1 -1
- package/dist/deploy/targets/flatpak-source.js +11 -2
- package/dist/deploy/targets/flatpak-source.js.map +1 -1
- package/dist/deploy/targets/nfpm-target.d.ts.map +1 -1
- package/dist/deploy/targets/nfpm-target.js +12 -7
- package/dist/deploy/targets/nfpm-target.js.map +1 -1
- package/dist/deploy/types.d.ts +1 -0
- package/dist/deploy/types.d.ts.map +1 -1
- package/dist/deploy/types.js.map +1 -1
- package/dist/dev/entry-env.d.ts +2 -1
- package/dist/dev/entry-env.d.ts.map +1 -1
- package/dist/dev/entry-env.js +2 -1
- package/dist/dev/entry-env.js.map +1 -1
- package/dist/dev/headless.d.ts +3 -0
- package/dist/dev/headless.d.ts.map +1 -0
- package/dist/dev/headless.js +35 -0
- package/dist/dev/headless.js.map +1 -0
- package/dist/dev/runner-deps.d.ts +1 -1
- package/dist/dev/runner-deps.d.ts.map +1 -1
- package/dist/dev/runner-deps.js +3 -3
- package/dist/dev/runner-deps.js.map +1 -1
- package/dist/dev/runner-main.d.ts.map +1 -1
- package/dist/dev/runner-main.js +8 -3
- package/dist/dev/runner-main.js.map +1 -1
- package/dist/dev/supervisor.d.ts +1 -0
- package/dist/dev/supervisor.d.ts.map +1 -1
- package/dist/dev/supervisor.js +4 -3
- package/dist/dev/supervisor.js.map +1 -1
- package/dist/i18n/catalogs.d.ts.map +1 -1
- package/dist/i18n/catalogs.js +1 -0
- package/dist/i18n/catalogs.js.map +1 -1
- package/dist/i18n/source-messages.d.ts.map +1 -1
- package/dist/i18n/source-messages.js +960 -8
- package/dist/i18n/source-messages.js.map +1 -1
- package/dist/internal/build-manifest.d.ts +5 -2
- package/dist/internal/build-manifest.d.ts.map +1 -1
- package/dist/internal/build-manifest.js +15 -2
- package/dist/internal/build-manifest.js.map +1 -1
- package/dist/internal/build-output.d.ts +8 -0
- package/dist/internal/build-output.d.ts.map +1 -0
- package/dist/internal/build-output.js +79 -0
- package/dist/internal/build-output.js.map +1 -0
- package/dist/internal/docs-elements.d.ts +1 -0
- package/dist/internal/docs-elements.d.ts.map +1 -1
- package/dist/internal/docs-elements.js +5 -4
- package/dist/internal/docs-elements.js.map +1 -1
- package/dist/internal/entry-arg.d.ts +4 -1
- package/dist/internal/entry-arg.d.ts.map +1 -1
- package/dist/internal/entry-arg.js +7 -1
- package/dist/internal/entry-arg.js.map +1 -1
- package/dist/internal/errors.d.ts +2 -1
- package/dist/internal/errors.d.ts.map +1 -1
- package/dist/internal/errors.js +1 -1
- package/dist/internal/errors.js.map +1 -1
- package/dist/internal/output-directory.d.ts +15 -0
- package/dist/internal/output-directory.d.ts.map +1 -0
- package/dist/internal/output-directory.js +490 -0
- package/dist/internal/output-directory.js.map +1 -0
- package/dist/internal/parent-process.d.ts +12 -0
- package/dist/internal/parent-process.d.ts.map +1 -0
- package/dist/internal/parent-process.js +74 -0
- package/dist/internal/parent-process.js.map +1 -0
- package/dist/internal/prepare-project.d.ts +2 -0
- package/dist/internal/prepare-project.d.ts.map +1 -1
- package/dist/internal/prepare-project.js +3 -3
- package/dist/internal/prepare-project.js.map +1 -1
- package/dist/internal/source-imports.js +1 -1
- package/dist/internal/source-imports.js.map +1 -1
- package/dist/mcp/client.js +2 -2
- package/dist/mcp/client.js.map +1 -1
- package/dist/vite-plugins/build-manifest.d.ts +5 -1
- package/dist/vite-plugins/build-manifest.d.ts.map +1 -1
- package/dist/vite-plugins/build-manifest.js +2 -1
- package/dist/vite-plugins/build-manifest.js.map +1 -1
- package/dist/vite-plugins/ensure-store.d.ts +1 -1
- package/dist/vite-plugins/ensure-store.d.ts.map +1 -1
- package/dist/vite-plugins/ensure-store.js +2 -2
- package/dist/vite-plugins/ensure-store.js.map +1 -1
- package/dist/vite-plugins/i18n.d.ts.map +1 -1
- package/dist/vite-plugins/i18n.js +58 -6
- package/dist/vite-plugins/i18n.js.map +1 -1
- package/dist/vite-plugins/index.d.ts +8 -1
- package/dist/vite-plugins/index.d.ts.map +1 -1
- package/dist/vite-plugins/index.js +6 -2
- package/dist/vite-plugins/index.js.map +1 -1
- package/dist/vite-plugins/native.d.ts.map +1 -1
- package/dist/vite-plugins/native.js +0 -4
- package/dist/vite-plugins/native.js.map +1 -1
- package/dist/vite-plugins/self-contained.d.ts.map +1 -1
- package/dist/vite-plugins/self-contained.js +159 -158
- package/dist/vite-plugins/self-contained.js.map +1 -1
- package/dist/vite-plugins/settings-worker-env.d.ts +1 -1
- package/dist/vite-plugins/settings-worker-env.d.ts.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/vitest-plugin.d.ts +2 -1
- package/dist/vitest-plugin.d.ts.map +1 -1
- package/dist/vitest-plugin.js +6 -6
- package/dist/vitest-plugin.js.map +1 -1
- package/package.json +10 -9
- package/src/builder.ts +18 -5
- package/src/cli.ts +9 -1
- package/src/codegen/reference.ts +1 -0
- package/src/codegen/run-codegen.ts +17 -19
- package/src/codegen/store-resolver.ts +5 -3
- package/src/commands/build.ts +13 -2
- package/src/commands/codegen.ts +6 -5
- package/src/commands/deploy.ts +4 -2
- package/src/commands/dev.ts +38 -4
- package/src/commands/docs.ts +1 -0
- package/src/deploy/freedesktop/metainfo.ts +73 -21
- package/src/deploy/freedesktop/validate.ts +12 -4
- package/src/deploy/nfpm/config.ts +13 -4
- package/src/deploy/nfpm/contents.ts +8 -0
- package/src/deploy/node-runtime/elf.ts +43 -5
- package/src/deploy/node-runtime/index.ts +107 -6
- package/src/deploy/notices/node-runtime.ts +2 -2
- package/src/deploy/payload/launcher.ts +20 -1
- package/src/deploy/payload/stage.ts +1 -1
- package/src/deploy/run-deploy.ts +56 -16
- package/src/deploy/settings/build-manifest.ts +28 -3
- package/src/deploy/settings/extra-files.ts +26 -2
- package/src/deploy/settings/index.ts +3 -1
- package/src/deploy/settings/paths.ts +70 -5
- package/src/deploy/targets/flatpak-source.ts +13 -2
- package/src/deploy/targets/nfpm-target.ts +13 -6
- package/src/deploy/types.ts +1 -0
- package/src/dev/entry-env.ts +2 -1
- package/src/dev/headless.ts +40 -0
- package/src/dev/runner-deps.ts +3 -3
- package/src/dev/runner-main.ts +10 -3
- package/src/dev/supervisor.ts +6 -3
- package/src/i18n/catalogs.ts +1 -0
- package/src/i18n/source-messages.ts +1429 -28
- package/src/internal/build-manifest.ts +25 -1
- package/src/internal/build-output.ts +113 -0
- package/src/internal/docs-elements.ts +10 -4
- package/src/internal/entry-arg.ts +8 -1
- package/src/internal/errors.ts +1 -1
- package/src/internal/output-directory.ts +699 -0
- package/src/internal/parent-process.ts +110 -0
- package/src/internal/prepare-project.ts +5 -5
- package/src/internal/source-imports.ts +1 -1
- package/src/mcp/client.ts +2 -2
- package/src/vite-plugins/build-manifest.ts +7 -1
- package/src/vite-plugins/ensure-store.ts +2 -2
- package/src/vite-plugins/i18n.ts +83 -5
- package/src/vite-plugins/index.ts +14 -7
- package/src/vite-plugins/native.ts +0 -5
- package/src/vite-plugins/self-contained.ts +184 -185
- package/src/vite-plugins/settings-worker-env.ts +2 -2
- package/src/vitest-plugin.ts +6 -6
package/dist/commands/codegen.js
CHANGED
|
@@ -2,7 +2,7 @@ import { info } from "@gtkx/utils";
|
|
|
2
2
|
import { defineCommand } from "citty";
|
|
3
3
|
import { formatCodegenResult } from "../codegen/report.js";
|
|
4
4
|
import { ensureGenerated, isCodegenDisabled, runCodegen } from "../codegen/run-codegen.js";
|
|
5
|
-
import { cwdArg, resolveCwd } from "../internal/entry-arg.js";
|
|
5
|
+
import { configArg, cwdArg, resolveCwd } from "../internal/entry-arg.js";
|
|
6
6
|
const FORCED_WHILE_DISABLED_MESSAGE = "codegen is disabled for this project, so --force has no store to regenerate here. " +
|
|
7
7
|
"Remove `codegen: false` from gtkx.config.ts, or run `gtkx codegen --force` where the installed " +
|
|
8
8
|
"binding store is generated.";
|
|
@@ -17,24 +17,25 @@ const codegen = defineCommand({
|
|
|
17
17
|
description: "Wipe the generated store and regenerate unconditionally (recover a corrupted store)",
|
|
18
18
|
default: false,
|
|
19
19
|
},
|
|
20
|
+
...configArg,
|
|
20
21
|
...cwdArg,
|
|
21
22
|
},
|
|
22
23
|
async run({ args }) {
|
|
23
24
|
const cwd = resolveCwd(args);
|
|
24
|
-
const isDisabled = await isCodegenDisabled(cwd);
|
|
25
|
+
const isDisabled = await isCodegenDisabled(cwd, undefined, args.config);
|
|
25
26
|
checkForce(isDisabled, args.force);
|
|
26
27
|
if (isDisabled) {
|
|
27
|
-
await runCodegen({ cwd });
|
|
28
|
+
await runCodegen({ cwd, configFile: args.config });
|
|
28
29
|
info("codegen: disabled for this project; reusing an installed binding store");
|
|
29
30
|
return;
|
|
30
31
|
}
|
|
31
32
|
if (!args.force) {
|
|
32
|
-
const isRan = await ensureGenerated(cwd);
|
|
33
|
+
const isRan = await ensureGenerated(cwd, { configFile: args.config });
|
|
33
34
|
info(isRan ? "codegen: regenerated stale bindings" : "codegen: bindings up to date");
|
|
34
35
|
return;
|
|
35
36
|
}
|
|
36
37
|
const startedAt = Date.now();
|
|
37
|
-
const result = await runCodegen({ cwd, isForced: true });
|
|
38
|
+
const result = await runCodegen({ cwd, configFile: args.config, isForced: true });
|
|
38
39
|
const lines = formatCodegenResult(result, Date.now() - startedAt);
|
|
39
40
|
for (const line of lines) {
|
|
40
41
|
info(line);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/commands/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC3F,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/commands/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEzE,MAAM,6BAA6B,GAC/B,oFAAoF;IACpF,iGAAiG;IACjG,6BAA6B,CAAC;AAElC,MAAM,OAAO,GAAG,aAAa,CAAC;IAC1B,IAAI,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,8EAA8E;KAC9F;IACD,IAAI,EAAE;QACF,KAAK,EAAE;YACH,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,qFAAqF;YAClG,OAAO,EAAE,KAAK;SACjB;QACD,GAAG,SAAS;QACZ,GAAG,MAAM;KACZ;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACd,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnC,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,wEAAwE,CAAC,CAAC;YAE/E,OAAO;QACX,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC;YAErF,OAAO;QACX,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAClF,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QAElE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;IACL,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,CAAC,UAAmB,EAAE,QAAiB,EAAQ,EAAE;IAChE,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC","sourcesContent":["import { info } from \"@gtkx/utils\";\nimport { defineCommand } from \"citty\";\nimport { formatCodegenResult } from \"../codegen/report.js\";\nimport { ensureGenerated, isCodegenDisabled, runCodegen } from \"../codegen/run-codegen.js\";\nimport { configArg, cwdArg, resolveCwd } from \"../internal/entry-arg.js\";\n\nconst FORCED_WHILE_DISABLED_MESSAGE =\n \"codegen is disabled for this project, so --force has no store to regenerate here. \" +\n \"Remove `codegen: false` from gtkx.config.ts, or run `gtkx codegen --force` where the installed \" +\n \"binding store is generated.\";\n\nconst codegen = defineCommand({\n meta: {\n name: \"codegen\",\n description: \"Generate project bindings, translation catalogs, and TypeScript declarations\",\n },\n args: {\n force: {\n type: \"boolean\",\n description: \"Wipe the generated store and regenerate unconditionally (recover a corrupted store)\",\n default: false,\n },\n ...configArg,\n ...cwdArg,\n },\n async run({ args }) {\n const cwd = resolveCwd(args);\n const isDisabled = await isCodegenDisabled(cwd, undefined, args.config);\n checkForce(isDisabled, args.force);\n\n if (isDisabled) {\n await runCodegen({ cwd, configFile: args.config });\n info(\"codegen: disabled for this project; reusing an installed binding store\");\n\n return;\n }\n\n if (!args.force) {\n const isRan = await ensureGenerated(cwd, { configFile: args.config });\n info(isRan ? \"codegen: regenerated stale bindings\" : \"codegen: bindings up to date\");\n\n return;\n }\n\n const startedAt = Date.now();\n const result = await runCodegen({ cwd, configFile: args.config, isForced: true });\n const lines = formatCodegenResult(result, Date.now() - startedAt);\n\n for (const line of lines) {\n info(line);\n }\n },\n});\n\nconst checkForce = (isDisabled: boolean, isForced: boolean): void => {\n if (isDisabled && isForced) {\n throw new Error(FORCED_WHILE_DISABLED_MESSAGE);\n }\n};\n\nexport { codegen };\n"]}
|
|
@@ -15,6 +15,7 @@ declare const deploy: import("citty").CommandDef<{
|
|
|
15
15
|
readonly type: "boolean";
|
|
16
16
|
readonly description: "Package what is already in dist/ instead of rebuilding";
|
|
17
17
|
};
|
|
18
|
+
readonly config: import("citty").StringArgDef;
|
|
18
19
|
readonly entry: import("citty").PositionalArgDef;
|
|
19
20
|
readonly cwd: import("citty").StringArgDef;
|
|
20
21
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;EAsCV,CAAC;AAEH,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/dist/commands/deploy.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineCommand } from "citty";
|
|
2
2
|
import { KNOWN_NAMES } from "../deploy/registry.js";
|
|
3
3
|
import { runDeploy } from "../deploy/run-deploy.js";
|
|
4
|
-
import { entryArg } from "../internal/entry-arg.js";
|
|
4
|
+
import { configArg, entryArg } from "../internal/entry-arg.js";
|
|
5
5
|
import { resolveProject } from "../internal/prepare-project.js";
|
|
6
6
|
const DEPLOY_MODE = "production";
|
|
7
7
|
const deploy = defineCommand({
|
|
@@ -11,6 +11,7 @@ const deploy = defineCommand({
|
|
|
11
11
|
},
|
|
12
12
|
args: {
|
|
13
13
|
...entryArg,
|
|
14
|
+
...configArg,
|
|
14
15
|
target: {
|
|
15
16
|
type: "string",
|
|
16
17
|
description: `Comma-separated package formats to build (${KNOWN_NAMES})`,
|
|
@@ -29,10 +30,11 @@ const deploy = defineCommand({
|
|
|
29
30
|
},
|
|
30
31
|
},
|
|
31
32
|
async run({ args }) {
|
|
32
|
-
const { cwd, entry } = await resolveProject(args, DEPLOY_MODE);
|
|
33
|
+
const { cwd, entry, configFile } = await resolveProject(args, DEPLOY_MODE);
|
|
33
34
|
await runDeploy({
|
|
34
35
|
entry,
|
|
35
36
|
cwd,
|
|
37
|
+
configFile,
|
|
36
38
|
targets: args.target,
|
|
37
39
|
outDir: args.out,
|
|
38
40
|
shouldPrintManifests: args["print-manifests"] === true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,MAAM,WAAW,GAAG,YAAY,CAAC;AAEjC,MAAM,MAAM,GAAG,aAAa,CAAC;IACzB,IAAI,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,0CAA0C;KAC1D;IACD,IAAI,EAAE;QACF,GAAG,QAAQ;QACX,GAAG,SAAS;QACZ,MAAM,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,6CAA6C,WAAW,GAAG;SAC3E;QACD,GAAG,EAAE;YACD,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,gEAAgE;SAChF;QACD,iBAAiB,EAAE;YACf,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,yEAAyE;SACzF;QACD,YAAY,EAAE;YACV,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,wDAAwD;SACxE;KACJ;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACd,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE3E,MAAM,SAAS,CAAC;YACZ,KAAK;YACL,GAAG;YACH,UAAU;YACV,OAAO,EAAE,IAAI,CAAC,MAAM;YACpB,MAAM,EAAE,IAAI,CAAC,GAAG;YAChB,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI;YACtD,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI;SAC/C,CAAC,CAAC;IACP,CAAC;CACJ,CAAC,CAAC;AAEH,OAAO,EAAE,MAAM,EAAE,CAAC","sourcesContent":["import { defineCommand } from \"citty\";\nimport { KNOWN_NAMES } from \"../deploy/registry.js\";\nimport { runDeploy } from \"../deploy/run-deploy.js\";\nimport { configArg, entryArg } from \"../internal/entry-arg.js\";\nimport { resolveProject } from \"../internal/prepare-project.js\";\n\nconst DEPLOY_MODE = \"production\";\n\nconst deploy = defineCommand({\n meta: {\n name: \"deploy\",\n description: \"Package the application for distribution\",\n },\n args: {\n ...entryArg,\n ...configArg,\n target: {\n type: \"string\",\n description: `Comma-separated package formats to build (${KNOWN_NAMES})`,\n },\n out: {\n type: \"string\",\n description: \"Output directory relative to the project root (default: build)\",\n },\n \"print-manifests\": {\n type: \"boolean\",\n description: \"Write the generated manifests and metadata, then stop without packaging\",\n },\n \"skip-build\": {\n type: \"boolean\",\n description: \"Package what is already in dist/ instead of rebuilding\",\n },\n },\n async run({ args }) {\n const { cwd, entry, configFile } = await resolveProject(args, DEPLOY_MODE);\n\n await runDeploy({\n entry,\n cwd,\n configFile,\n targets: args.target,\n outDir: args.out,\n shouldPrintManifests: args[\"print-manifests\"] === true,\n shouldSkipBuild: args[\"skip-build\"] === true,\n });\n },\n});\n\nexport { deploy };\n"]}
|
package/dist/commands/dev.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
declare const dev: import("citty").CommandDef<{
|
|
2
|
+
readonly headless: {
|
|
3
|
+
readonly type: "boolean";
|
|
4
|
+
readonly description: "Run on an isolated headless Wayland display";
|
|
5
|
+
};
|
|
6
|
+
readonly size: {
|
|
7
|
+
readonly type: "string";
|
|
8
|
+
readonly description: "Headless display size as WIDTHxHEIGHT";
|
|
9
|
+
};
|
|
10
|
+
readonly config: import("citty").StringArgDef;
|
|
2
11
|
readonly entry: import("citty").PositionalArgDef;
|
|
3
12
|
readonly cwd: import("citty").StringArgDef;
|
|
4
13
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,GAAG;;;;;;;;;;;;EA6CP,CAAC;AAEH,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
package/dist/commands/dev.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { armParentDeath } from "@gtkx/native/internal";
|
|
1
2
|
import { defineCommand } from "citty";
|
|
2
3
|
import { resolveConfigWatch } from "../codegen/run-codegen.js";
|
|
4
|
+
import { startHeadlessDevDisplay } from "../dev/headless.js";
|
|
3
5
|
import { runDevSupervisor } from "../dev/supervisor.js";
|
|
4
6
|
import { splitApplicationArgs } from "../internal/application-args.js";
|
|
5
|
-
import { entryArg } from "../internal/entry-arg.js";
|
|
7
|
+
import { configArg, entryArg } from "../internal/entry-arg.js";
|
|
8
|
+
import { getInitialProcessGroupOwner, initialParentId } from "../internal/parent-process.js";
|
|
6
9
|
import { prepareProject } from "../internal/prepare-project.js";
|
|
7
10
|
const DEV_MODE = "development";
|
|
8
11
|
const dev = defineCommand({
|
|
@@ -12,12 +15,34 @@ const dev = defineCommand({
|
|
|
12
15
|
},
|
|
13
16
|
args: {
|
|
14
17
|
...entryArg,
|
|
18
|
+
...configArg,
|
|
19
|
+
headless: {
|
|
20
|
+
type: "boolean",
|
|
21
|
+
description: "Run on an isolated headless Wayland display",
|
|
22
|
+
},
|
|
23
|
+
size: {
|
|
24
|
+
type: "string",
|
|
25
|
+
description: "Headless display size as WIDTHxHEIGHT",
|
|
26
|
+
},
|
|
15
27
|
},
|
|
16
28
|
async run({ args }) {
|
|
17
|
-
const
|
|
18
|
-
|
|
29
|
+
const initialProcessGroupOwner = getInitialProcessGroupOwner();
|
|
30
|
+
if (!armParentDeath(initialParentId, initialProcessGroupOwner?.pid, initialProcessGroupOwner?.startTime)) {
|
|
31
|
+
throw new Error("The process that launched gtkx dev exited during startup");
|
|
32
|
+
}
|
|
33
|
+
if (args.size !== undefined && !args.headless) {
|
|
34
|
+
throw new Error("--size requires --headless");
|
|
35
|
+
}
|
|
36
|
+
const { cwd, entry: entryPath, configFile } = await prepareProject(args, DEV_MODE);
|
|
37
|
+
const watch = await resolveConfigWatch(cwd, DEV_MODE, configFile);
|
|
19
38
|
const { applicationArgs } = splitApplicationArgs(process.argv.slice(2));
|
|
20
|
-
|
|
39
|
+
const stopHeadless = args.headless ? await startHeadlessDevDisplay(args.size) : undefined;
|
|
40
|
+
try {
|
|
41
|
+
await runDevSupervisor({ entryPath, cwd, configFile, args: applicationArgs, watch });
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
stopHeadless?.();
|
|
45
|
+
}
|
|
21
46
|
},
|
|
22
47
|
});
|
|
23
48
|
export { dev };
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAiB,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAiB,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,MAAM,QAAQ,GAAG,aAAa,CAAC;AAE/B,MAAM,GAAG,GAAG,aAAa,CAAC;IACtB,IAAI,EAAE;QACF,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,mCAAmC;KACnD;IACD,IAAI,EAAE;QACF,GAAG,QAAQ;QACX,GAAG,SAAS;QACZ,QAAQ,EAAE;YACN,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,6CAA6C;SAC7D;QACD,IAAI,EAAE;YACF,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,uCAAuC;SACvD;KACJ;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACd,MAAM,wBAAwB,GAAG,2BAA2B,EAAE,CAAC;QAE/D,IACI,CAAC,cAAc,CACX,eAAe,EACf,wBAAwB,EAAE,GAAG,EAC7B,wBAAwB,EAAE,SAAS,CACtC,EACH,CAAC;YACC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACnF,MAAM,KAAK,GAAyB,MAAM,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACxF,MAAM,EAAE,eAAe,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1F,IAAI,CAAC;YACD,MAAM,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;QACzF,CAAC;gBAAS,CAAC;YACP,YAAY,EAAE,EAAE,CAAC;QACrB,CAAC;IACL,CAAC;CACJ,CAAC,CAAC;AAEH,OAAO,EAAE,GAAG,EAAE,CAAC","sourcesContent":["import { armParentDeath } from \"@gtkx/native/internal\";\nimport { defineCommand } from \"citty\";\nimport { resolveConfigWatch } from \"../codegen/run-codegen.js\";\nimport { startHeadlessDevDisplay } from \"../dev/headless.js\";\nimport { type DevWatch, runDevSupervisor } from \"../dev/supervisor.js\";\nimport { splitApplicationArgs } from \"../internal/application-args.js\";\nimport { configArg, entryArg } from \"../internal/entry-arg.js\";\nimport { getInitialProcessGroupOwner, initialParentId } from \"../internal/parent-process.js\";\nimport { prepareProject } from \"../internal/prepare-project.js\";\n\nconst DEV_MODE = \"development\";\n\nconst dev = defineCommand({\n meta: {\n name: \"dev\",\n description: \"Start development server with HMR\",\n },\n args: {\n ...entryArg,\n ...configArg,\n headless: {\n type: \"boolean\",\n description: \"Run on an isolated headless Wayland display\",\n },\n size: {\n type: \"string\",\n description: \"Headless display size as WIDTHxHEIGHT\",\n },\n },\n async run({ args }) {\n const initialProcessGroupOwner = getInitialProcessGroupOwner();\n\n if (\n !armParentDeath(\n initialParentId,\n initialProcessGroupOwner?.pid,\n initialProcessGroupOwner?.startTime,\n )\n ) {\n throw new Error(\"The process that launched gtkx dev exited during startup\");\n }\n\n if (args.size !== undefined && !args.headless) {\n throw new Error(\"--size requires --headless\");\n }\n\n const { cwd, entry: entryPath, configFile } = await prepareProject(args, DEV_MODE);\n const watch: DevWatch | undefined = await resolveConfigWatch(cwd, DEV_MODE, configFile);\n const { applicationArgs } = splitApplicationArgs(process.argv.slice(2));\n const stopHeadless = args.headless ? await startHeadlessDevDisplay(args.size) : undefined;\n\n try {\n await runDevSupervisor({ entryPath, cwd, configFile, args: applicationArgs, watch });\n } finally {\n stopHeadless?.();\n }\n },\n});\n\nexport { dev };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"AAUA,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"AAUA,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;EA8ER,CAAC;AA2BH,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
package/dist/commands/docs.js
CHANGED
|
@@ -55,6 +55,7 @@ const docs = defineCommand({
|
|
|
55
55
|
outDir,
|
|
56
56
|
basePath: args["base-path"],
|
|
57
57
|
props: builtin.props,
|
|
58
|
+
acceptedChildTypes: builtin.acceptedChildTypes,
|
|
58
59
|
omittedProps: mergeOmittedProps(builtin.omittedProps, resolveOmittedProps(config.elements)),
|
|
59
60
|
isForced: args.force,
|
|
60
61
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"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","sourcesContent":["import { mergeOmittedProps, resolveGirPath, resolveLibraries } from \"@gtkx/codegen\";\nimport { writeDocs } from \"@gtkx/codegen/internal\";\nimport { loadConfig } from \"@gtkx/config\";\nimport { resolveOmittedProps } from \"@gtkx/config/internal\";\nimport { info, isPathInside } from \"@gtkx/utils\";\nimport { defineCommand } from \"citty\";\nimport { resolve } from \"node:path\";\nimport { resolveDocsElements } from \"../internal/docs-elements.js\";\nimport { cwdArg, resolveCwd } from \"../internal/entry-arg.js\";\n\nconst docs = defineCommand({\n meta: {\n name: \"docs\",\n description:\n \"Generate markdown reference pages for the JSX elements of the GIR libraries declared in gtkx.config.ts\",\n },\n args: {\n out: {\n type: \"string\",\n description:\n \"Output directory for the generated markdown pages, below the project root. It must be empty \" +\n \"or hold an earlier `gtkx docs` run, whose pages are replaced\",\n default: \"docs/reference\",\n },\n \"base-path\": {\n type: \"string\",\n description: \"URL base path used for links between generated pages\",\n default: \"/reference\",\n },\n force: {\n type: \"boolean\",\n description:\n \"Regenerate even when the pages are up to date with the GIR libraries, the base path, \" +\n \"and the element props the project configures\",\n default: false,\n },\n ...cwdArg,\n },\n async run({ args }) {\n const cwd = resolveCwd(args);\n const { config } = await loadConfig(cwd);\n\n if (config.codegen === false) {\n throw new Error(\n \"codegen is disabled for this project, so there are no GIR libraries to document. \" +\n \"Remove `codegen: false` from gtkx.config.ts to use `gtkx docs`.\",\n );\n }\n\n const girPath = resolveGirPath(config.girPath);\n\n if (girPath.length === 0) {\n throw new Error(\n \"No GIR search paths available. Install gobject-introspection \" +\n \"(Linux: `sudo dnf install gobject-introspection-devel` or \" +\n \"`sudo apt install libgirepository1.0-dev`), or set `girPath` in gtkx.config.ts.\",\n );\n }\n\n const libraries = resolveLibraries(config.libraries);\n const startedAt = Date.now();\n const outDir = resolveOutDir(cwd, args.out);\n const builtin = await resolveDocsElements(cwd);\n\n const { isRegenerated, namespaces } = writeDocs({\n libraries,\n girPath,\n outDir,\n basePath: args[\"base-path\"],\n props: builtin.props,\n omittedProps: mergeOmittedProps(builtin.omittedProps, resolveOmittedProps(config.elements)),\n isForced: args.force,\n });\n\n if (!isRegenerated) {\n info(`docs: pages in ${outDir} are up to date`);\n\n return;\n }\n\n const count = namespaces.reduce((total, namespace) => total + namespace.elements.length, 0);\n\n info(\n `docs: wrote ${String(count)} element pages across ${String(namespaces.length)} namespaces ` +\n `to ${outDir} in ${String(Date.now() - startedAt)}ms`,\n );\n },\n});\n\nconst outDirReason = (cwd: string, out: string, outDir: string): string => {\n if (out.trim() === \"\") {\n return \"it was empty, which names the project root itself\";\n }\n\n if (outDir === cwd) {\n return \"it names the project root itself\";\n }\n\n return `${outDir} is outside it`;\n};\n\nconst resolveOutDir = (cwd: string, out: string): string => {\n const outDir = out.trim() === \"\" ? cwd : resolve(cwd, out);\n\n if (isPathInside(cwd, outDir)) {\n return outDir;\n }\n\n throw new Error(\n `--out must name a directory below the project root ${cwd}, and ${outDirReason(cwd, out, outDir)}. ` +\n \"Pass a path such as --out=docs/reference.\",\n );\n};\n\nexport { docs };\n"]}
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"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","sourcesContent":["import { mergeOmittedProps, resolveGirPath, resolveLibraries } from \"@gtkx/codegen\";\nimport { writeDocs } from \"@gtkx/codegen/internal\";\nimport { loadConfig } from \"@gtkx/config\";\nimport { resolveOmittedProps } from \"@gtkx/config/internal\";\nimport { info, isPathInside } from \"@gtkx/utils\";\nimport { defineCommand } from \"citty\";\nimport { resolve } from \"node:path\";\nimport { resolveDocsElements } from \"../internal/docs-elements.js\";\nimport { cwdArg, resolveCwd } from \"../internal/entry-arg.js\";\n\nconst docs = defineCommand({\n meta: {\n name: \"docs\",\n description:\n \"Generate markdown reference pages for the JSX elements of the GIR libraries declared in gtkx.config.ts\",\n },\n args: {\n out: {\n type: \"string\",\n description:\n \"Output directory for the generated markdown pages, below the project root. It must be empty \" +\n \"or hold an earlier `gtkx docs` run, whose pages are replaced\",\n default: \"docs/reference\",\n },\n \"base-path\": {\n type: \"string\",\n description: \"URL base path used for links between generated pages\",\n default: \"/reference\",\n },\n force: {\n type: \"boolean\",\n description:\n \"Regenerate even when the pages are up to date with the GIR libraries, the base path, \" +\n \"and the element props the project configures\",\n default: false,\n },\n ...cwdArg,\n },\n async run({ args }) {\n const cwd = resolveCwd(args);\n const { config } = await loadConfig(cwd);\n\n if (config.codegen === false) {\n throw new Error(\n \"codegen is disabled for this project, so there are no GIR libraries to document. \" +\n \"Remove `codegen: false` from gtkx.config.ts to use `gtkx docs`.\",\n );\n }\n\n const girPath = resolveGirPath(config.girPath);\n\n if (girPath.length === 0) {\n throw new Error(\n \"No GIR search paths available. Install gobject-introspection \" +\n \"(Linux: `sudo dnf install gobject-introspection-devel` or \" +\n \"`sudo apt install libgirepository1.0-dev`), or set `girPath` in gtkx.config.ts.\",\n );\n }\n\n const libraries = resolveLibraries(config.libraries);\n const startedAt = Date.now();\n const outDir = resolveOutDir(cwd, args.out);\n const builtin = await resolveDocsElements(cwd);\n\n const { isRegenerated, namespaces } = writeDocs({\n libraries,\n girPath,\n outDir,\n basePath: args[\"base-path\"],\n props: builtin.props,\n acceptedChildTypes: builtin.acceptedChildTypes,\n omittedProps: mergeOmittedProps(builtin.omittedProps, resolveOmittedProps(config.elements)),\n isForced: args.force,\n });\n\n if (!isRegenerated) {\n info(`docs: pages in ${outDir} are up to date`);\n\n return;\n }\n\n const count = namespaces.reduce((total, namespace) => total + namespace.elements.length, 0);\n\n info(\n `docs: wrote ${String(count)} element pages across ${String(namespaces.length)} namespaces ` +\n `to ${outDir} in ${String(Date.now() - startedAt)}ms`,\n );\n },\n});\n\nconst outDirReason = (cwd: string, out: string, outDir: string): string => {\n if (out.trim() === \"\") {\n return \"it was empty, which names the project root itself\";\n }\n\n if (outDir === cwd) {\n return \"it names the project root itself\";\n }\n\n return `${outDir} is outside it`;\n};\n\nconst resolveOutDir = (cwd: string, out: string): string => {\n const outDir = out.trim() === \"\" ? cwd : resolve(cwd, out);\n\n if (isPathInside(cwd, outDir)) {\n return outDir;\n }\n\n throw new Error(\n `--out must name a directory below the project root ${cwd}, and ${outDirReason(cwd, out, outDir)}. ` +\n \"Pass a path such as --out=docs/reference.\",\n );\n};\n\nexport { docs };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metainfo.d.ts","sourceRoot":"","sources":["../../../src/deploy/freedesktop/metainfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"metainfo.d.ts","sourceRoot":"","sources":["../../../src/deploy/freedesktop/metainfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA2FlD,QAAA,MAAM,cAAc,GAAI,UAAU,cAAc,KAAG,MAIlD,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -2,12 +2,47 @@ import { brandingSection, contentRatingSection, descriptionSection, developerSec
|
|
|
2
2
|
import { element, renderDocument, text } from "./xml.js";
|
|
3
3
|
const COMPONENT_TYPE = "desktop-application";
|
|
4
4
|
const DESKTOP_SUFFIX = ".desktop";
|
|
5
|
+
const COMPONENT_CLOSE = "</component>\n";
|
|
6
|
+
const PROVIDES_CLOSE = " </provides>\n";
|
|
7
|
+
const PROVIDES_FRAGMENT = /^<provides\s*>([\s\S]*)<\/provides>$/;
|
|
8
|
+
const normalizeExtraFragment = (fragment, index) => {
|
|
9
|
+
const normalized = fragment.trim();
|
|
10
|
+
if (normalized.length === 0) {
|
|
11
|
+
throw new Error(`Cannot render deploy.metainfoExtra entry ${String(index + 1)}: it is empty`);
|
|
12
|
+
}
|
|
13
|
+
return normalized;
|
|
14
|
+
};
|
|
15
|
+
const indentFragment = (fragment, depth) => {
|
|
16
|
+
const indentation = " ".repeat(depth * 4);
|
|
17
|
+
return fragment.split(/\r?\n/).map((line) => `${indentation}${line}`).join("\n");
|
|
18
|
+
};
|
|
19
|
+
const appendExtraFragments = (document, fragments) => {
|
|
20
|
+
if (fragments.length === 0) {
|
|
21
|
+
return document;
|
|
22
|
+
}
|
|
23
|
+
let merged = document;
|
|
24
|
+
const componentFragments = [];
|
|
25
|
+
for (const [index, rawFragment] of fragments.entries()) {
|
|
26
|
+
const fragment = normalizeExtraFragment(rawFragment, index);
|
|
27
|
+
const provides = PROVIDES_FRAGMENT.exec(fragment)?.[1]?.trim();
|
|
28
|
+
if (provides === undefined) {
|
|
29
|
+
componentFragments.push(fragment);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
merged = merged.replace(PROVIDES_CLOSE, () => `${indentFragment(provides, 2)}\n${PROVIDES_CLOSE}`);
|
|
33
|
+
}
|
|
34
|
+
if (componentFragments.length === 0) {
|
|
35
|
+
return merged;
|
|
36
|
+
}
|
|
37
|
+
const extra = componentFragments.map((fragment) => indentFragment(fragment, 1)).join("\n");
|
|
38
|
+
return merged.replace(COMPONENT_CLOSE, () => `${extra}\n${COMPONENT_CLOSE}`);
|
|
39
|
+
};
|
|
5
40
|
const launchable = (applicationId) => ({
|
|
6
41
|
tag: "launchable",
|
|
7
42
|
attributes: { type: "desktop-id" },
|
|
8
43
|
text: `${applicationId}${DESKTOP_SUFFIX}`,
|
|
9
44
|
});
|
|
10
|
-
const
|
|
45
|
+
const metainfoRoot = (settings) => element("component", { type: COMPONENT_TYPE }, [
|
|
11
46
|
text("id", settings.applicationId),
|
|
12
47
|
text("name", settings.name),
|
|
13
48
|
text("summary", settings.summary),
|
|
@@ -24,6 +59,10 @@ const renderMetainfo = (settings) => renderDocument(element("component", { type:
|
|
|
24
59
|
...releasesSection(settings),
|
|
25
60
|
...contentRatingSection(settings),
|
|
26
61
|
...brandingSection(settings),
|
|
27
|
-
])
|
|
62
|
+
]);
|
|
63
|
+
const renderMetainfo = (settings) => {
|
|
64
|
+
const document = renderDocument(metainfoRoot(settings));
|
|
65
|
+
return appendExtraFragments(document, settings.deploy.metainfoExtra ?? []);
|
|
66
|
+
};
|
|
28
67
|
export { renderMetainfo };
|
|
29
68
|
//# sourceMappingURL=metainfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metainfo.js","sourceRoot":"","sources":["../../../src/deploy/freedesktop/metainfo.ts"],"names":[],"mappings":"AACA,OAAO,EACH,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,WAAW,GACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAgB,MAAM,UAAU,CAAC;AAEvE,MAAM,cAAc,GAAG,qBAAqB,CAAC;AAC7C,MAAM,cAAc,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"metainfo.js","sourceRoot":"","sources":["../../../src/deploy/freedesktop/metainfo.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeploySettings } from \"../types.js\";\nimport {\n brandingSection,\n contentRatingSection,\n descriptionSection,\n developerSection,\n listSection,\n providesSection,\n releasesSection,\n screenshotsSection,\n urlsSection,\n} from \"./metainfo-sections.js\";\nimport { element, renderDocument, text, type XmlNode } from \"./xml.js\";\n\nconst COMPONENT_TYPE = \"desktop-application\";\nconst DESKTOP_SUFFIX = \".desktop\";\nconst COMPONENT_CLOSE = \"</component>\\n\";\nconst PROVIDES_CLOSE = \" </provides>\\n\";\nconst PROVIDES_FRAGMENT = /^<provides\\s*>([\\s\\S]*)<\\/provides>$/;\n\nconst normalizeExtraFragment = (fragment: string, index: number): string => {\n const normalized = fragment.trim();\n\n if (normalized.length === 0) {\n throw new Error(`Cannot render deploy.metainfoExtra entry ${String(index + 1)}: it is empty`);\n }\n\n return normalized;\n};\n\nconst indentFragment = (fragment: string, depth: number): string => {\n const indentation = \" \".repeat(depth * 4);\n\n return fragment.split(/\\r?\\n/).map((line) => `${indentation}${line}`).join(\"\\n\");\n};\n\nconst appendExtraFragments = (document: string, fragments: string[]): string => {\n if (fragments.length === 0) {\n return document;\n }\n\n let merged = document;\n const componentFragments: string[] = [];\n\n for (const [index, rawFragment] of fragments.entries()) {\n const fragment = normalizeExtraFragment(rawFragment, index);\n const provides = PROVIDES_FRAGMENT.exec(fragment)?.[1]?.trim();\n\n if (provides === undefined) {\n componentFragments.push(fragment);\n continue;\n }\n\n merged = merged.replace(PROVIDES_CLOSE, () => `${indentFragment(provides, 2)}\\n${PROVIDES_CLOSE}`);\n }\n\n if (componentFragments.length === 0) {\n return merged;\n }\n\n const extra = componentFragments.map((fragment) => indentFragment(fragment, 1)).join(\"\\n\");\n\n return merged.replace(COMPONENT_CLOSE, () => `${extra}\\n${COMPONENT_CLOSE}`);\n};\n\nconst launchable = (applicationId: string): XmlNode => ({\n tag: \"launchable\",\n attributes: { type: \"desktop-id\" },\n text: `${applicationId}${DESKTOP_SUFFIX}`,\n});\n\nconst metainfoRoot = (settings: DeploySettings): XmlNode =>\n element(\"component\", { type: COMPONENT_TYPE }, [\n text(\"id\", settings.applicationId),\n text(\"name\", settings.name),\n text(\"summary\", settings.summary),\n text(\"metadata_license\", settings.metadataLicense),\n text(\"project_license\", settings.license),\n ...developerSection(settings),\n ...descriptionSection(settings),\n launchable(settings.applicationId),\n ...providesSection(settings),\n ...listSection(\"categories\", \"category\", settings.categories),\n ...listSection(\"keywords\", \"keyword\", settings.keywords),\n ...urlsSection(settings),\n ...screenshotsSection(settings),\n ...releasesSection(settings),\n ...contentRatingSection(settings),\n ...brandingSection(settings),\n ]);\n\nconst renderMetainfo = (settings: DeploySettings): string => {\n const document = renderDocument(metainfoRoot(settings));\n\n return appendExtraFragments(document, settings.deploy.metainfoExtra ?? []);\n};\n\nexport { renderMetainfo };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/deploy/freedesktop/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/deploy/freedesktop/validate.ts"],"names":[],"mappings":"AAsGA,QAAA,MAAM,oBAAoB,GAAI,MAAM,MAAM,KAAG,IAU5C,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,kBAAkB,OAAO,KAAG,IAenE,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -4,6 +4,7 @@ const DIAGNOSTIC = /^(?<severity>[EIPW]): \S+ (?<rule>[\w-]+)/;
|
|
|
4
4
|
const ERROR_SEVERITY = "E";
|
|
5
5
|
const WARNING_SEVERITY = "W";
|
|
6
6
|
const INFO_SEVERITY = "I";
|
|
7
|
+
const FATAL_WARNING_RULES = new Set(["unknown-tag"]);
|
|
7
8
|
const REMEDY_FOR_RULE = {
|
|
8
9
|
"component-summary-missing": "set `deploy.summary`",
|
|
9
10
|
"description-first-para-too-short": "open `deploy.description` with a paragraph longer than 80 characters",
|
|
@@ -32,10 +33,13 @@ const remedyLines = (rules) => {
|
|
|
32
33
|
return remedies.length === 0 ? [] : ["", "Fix it in gtkx.config.ts:", ...remedies];
|
|
33
34
|
};
|
|
34
35
|
const invalid = (subject, output, rules) => new Error([`${subject} is not valid:`, output.length > 0 ? output : "no output", ...remedyLines(rules)].join("\n"));
|
|
35
|
-
const isFatalResult = ({ status, errors, warnings, areWarningsFatal }) => {
|
|
36
|
+
const isFatalResult = ({ status, errors, warnings, rules, areWarningsFatal }) => {
|
|
36
37
|
if (errors.length > 0) {
|
|
37
38
|
return true;
|
|
38
39
|
}
|
|
40
|
+
if (rules.some((rule) => FATAL_WARNING_RULES.has(rule))) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
39
43
|
if (areWarningsFatal && warnings.length > 0) {
|
|
40
44
|
return true;
|
|
41
45
|
}
|
|
@@ -43,7 +47,7 @@ const isFatalResult = ({ status, errors, warnings, areWarningsFatal }) => {
|
|
|
43
47
|
};
|
|
44
48
|
const assertNotFatal = (result) => {
|
|
45
49
|
if (isFatalResult(result)) {
|
|
46
|
-
throw invalid(result.subject, result.output,
|
|
50
|
+
throw invalid(result.subject, result.output, result.rules);
|
|
47
51
|
}
|
|
48
52
|
};
|
|
49
53
|
const describeRule = (rule) => {
|
|
@@ -74,8 +78,10 @@ const validateMetainfo = (path, areWarningsFatal) => {
|
|
|
74
78
|
});
|
|
75
79
|
const errors = rulesIn(output, [ERROR_SEVERITY]);
|
|
76
80
|
const warnings = rulesIn(output, [WARNING_SEVERITY]);
|
|
77
|
-
|
|
78
|
-
|
|
81
|
+
const infos = rulesIn(output, [INFO_SEVERITY]);
|
|
82
|
+
const rules = [...errors, ...warnings, ...infos];
|
|
83
|
+
assertNotFatal({ subject, output, status, errors, warnings, rules, areWarningsFatal });
|
|
84
|
+
reportDiagnostics(subject, [...warnings, ...infos]);
|
|
79
85
|
};
|
|
80
86
|
export { validateDesktopEntry, validateMetainfo };
|
|
81
87
|
//# sourceMappingURL=validate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/deploy/freedesktop/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/deploy/freedesktop/validate.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolveExecutable, sortStrings, warn } from \"@gtkx/utils\";\nimport { spawnSync } from \"node:child_process\";\n\ntype ToolResult = {\n output: string;\n status: number;\n};\n\ntype MetainfoResult = {\n subject: string;\n output: string;\n status: number;\n errors: string[];\n warnings: string[];\n rules: string[];\n areWarningsFatal: boolean;\n};\n\ntype ToolRequest = {\n tool: string;\n args: string[];\n subject: string;\n};\n\nconst DIAGNOSTIC = /^(?<severity>[EIPW]): \\S+ (?<rule>[\\w-]+)/;\nconst ERROR_SEVERITY = \"E\";\nconst WARNING_SEVERITY = \"W\";\nconst INFO_SEVERITY = \"I\";\nconst FATAL_WARNING_RULES: Set<string> = new Set([\"unknown-tag\"]);\n\nconst REMEDY_FOR_RULE: Record<string, string> = {\n \"component-summary-missing\": \"set `deploy.summary`\",\n \"description-first-para-too-short\": \"open `deploy.description` with a paragraph longer than 80 characters\",\n \"developer-info-missing\": \"set `deploy.developer.name`\",\n \"metainfo-legacy-path\": \"this file is generated; report it as a gtkx bug\",\n \"summary-has-dot-suffix\": \"drop the trailing period from `deploy.summary`\",\n \"summary-too-long\": \"shorten `deploy.summary`\",\n \"url-homepage-missing\": \"set `deploy.homepage`, or `homepage` in package.json\",\n};\n\nconst runTool = ({ tool, args, subject }: ToolRequest): ToolResult => {\n const result = spawnSync(resolveExecutable(tool), args, { encoding: \"utf8\" });\n\n if (result.error !== undefined) {\n throw new Error(`${subject} could not be validated: ${result.error.message}`, { cause: result.error });\n }\n\n return { output: [result.stdout, result.stderr].join(\"\\n\").trim(), status: result.status ?? 0 };\n};\n\nconst rulesIn = (output: string, severities: string[]): string[] =>\n output\n .split(\"\\n\")\n .map((line) => DIAGNOSTIC.exec(line)?.groups)\n .filter((groups) => groups !== undefined && severities.includes(groups.severity ?? \"\"))\n .map((groups) => groups?.rule ?? \"\");\n\nconst remedyLines = (rules: string[]): string[] => {\n const remedies = sortStrings([...new Set(rules)])\n .filter((rule) => REMEDY_FOR_RULE[rule] !== undefined)\n .map((rule) => ` ${rule}: ${REMEDY_FOR_RULE[rule] ?? \"\"}`);\n\n return remedies.length === 0 ? [] : [\"\", \"Fix it in gtkx.config.ts:\", ...remedies];\n};\n\nconst invalid = (subject: string, output: string, rules: string[]): Error =>\n new Error([`${subject} is not valid:`, output.length > 0 ? output : \"no output\", ...remedyLines(rules)].join(\"\\n\"));\n\nconst isFatalResult = ({ status, errors, warnings, rules, areWarningsFatal }: MetainfoResult): boolean => {\n if (errors.length > 0) {\n return true;\n }\n\n if (rules.some((rule) => FATAL_WARNING_RULES.has(rule))) {\n return true;\n }\n\n if (areWarningsFatal && warnings.length > 0) {\n return true;\n }\n\n return status !== 0 && warnings.length === 0;\n};\n\nconst assertNotFatal = (result: MetainfoResult): void => {\n if (isFatalResult(result)) {\n throw invalid(result.subject, result.output, result.rules);\n }\n};\n\nconst describeRule = (rule: string): string => {\n const remedy = REMEDY_FOR_RULE[rule];\n\n return remedy === undefined ? rule : `${rule} — ${remedy}`;\n};\n\nconst reportDiagnostics = (subject: string, rules: string[]): void => {\n for (const rule of rules) {\n warn(`${subject}: ${describeRule(rule)}`);\n }\n};\n\nconst validateDesktopEntry = (path: string): void => {\n const { output, status } = runTool({\n tool: \"desktop-file-validate\",\n args: [path],\n subject: \"The desktop entry\",\n });\n\n if (status !== 0 || output.length > 0) {\n throw invalid(\"The desktop entry\", output, []);\n }\n};\n\nconst validateMetainfo = (path: string, areWarningsFatal: boolean): void => {\n const subject = \"The AppStream metainfo\";\n\n const { output, status } = runTool({\n tool: \"appstreamcli\",\n args: [\"validate\", \"--no-net\", \"--explain\", path],\n subject,\n });\n\n const errors = rulesIn(output, [ERROR_SEVERITY]);\n const warnings = rulesIn(output, [WARNING_SEVERITY]);\n const infos = rulesIn(output, [INFO_SEVERITY]);\n const rules = [...errors, ...warnings, ...infos];\n assertNotFatal({ subject, output, status, errors, warnings, rules, areWarningsFatal });\n reportDiagnostics(subject, [...warnings, ...infos]);\n};\n\nexport { validateDesktopEntry, validateMetainfo };\n"]}
|
|
@@ -3,6 +3,7 @@ import { type Entries } from "./optional.js";
|
|
|
3
3
|
type NfpmPackager = "deb" | "rpm";
|
|
4
4
|
type NfpmConfig = Entries;
|
|
5
5
|
declare const packageNameFor: (settings: DeploySettings, packager: NfpmPackager) => string;
|
|
6
|
-
declare const
|
|
7
|
-
|
|
6
|
+
declare const glibcMinimumForPackage: (payload: DeployPayload, packager: NfpmPackager) => string | null;
|
|
7
|
+
declare const renderNfpmConfig: (payload: DeployPayload, packager: NfpmPackager, glibcMinimum: string | null) => NfpmConfig;
|
|
8
|
+
export { glibcMinimumForPackage, type NfpmPackager, packageNameFor, renderNfpmConfig };
|
|
8
9
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/deploy/nfpm/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAc,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/deploy/nfpm/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAc,MAAM,aAAa,CAAC;AAM7E,OAAO,EAAE,KAAK,OAAO,EAAkB,MAAM,eAAe,CAAC;AAE7D,KAAK,YAAY,GAAG,KAAK,GAAG,KAAK,CAAC;AAClC,KAAK,UAAU,GAAG,OAAO,CAAC;AAmG1B,QAAA,MAAM,cAAc,GAAI,UAAU,cAAc,EAAE,UAAU,YAAY,KAAG,MACV,CAAC;AAOlE,QAAA,MAAM,sBAAsB,GAAI,SAAS,aAAa,EAAE,UAAU,YAAY,KAAG,MAAM,GAAG,IACP,CAAC;AAWpF,QAAA,MAAM,gBAAgB,GAClB,SAAS,aAAa,EACtB,UAAU,YAAY,EACtB,cAAc,MAAM,GAAG,IAAI,KAC5B,UA2BF,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { resolveDepends } from "../depends.js";
|
|
2
|
+
import { glibcMinimumForFiles } from "../node-runtime/elf.js";
|
|
2
3
|
import { groupForCategories, sectionForCategories } from "../settings/categories.js";
|
|
3
4
|
import { nfpmContents } from "./contents.js";
|
|
4
5
|
import { debDescription, rpmDescription } from "./description.js";
|
|
@@ -86,13 +87,15 @@ const stagedFilesFor = (payload, packager) => [
|
|
|
86
87
|
...payload.stage,
|
|
87
88
|
...payload.overlays[packager],
|
|
88
89
|
];
|
|
90
|
+
const glibcMinimumForPackage = (payload, packager) => glibcMinimumForFiles(stagedFilesFor(payload, packager).map((file) => file.abs));
|
|
89
91
|
const packagerSettings = (settings, packager) => packager === "rpm" ? rpmSettings(settings) : debSettings(settings);
|
|
90
92
|
const releaseFor = (settings, packager) => packager === "rpm" ? settings.versions.rpmRelease : settings.versions.debRevision;
|
|
91
93
|
const descriptionFor = (settings, packager) => packager === "rpm" ? rpmDescription(settings) : debDescription(settings);
|
|
92
|
-
const renderNfpmConfig = (payload, packager) => {
|
|
94
|
+
const renderNfpmConfig = (payload, packager, glibcMinimum) => {
|
|
93
95
|
const settings = payload.settings;
|
|
94
96
|
const isRpm = packager === "rpm";
|
|
95
|
-
const
|
|
97
|
+
const staged = stagedFilesFor(payload, packager);
|
|
98
|
+
const depends = resolveDepends(settings, glibcMinimum);
|
|
96
99
|
return {
|
|
97
100
|
name: packageNameFor(settings, packager),
|
|
98
101
|
arch: settings.arch[packager],
|
|
@@ -112,8 +115,8 @@ const renderNfpmConfig = (payload, packager) => {
|
|
|
112
115
|
...relationsFor(settings, packager),
|
|
113
116
|
...optional("scripts", scriptsFor(settings)),
|
|
114
117
|
[packager]: packagerSettings(settings, packager),
|
|
115
|
-
contents: nfpmContents(PREFIX,
|
|
118
|
+
contents: nfpmContents(PREFIX, staged, isRpm),
|
|
116
119
|
};
|
|
117
120
|
};
|
|
118
|
-
export { packageNameFor, renderNfpmConfig };
|
|
121
|
+
export { glibcMinimumForPackage, packageNameFor, renderNfpmConfig };
|
|
119
122
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/deploy/nfpm/config.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeployPayload, DeploySettings, StagedFile } from \"../types.js\";\nimport { resolveDepends } from \"../depends.js\";\nimport { groupForCategories, sectionForCategories } from \"../settings/categories.js\";\nimport { nfpmContents } from \"./contents.js\";\nimport { debDescription, rpmDescription } from \"./description.js\";\nimport { type Entries, optional, when } from \"./optional.js\";\n\ntype NfpmPackager = \"deb\" | \"rpm\";\ntype NfpmConfig = Entries;\n\nconst PREFIX = \"/usr\";\nconst DEFAULT_PRIORITY = \"optional\";\nconst DEFAULT_UMASK = 0o022;\nconst VERSION_SCHEMA = \"none\";\n\nconst maintainerFor = (settings: DeploySettings): string => {\n const { name, email } = settings.developer;\n\n return email === null ? name : `${name} <${email}>`;\n};\n\nconst scriptsFor = (settings: DeploySettings): NfpmConfig | undefined => {\n const scripts = settings.deploy.scripts;\n\n if (scripts === undefined) {\n return undefined;\n }\n\n return {\n ...optional(\"preinstall\", scripts.preInstall),\n ...optional(\"postinstall\", scripts.postInstall),\n ...optional(\"preremove\", scripts.preRemove),\n ...optional(\"postremove\", scripts.postRemove),\n };\n};\n\nconst relationsFor = (settings: DeploySettings, packager: NfpmPackager): NfpmConfig => {\n const relations = settings.deploy.relations ?? {};\n\n return {\n ...optional(\"recommends\", relations.recommends?.[packager]),\n ...optional(\"suggests\", relations.suggests?.[packager]),\n ...optional(\"provides\", relations.provides?.[packager]),\n ...optional(\"conflicts\", relations.conflicts?.[packager]),\n ...optional(\"replaces\", relations.replaces?.[packager]),\n };\n};\n\nconst debSection = (settings: DeploySettings): NfpmConfig => ({\n section: settings.deploy.deb?.section ?? sectionForCategories(settings.categories),\n priority: settings.deploy.deb?.priority ?? DEFAULT_PRIORITY,\n});\n\nconst debSignature = (settings: DeploySettings): NfpmConfig => {\n const signing = settings.deploy.signing?.deb;\n\n if (signing === undefined) {\n return {};\n }\n\n return {\n signature: {\n key_file: signing.keyFile,\n ...optional(\"key_id\", signing.keyId),\n ...optional(\"method\", signing.method),\n ...optional(\"type\", signing.type),\n ...optional(\"signer\", signing.signer),\n },\n };\n};\n\nconst rpmSignature = (settings: DeploySettings): NfpmConfig => {\n const signing = settings.deploy.signing?.rpm;\n\n if (signing === undefined) {\n return {};\n }\n\n return { signature: { key_file: signing.keyFile, ...optional(\"key_id\", signing.keyId) } };\n};\n\nconst debSettings = (settings: DeploySettings): NfpmConfig => {\n const deb = settings.deploy.deb ?? {};\n const relations = settings.deploy.relations ?? {};\n\n return {\n ...optional(\"compression\", deb.compression),\n ...optional(\"fields\", deb.fields),\n ...optional(\"breaks\", relations.breaks?.deb),\n ...optional(\"predepends\", relations.preDepends?.deb),\n ...debSignature(settings),\n };\n};\n\nconst rpmSettings = (settings: DeploySettings): NfpmConfig => {\n const rpm = settings.deploy.rpm ?? {};\n\n return {\n group: rpm.group ?? groupForCategories(settings.categories),\n summary: settings.summary,\n packager: maintainerFor(settings),\n ...optional(\"compression\", rpm.compression),\n ...optional(\"prefixes\", rpm.prefixes),\n ...rpmSignature(settings),\n };\n};\n\nconst packageNameFor = (settings: DeploySettings, packager: NfpmPackager): string =>\n settings.deploy[packager]?.packageName ?? settings.binaryName;\n\nconst stagedFilesFor = (payload: DeployPayload, packager: NfpmPackager): StagedFile[] => [\n ...payload.stage,\n ...payload.overlays[packager],\n];\n\nconst packagerSettings = (settings: DeploySettings, packager: NfpmPackager): NfpmConfig =>\n packager === \"rpm\" ? rpmSettings(settings) : debSettings(settings);\n\nconst releaseFor = (settings: DeploySettings, packager: NfpmPackager): string =>\n packager === \"rpm\" ? settings.versions.rpmRelease : settings.versions.debRevision;\n\nconst descriptionFor = (settings: DeploySettings, packager: NfpmPackager): string =>\n packager === \"rpm\" ? rpmDescription(settings) : debDescription(settings);\n\nconst renderNfpmConfig = (payload: DeployPayload, packager: NfpmPackager): NfpmConfig => {\n const settings = payload.settings;\n const isRpm = packager === \"rpm\";\n const depends = resolveDepends(settings, payload.node?.glibcMinimum ?? null);\n\n return {\n name: packageNameFor(settings, packager),\n arch: settings.arch[packager],\n platform: \"linux\",\n version: settings.versions.packageVersion,\n version_schema: VERSION_SCHEMA,\n release: releaseFor(settings, packager),\n ...optional(\"epoch\", settings.versions.epoch === null ? undefined : String(settings.versions.epoch)),\n ...when(!isRpm, debSection(settings)),\n maintainer: maintainerFor(settings),\n vendor: settings.developer.name,\n ...optional(\"homepage\", settings.homepage),\n license: settings.license,\n description: descriptionFor(settings, packager),\n umask: DEFAULT_UMASK,\n depends: depends[packager],\n ...relationsFor(settings, packager),\n ...optional(\"scripts\", scriptsFor(settings)),\n [packager]: packagerSettings(settings, packager),\n contents: nfpmContents(PREFIX, stagedFilesFor(payload, packager), isRpm),\n };\n};\n\nexport { type NfpmPackager, packageNameFor, renderNfpmConfig };\n"]}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/deploy/nfpm/config.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeployPayload, DeploySettings, StagedFile } from \"../types.js\";\nimport { resolveDepends } from \"../depends.js\";\nimport { glibcMinimumForFiles } from \"../node-runtime/elf.js\";\nimport { groupForCategories, sectionForCategories } from \"../settings/categories.js\";\nimport { nfpmContents } from \"./contents.js\";\nimport { debDescription, rpmDescription } from \"./description.js\";\nimport { type Entries, optional, when } from \"./optional.js\";\n\ntype NfpmPackager = \"deb\" | \"rpm\";\ntype NfpmConfig = Entries;\n\nconst PREFIX = \"/usr\";\nconst DEFAULT_PRIORITY = \"optional\";\nconst DEFAULT_UMASK = 0o022;\nconst VERSION_SCHEMA = \"none\";\n\nconst maintainerFor = (settings: DeploySettings): string => {\n const { name, email } = settings.developer;\n\n return email === null ? name : `${name} <${email}>`;\n};\n\nconst scriptsFor = (settings: DeploySettings): NfpmConfig | undefined => {\n const scripts = settings.deploy.scripts;\n\n if (scripts === undefined) {\n return undefined;\n }\n\n return {\n ...optional(\"preinstall\", scripts.preInstall),\n ...optional(\"postinstall\", scripts.postInstall),\n ...optional(\"preremove\", scripts.preRemove),\n ...optional(\"postremove\", scripts.postRemove),\n };\n};\n\nconst relationsFor = (settings: DeploySettings, packager: NfpmPackager): NfpmConfig => {\n const relations = settings.deploy.relations ?? {};\n\n return {\n ...optional(\"recommends\", relations.recommends?.[packager]),\n ...optional(\"suggests\", relations.suggests?.[packager]),\n ...optional(\"provides\", relations.provides?.[packager]),\n ...optional(\"conflicts\", relations.conflicts?.[packager]),\n ...optional(\"replaces\", relations.replaces?.[packager]),\n };\n};\n\nconst debSection = (settings: DeploySettings): NfpmConfig => ({\n section: settings.deploy.deb?.section ?? sectionForCategories(settings.categories),\n priority: settings.deploy.deb?.priority ?? DEFAULT_PRIORITY,\n});\n\nconst debSignature = (settings: DeploySettings): NfpmConfig => {\n const signing = settings.deploy.signing?.deb;\n\n if (signing === undefined) {\n return {};\n }\n\n return {\n signature: {\n key_file: signing.keyFile,\n ...optional(\"key_id\", signing.keyId),\n ...optional(\"method\", signing.method),\n ...optional(\"type\", signing.type),\n ...optional(\"signer\", signing.signer),\n },\n };\n};\n\nconst rpmSignature = (settings: DeploySettings): NfpmConfig => {\n const signing = settings.deploy.signing?.rpm;\n\n if (signing === undefined) {\n return {};\n }\n\n return { signature: { key_file: signing.keyFile, ...optional(\"key_id\", signing.keyId) } };\n};\n\nconst debSettings = (settings: DeploySettings): NfpmConfig => {\n const deb = settings.deploy.deb ?? {};\n const relations = settings.deploy.relations ?? {};\n\n return {\n ...optional(\"compression\", deb.compression),\n ...optional(\"fields\", deb.fields),\n ...optional(\"breaks\", relations.breaks?.deb),\n ...optional(\"predepends\", relations.preDepends?.deb),\n ...debSignature(settings),\n };\n};\n\nconst rpmSettings = (settings: DeploySettings): NfpmConfig => {\n const rpm = settings.deploy.rpm ?? {};\n\n return {\n group: rpm.group ?? groupForCategories(settings.categories),\n summary: settings.summary,\n packager: maintainerFor(settings),\n ...optional(\"compression\", rpm.compression),\n ...optional(\"prefixes\", rpm.prefixes),\n ...rpmSignature(settings),\n };\n};\n\nconst packageNameFor = (settings: DeploySettings, packager: NfpmPackager): string =>\n settings.deploy[packager]?.packageName ?? settings.binaryName;\n\nconst stagedFilesFor = (payload: DeployPayload, packager: NfpmPackager): StagedFile[] => [\n ...payload.stage,\n ...payload.overlays[packager],\n];\n\nconst glibcMinimumForPackage = (payload: DeployPayload, packager: NfpmPackager): string | null =>\n glibcMinimumForFiles(stagedFilesFor(payload, packager).map((file) => file.abs));\n\nconst packagerSettings = (settings: DeploySettings, packager: NfpmPackager): NfpmConfig =>\n packager === \"rpm\" ? rpmSettings(settings) : debSettings(settings);\n\nconst releaseFor = (settings: DeploySettings, packager: NfpmPackager): string =>\n packager === \"rpm\" ? settings.versions.rpmRelease : settings.versions.debRevision;\n\nconst descriptionFor = (settings: DeploySettings, packager: NfpmPackager): string =>\n packager === \"rpm\" ? rpmDescription(settings) : debDescription(settings);\n\nconst renderNfpmConfig = (\n payload: DeployPayload,\n packager: NfpmPackager,\n glibcMinimum: string | null,\n): NfpmConfig => {\n const settings = payload.settings;\n const isRpm = packager === \"rpm\";\n const staged = stagedFilesFor(payload, packager);\n const depends = resolveDepends(settings, glibcMinimum);\n\n return {\n name: packageNameFor(settings, packager),\n arch: settings.arch[packager],\n platform: \"linux\",\n version: settings.versions.packageVersion,\n version_schema: VERSION_SCHEMA,\n release: releaseFor(settings, packager),\n ...optional(\"epoch\", settings.versions.epoch === null ? undefined : String(settings.versions.epoch)),\n ...when(!isRpm, debSection(settings)),\n maintainer: maintainerFor(settings),\n vendor: settings.developer.name,\n ...optional(\"homepage\", settings.homepage),\n license: settings.license,\n description: descriptionFor(settings, packager),\n umask: DEFAULT_UMASK,\n depends: depends[packager],\n ...relationsFor(settings, packager),\n ...optional(\"scripts\", scriptsFor(settings)),\n [packager]: packagerSettings(settings, packager),\n contents: nfpmContents(PREFIX, staged, isRpm),\n };\n};\n\nexport { glibcMinimumForPackage, type NfpmPackager, packageNameFor, renderNfpmConfig };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contents.d.ts","sourceRoot":"","sources":["../../../src/deploy/nfpm/contents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,KAAK,WAAW,GAAG;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChC,CAAC;
|
|
1
|
+
{"version":3,"file":"contents.d.ts","sourceRoot":"","sources":["../../../src/deploy/nfpm/contents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,KAAK,WAAW,GAAG;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChC,CAAC;AAyDF,QAAA,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,OAAO,UAAU,EAAE,EAAE,sBAAsB,OAAO,KAAG,WAAW,EAQrG,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -4,10 +4,16 @@ const FILESYSTEM_OWNED_PREFIXES = new Set([
|
|
|
4
4
|
"/usr",
|
|
5
5
|
"/usr/bin",
|
|
6
6
|
"/usr/lib",
|
|
7
|
+
"/usr/lib/systemd",
|
|
8
|
+
"/usr/lib/systemd/system",
|
|
9
|
+
"/usr/lib/systemd/user",
|
|
10
|
+
"/usr/libexec",
|
|
7
11
|
"/usr/share",
|
|
8
12
|
"/usr/share/applications",
|
|
9
13
|
"/usr/share/dbus-1",
|
|
10
14
|
"/usr/share/dbus-1/services",
|
|
15
|
+
"/usr/share/dbus-1/system-services",
|
|
16
|
+
"/usr/share/dbus-1/system.d",
|
|
11
17
|
"/usr/share/doc",
|
|
12
18
|
"/usr/share/glib-2.0",
|
|
13
19
|
"/usr/share/glib-2.0/schemas",
|
|
@@ -16,6 +22,8 @@ const FILESYSTEM_OWNED_PREFIXES = new Set([
|
|
|
16
22
|
"/usr/share/metainfo",
|
|
17
23
|
"/usr/share/mime",
|
|
18
24
|
"/usr/share/mime/packages",
|
|
25
|
+
"/usr/share/polkit-1",
|
|
26
|
+
"/usr/share/polkit-1/actions",
|
|
19
27
|
]);
|
|
20
28
|
const ICON_THEME_PREFIX = "/usr/share/icons/";
|
|
21
29
|
const contentFor = (prefix, file) => ({
|