@gtkx/cli 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/builder.d.ts +1 -1
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +20 -3
- package/dist/builder.js.map +1 -1
- package/dist/cli.js +6 -2
- package/dist/cli.js.map +1 -1
- package/dist/codegen/freshness.js +2 -2
- package/dist/codegen/freshness.js.map +1 -1
- package/dist/codegen/run-codegen.d.ts +8 -5
- package/dist/codegen/run-codegen.d.ts.map +1 -1
- package/dist/codegen/run-codegen.js +24 -19
- package/dist/codegen/run-codegen.js.map +1 -1
- package/dist/codegen/store-resolver.d.ts +1 -1
- package/dist/codegen/store-resolver.d.ts.map +1 -1
- package/dist/codegen/store-resolver.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +5 -6
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/codegen.d.ts.map +1 -1
- package/dist/commands/codegen.js +11 -1
- package/dist/commands/codegen.js.map +1 -1
- package/dist/commands/deploy.d.ts +22 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +44 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +4 -4
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/docs.d.ts +2 -2
- package/dist/commands/docs.d.ts.map +1 -1
- package/dist/commands/docs.js +27 -4
- package/dist/commands/docs.js.map +1 -1
- package/dist/deploy/depends.d.ts +8 -0
- package/dist/deploy/depends.d.ts.map +1 -0
- package/dist/deploy/depends.js +27 -0
- package/dist/deploy/depends.js.map +1 -0
- package/dist/deploy/download.d.ts +20 -0
- package/dist/deploy/download.d.ts.map +1 -0
- package/dist/deploy/download.js +98 -0
- package/dist/deploy/download.js.map +1 -0
- package/dist/deploy/freedesktop/copyright.d.ts +4 -0
- package/dist/deploy/freedesktop/copyright.d.ts.map +1 -0
- package/dist/deploy/freedesktop/copyright.js +33 -0
- package/dist/deploy/freedesktop/copyright.js.map +1 -0
- package/dist/deploy/freedesktop/dbus-service.d.ts +4 -0
- package/dist/deploy/freedesktop/dbus-service.d.ts.map +1 -0
- package/dist/deploy/freedesktop/dbus-service.js +15 -0
- package/dist/deploy/freedesktop/dbus-service.js.map +1 -0
- package/dist/deploy/freedesktop/desktop-entry.d.ts +4 -0
- package/dist/deploy/freedesktop/desktop-entry.d.ts.map +1 -0
- package/dist/deploy/freedesktop/desktop-entry.js +73 -0
- package/dist/deploy/freedesktop/desktop-entry.js.map +1 -0
- package/dist/deploy/freedesktop/ini.d.ts +7 -0
- package/dist/deploy/freedesktop/ini.d.ts.map +1 -0
- package/dist/deploy/freedesktop/ini.js +22 -0
- package/dist/deploy/freedesktop/ini.js.map +1 -0
- package/dist/deploy/freedesktop/metainfo-sections.d.ts +13 -0
- package/dist/deploy/freedesktop/metainfo-sections.d.ts.map +1 -0
- package/dist/deploy/freedesktop/metainfo-sections.js +73 -0
- package/dist/deploy/freedesktop/metainfo-sections.js.map +1 -0
- package/dist/deploy/freedesktop/metainfo.d.ts +4 -0
- package/dist/deploy/freedesktop/metainfo.d.ts.map +1 -0
- package/dist/deploy/freedesktop/metainfo.js +29 -0
- package/dist/deploy/freedesktop/metainfo.js.map +1 -0
- package/dist/deploy/freedesktop/mime-package.d.ts +4 -0
- package/dist/deploy/freedesktop/mime-package.d.ts.map +1 -0
- package/dist/deploy/freedesktop/mime-package.js +16 -0
- package/dist/deploy/freedesktop/mime-package.js.map +1 -0
- package/dist/deploy/freedesktop/validate.d.ts +4 -0
- package/dist/deploy/freedesktop/validate.d.ts.map +1 -0
- package/dist/deploy/freedesktop/validate.js +81 -0
- package/dist/deploy/freedesktop/validate.js.map +1 -0
- package/dist/deploy/freedesktop/xml.d.ts +11 -0
- package/dist/deploy/freedesktop/xml.d.ts.map +1 -0
- package/dist/deploy/freedesktop/xml.js +33 -0
- package/dist/deploy/freedesktop/xml.js.map +1 -0
- package/dist/deploy/git.d.ts +4 -0
- package/dist/deploy/git.d.ts.map +1 -0
- package/dist/deploy/git.js +17 -0
- package/dist/deploy/git.js.map +1 -0
- package/dist/deploy/install-hints.d.ts +5 -0
- package/dist/deploy/install-hints.d.ts.map +1 -0
- package/dist/deploy/install-hints.js +85 -0
- package/dist/deploy/install-hints.js.map +1 -0
- package/dist/deploy/nfpm/config.d.ts +8 -0
- package/dist/deploy/nfpm/config.d.ts.map +1 -0
- package/dist/deploy/nfpm/config.js +119 -0
- package/dist/deploy/nfpm/config.js.map +1 -0
- package/dist/deploy/nfpm/contents.d.ts +12 -0
- package/dist/deploy/nfpm/contents.d.ts.map +1 -0
- package/dist/deploy/nfpm/contents.js +48 -0
- package/dist/deploy/nfpm/contents.js.map +1 -0
- package/dist/deploy/nfpm/description.d.ts +5 -0
- package/dist/deploy/nfpm/description.d.ts.map +1 -0
- package/dist/deploy/nfpm/description.js +5 -0
- package/dist/deploy/nfpm/description.js.map +1 -0
- package/dist/deploy/nfpm/optional.d.ts +5 -0
- package/dist/deploy/nfpm/optional.d.ts.map +1 -0
- package/dist/deploy/nfpm/optional.js +4 -0
- package/dist/deploy/nfpm/optional.js.map +1 -0
- package/dist/deploy/nfpm/pack.d.ts +5 -0
- package/dist/deploy/nfpm/pack.d.ts.map +1 -0
- package/dist/deploy/nfpm/pack.js +32 -0
- package/dist/deploy/nfpm/pack.js.map +1 -0
- package/dist/deploy/node-runtime/download.d.ts +3 -0
- package/dist/deploy/node-runtime/download.d.ts.map +1 -0
- package/dist/deploy/node-runtime/download.js +39 -0
- package/dist/deploy/node-runtime/download.js.map +1 -0
- package/dist/deploy/node-runtime/elf.d.ts +7 -0
- package/dist/deploy/node-runtime/elf.d.ts.map +1 -0
- package/dist/deploy/node-runtime/elf.js +100 -0
- package/dist/deploy/node-runtime/elf.js.map +1 -0
- package/dist/deploy/node-runtime/guard.d.ts +4 -0
- package/dist/deploy/node-runtime/guard.d.ts.map +1 -0
- package/dist/deploy/node-runtime/guard.js +22 -0
- package/dist/deploy/node-runtime/guard.js.map +1 -0
- package/dist/deploy/node-runtime/index.d.ts +4 -0
- package/dist/deploy/node-runtime/index.d.ts.map +1 -0
- package/dist/deploy/node-runtime/index.js +61 -0
- package/dist/deploy/node-runtime/index.js.map +1 -0
- package/dist/deploy/payload/copy-tree.d.ts +7 -0
- package/dist/deploy/payload/copy-tree.d.ts.map +1 -0
- package/dist/deploy/payload/copy-tree.js +36 -0
- package/dist/deploy/payload/copy-tree.js.map +1 -0
- package/dist/deploy/payload/icons.d.ts +6 -0
- package/dist/deploy/payload/icons.d.ts.map +1 -0
- package/dist/deploy/payload/icons.js +53 -0
- package/dist/deploy/payload/icons.js.map +1 -0
- package/dist/deploy/payload/launcher.d.ts +5 -0
- package/dist/deploy/payload/launcher.d.ts.map +1 -0
- package/dist/deploy/payload/launcher.js +22 -0
- package/dist/deploy/payload/launcher.js.map +1 -0
- package/dist/deploy/payload/schemas.d.ts +4 -0
- package/dist/deploy/payload/schemas.d.ts.map +1 -0
- package/dist/deploy/payload/schemas.js +17 -0
- package/dist/deploy/payload/schemas.js.map +1 -0
- package/dist/deploy/payload/stage.d.ts +15 -0
- package/dist/deploy/payload/stage.d.ts.map +1 -0
- package/dist/deploy/payload/stage.js +100 -0
- package/dist/deploy/payload/stage.js.map +1 -0
- package/dist/deploy/registry.d.ts +7 -0
- package/dist/deploy/registry.d.ts.map +1 -0
- package/dist/deploy/registry.js +30 -0
- package/dist/deploy/registry.js.map +1 -0
- package/dist/deploy/run-deploy.d.ts +11 -0
- package/dist/deploy/run-deploy.d.ts.map +1 -0
- package/dist/deploy/run-deploy.js +153 -0
- package/dist/deploy/run-deploy.js.map +1 -0
- package/dist/deploy/settings/arch.d.ts +4 -0
- package/dist/deploy/settings/arch.d.ts.map +1 -0
- package/dist/deploy/settings/arch.js +13 -0
- package/dist/deploy/settings/arch.js.map +1 -0
- package/dist/deploy/settings/categories.d.ts +4 -0
- package/dist/deploy/settings/categories.d.ts.map +1 -0
- package/dist/deploy/settings/categories.js +29 -0
- package/dist/deploy/settings/categories.js.map +1 -0
- package/dist/deploy/settings/exec.d.ts +6 -0
- package/dist/deploy/settings/exec.d.ts.map +1 -0
- package/dist/deploy/settings/exec.js +20 -0
- package/dist/deploy/settings/exec.js.map +1 -0
- package/dist/deploy/settings/identity.d.ts +18 -0
- package/dist/deploy/settings/identity.d.ts.map +1 -0
- package/dist/deploy/settings/identity.js +73 -0
- package/dist/deploy/settings/identity.js.map +1 -0
- package/dist/deploy/settings/index.d.ts +11 -0
- package/dist/deploy/settings/index.d.ts.map +1 -0
- package/dist/deploy/settings/index.js +103 -0
- package/dist/deploy/settings/index.js.map +1 -0
- package/dist/deploy/settings/package-manifest.d.ts +15 -0
- package/dist/deploy/settings/package-manifest.d.ts.map +1 -0
- package/dist/deploy/settings/package-manifest.js +41 -0
- package/dist/deploy/settings/package-manifest.js.map +1 -0
- package/dist/deploy/settings/paths.d.ts +9 -0
- package/dist/deploy/settings/paths.d.ts.map +1 -0
- package/dist/deploy/settings/paths.js +82 -0
- package/dist/deploy/settings/paths.js.map +1 -0
- package/dist/deploy/settings/screenshots.d.ts +8 -0
- package/dist/deploy/settings/screenshots.d.ts.map +1 -0
- package/dist/deploy/settings/screenshots.js +79 -0
- package/dist/deploy/settings/screenshots.js.map +1 -0
- package/dist/deploy/settings/starter.d.ts +4 -0
- package/dist/deploy/settings/starter.d.ts.map +1 -0
- package/dist/deploy/settings/starter.js +28 -0
- package/dist/deploy/settings/starter.js.map +1 -0
- package/dist/deploy/settings/version.d.ts +9 -0
- package/dist/deploy/settings/version.d.ts.map +1 -0
- package/dist/deploy/settings/version.js +37 -0
- package/dist/deploy/settings/version.js.map +1 -0
- package/dist/deploy/targets/appimage.d.ts +4 -0
- package/dist/deploy/targets/appimage.d.ts.map +1 -0
- package/dist/deploy/targets/appimage.js +105 -0
- package/dist/deploy/targets/appimage.js.map +1 -0
- package/dist/deploy/targets/deb.d.ts +4 -0
- package/dist/deploy/targets/deb.d.ts.map +1 -0
- package/dist/deploy/targets/deb.js +4 -0
- package/dist/deploy/targets/deb.js.map +1 -0
- package/dist/deploy/targets/flatpak-manifest.d.ts +6 -0
- package/dist/deploy/targets/flatpak-manifest.d.ts.map +1 -0
- package/dist/deploy/targets/flatpak-manifest.js +48 -0
- package/dist/deploy/targets/flatpak-manifest.js.map +1 -0
- package/dist/deploy/targets/flatpak-prebuilt.d.ts +8 -0
- package/dist/deploy/targets/flatpak-prebuilt.d.ts.map +1 -0
- package/dist/deploy/targets/flatpak-prebuilt.js +43 -0
- package/dist/deploy/targets/flatpak-prebuilt.js.map +1 -0
- package/dist/deploy/targets/flatpak-source.d.ts +5 -0
- package/dist/deploy/targets/flatpak-source.d.ts.map +1 -0
- package/dist/deploy/targets/flatpak-source.js +110 -0
- package/dist/deploy/targets/flatpak-source.js.map +1 -0
- package/dist/deploy/targets/flatpak-sources.d.ts +17 -0
- package/dist/deploy/targets/flatpak-sources.d.ts.map +1 -0
- package/dist/deploy/targets/flatpak-sources.js +108 -0
- package/dist/deploy/targets/flatpak-sources.js.map +1 -0
- package/dist/deploy/targets/flatpak.d.ts +4 -0
- package/dist/deploy/targets/flatpak.d.ts.map +1 -0
- package/dist/deploy/targets/flatpak.js +112 -0
- package/dist/deploy/targets/flatpak.js.map +1 -0
- package/dist/deploy/targets/nfpm-target.d.ts +5 -0
- package/dist/deploy/targets/nfpm-target.d.ts.map +1 -0
- package/dist/deploy/targets/nfpm-target.js +26 -0
- package/dist/deploy/targets/nfpm-target.js.map +1 -0
- package/dist/deploy/targets/rpm.d.ts +4 -0
- package/dist/deploy/targets/rpm.d.ts.map +1 -0
- package/dist/deploy/targets/rpm.js +4 -0
- package/dist/deploy/targets/rpm.js.map +1 -0
- package/dist/deploy/tools.d.ts +18 -0
- package/dist/deploy/tools.d.ts.map +1 -0
- package/dist/deploy/tools.js +92 -0
- package/dist/deploy/tools.js.map +1 -0
- package/dist/deploy/types.d.ts +140 -0
- package/dist/deploy/types.d.ts.map +1 -0
- package/dist/deploy/types.js +2 -0
- package/dist/deploy/types.js.map +1 -0
- package/dist/deploy/vendored/appimagetool.d.ts +7 -0
- package/dist/deploy/vendored/appimagetool.d.ts.map +1 -0
- package/dist/deploy/vendored/appimagetool.js +42 -0
- package/dist/deploy/vendored/appimagetool.js.map +1 -0
- package/dist/deploy/vendored/nfpm.d.ts +3 -0
- package/dist/deploy/vendored/nfpm.d.ts.map +1 -0
- package/dist/deploy/vendored/nfpm.js +60 -0
- package/dist/deploy/vendored/nfpm.js.map +1 -0
- package/dist/dev/change-queue.d.ts +11 -0
- package/dist/dev/change-queue.d.ts.map +1 -0
- package/dist/dev/change-queue.js +34 -0
- package/dist/dev/change-queue.js.map +1 -0
- package/dist/dev/failure-tracker.d.ts +10 -0
- package/dist/dev/failure-tracker.d.ts.map +1 -0
- package/dist/dev/failure-tracker.js +61 -0
- package/dist/dev/failure-tracker.js.map +1 -0
- package/dist/dev/missing-import.d.ts +4 -0
- package/dist/dev/missing-import.d.ts.map +1 -0
- package/dist/dev/missing-import.js +23 -0
- package/dist/dev/missing-import.js.map +1 -0
- package/dist/dev/runner-deps.d.ts.map +1 -1
- package/dist/dev/runner-deps.js +25 -6
- package/dist/dev/runner-deps.js.map +1 -1
- package/dist/dev/runner.d.ts +8 -4
- package/dist/dev/runner.d.ts.map +1 -1
- package/dist/dev/runner.js +334 -66
- package/dist/dev/runner.js.map +1 -1
- package/dist/dev/supervisor.d.ts +1 -2
- package/dist/dev/supervisor.d.ts.map +1 -1
- package/dist/dev/supervisor.js +1 -1
- package/dist/dev/supervisor.js.map +1 -1
- package/dist/dev/vite-dev-server.d.ts +13 -2
- package/dist/dev/vite-dev-server.d.ts.map +1 -1
- package/dist/dev/vite-dev-server.js +30 -2
- package/dist/dev/vite-dev-server.js.map +1 -1
- package/dist/internal/entry-arg.d.ts +1 -7
- package/dist/internal/entry-arg.d.ts.map +1 -1
- package/dist/internal/entry-arg.js +18 -11
- package/dist/internal/entry-arg.js.map +1 -1
- package/dist/internal/module-loads.d.ts +7 -0
- package/dist/internal/module-loads.d.ts.map +1 -0
- package/dist/internal/module-loads.js +21 -0
- package/dist/internal/module-loads.js.map +1 -0
- package/dist/internal/prepare-project.d.ts +16 -0
- package/dist/internal/prepare-project.d.ts.map +1 -0
- package/dist/internal/prepare-project.js +15 -0
- package/dist/internal/prepare-project.js.map +1 -0
- package/dist/internal/run-cli-tool.d.ts +2 -1
- package/dist/internal/run-cli-tool.d.ts.map +1 -1
- package/dist/internal/run-cli-tool.js +15 -6
- package/dist/internal/run-cli-tool.js.map +1 -1
- package/dist/internal/staging-dir.d.ts +8 -1
- package/dist/internal/staging-dir.d.ts.map +1 -1
- package/dist/internal/staging-dir.js +38 -2
- package/dist/internal/staging-dir.js.map +1 -1
- package/dist/mcp/serialize-widget.d.ts +2 -1
- package/dist/mcp/serialize-widget.d.ts.map +1 -1
- package/dist/mcp/serialize-widget.js +1 -1
- package/dist/mcp/serialize-widget.js.map +1 -1
- package/dist/mcp/testing-loader.d.ts +5 -2
- package/dist/mcp/testing-loader.d.ts.map +1 -1
- package/dist/mcp/testing-loader.js +7 -3
- package/dist/mcp/testing-loader.js.map +1 -1
- package/dist/refresh-runtime.d.ts +2 -1
- package/dist/refresh-runtime.d.ts.map +1 -1
- package/dist/refresh-runtime.js +32 -2
- package/dist/refresh-runtime.js.map +1 -1
- package/dist/settings/schema.d.ts +1 -2
- package/dist/settings/schema.d.ts.map +1 -1
- package/dist/settings/schema.js +1 -1
- package/dist/settings/schema.js.map +1 -1
- package/dist/vite-plugins/asset-extensions.d.ts +2 -1
- package/dist/vite-plugins/asset-extensions.d.ts.map +1 -1
- package/dist/vite-plugins/asset-extensions.js +2 -1
- package/dist/vite-plugins/asset-extensions.js.map +1 -1
- package/dist/vite-plugins/asset-imports.d.ts +4 -0
- package/dist/vite-plugins/asset-imports.d.ts.map +1 -0
- package/dist/vite-plugins/asset-imports.js +88 -0
- package/dist/vite-plugins/asset-imports.js.map +1 -0
- package/dist/vite-plugins/asset-specifier.d.ts +5 -0
- package/dist/vite-plugins/asset-specifier.d.ts.map +1 -0
- package/dist/vite-plugins/asset-specifier.js +7 -0
- package/dist/vite-plugins/asset-specifier.js.map +1 -0
- package/dist/vite-plugins/esm-extension.d.ts +4 -0
- package/dist/vite-plugins/esm-extension.d.ts.map +1 -0
- package/dist/vite-plugins/esm-extension.js +4 -0
- package/dist/vite-plugins/esm-extension.js.map +1 -0
- package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts +1 -3
- package/dist/vite-plugins/fast-refresh/swc-refresh.d.ts.map +1 -1
- package/dist/vite-plugins/fast-refresh/swc-refresh.js +1 -1
- package/dist/vite-plugins/fast-refresh/swc-refresh.js.map +1 -1
- package/dist/vite-plugins/index.d.ts.map +1 -1
- package/dist/vite-plugins/index.js +4 -0
- package/dist/vite-plugins/index.js.map +1 -1
- package/dist/vite-plugins/resource-shared.d.ts +2 -1
- package/dist/vite-plugins/resource-shared.d.ts.map +1 -1
- package/dist/vite-plugins/resource-shared.js +2 -1
- package/dist/vite-plugins/resource-shared.js.map +1 -1
- package/dist/vite-plugins/resources.d.ts.map +1 -1
- package/dist/vite-plugins/resources.js +30 -29
- package/dist/vite-plugins/resources.js.map +1 -1
- package/dist/vite-plugins/self-contained.d.ts +4 -0
- package/dist/vite-plugins/self-contained.d.ts.map +1 -0
- package/dist/vite-plugins/self-contained.js +244 -0
- package/dist/vite-plugins/self-contained.js.map +1 -0
- package/dist/vite-plugins/settings.d.ts.map +1 -1
- package/dist/vite-plugins/settings.js +19 -40
- package/dist/vite-plugins/settings.js.map +1 -1
- package/dist/vite-plugins/store-links.d.ts +4 -0
- package/dist/vite-plugins/store-links.d.ts.map +1 -0
- package/dist/vite-plugins/store-links.js +19 -0
- package/dist/vite-plugins/store-links.js.map +1 -0
- package/dist/vite-plugins/undeclared-library.d.ts.map +1 -1
- package/dist/vite-plugins/undeclared-library.js +51 -12
- package/dist/vite-plugins/undeclared-library.js.map +1 -1
- package/dist/vite-plugins/worker.d.ts.map +1 -1
- package/dist/vite-plugins/worker.js +3 -1
- package/dist/vite-plugins/worker.js.map +1 -1
- package/env.d.ts +106 -25
- package/package.json +20 -13
- package/src/builder.ts +22 -4
- package/src/cli.ts +7 -2
- package/src/codegen/freshness.ts +2 -2
- package/src/codegen/run-codegen.ts +37 -23
- package/src/codegen/store-resolver.ts +1 -1
- package/src/commands/build.ts +5 -6
- package/src/commands/codegen.ts +14 -1
- package/src/commands/deploy.ts +47 -0
- package/src/commands/dev.ts +4 -4
- package/src/commands/docs.ts +39 -4
- package/src/deploy/depends.ts +42 -0
- package/src/deploy/download.ts +148 -0
- package/src/deploy/freedesktop/copyright.ts +41 -0
- package/src/deploy/freedesktop/dbus-service.ts +19 -0
- package/src/deploy/freedesktop/desktop-entry.ts +102 -0
- package/src/deploy/freedesktop/ini.ts +39 -0
- package/src/deploy/freedesktop/metainfo-sections.ts +116 -0
- package/src/deploy/freedesktop/metainfo.ts +46 -0
- package/src/deploy/freedesktop/mime-package.ts +28 -0
- package/src/deploy/freedesktop/validate.ts +124 -0
- package/src/deploy/freedesktop/xml.ts +53 -0
- package/src/deploy/git.ts +20 -0
- package/src/deploy/install-hints.ts +108 -0
- package/src/deploy/nfpm/config.ts +153 -0
- package/src/deploy/nfpm/contents.ts +69 -0
- package/src/deploy/nfpm/description.ts +11 -0
- package/src/deploy/nfpm/optional.ts +8 -0
- package/src/deploy/nfpm/pack.ts +44 -0
- package/src/deploy/node-runtime/download.ts +48 -0
- package/src/deploy/node-runtime/elf.ts +145 -0
- package/src/deploy/node-runtime/guard.ts +29 -0
- package/src/deploy/node-runtime/index.ts +80 -0
- package/src/deploy/payload/copy-tree.ts +51 -0
- package/src/deploy/payload/icons.ts +80 -0
- package/src/deploy/payload/launcher.ts +27 -0
- package/src/deploy/payload/schemas.ts +27 -0
- package/src/deploy/payload/stage.ts +145 -0
- package/src/deploy/registry.ts +40 -0
- package/src/deploy/run-deploy.ts +235 -0
- package/src/deploy/settings/arch.ts +18 -0
- package/src/deploy/settings/categories.ts +39 -0
- package/src/deploy/settings/exec.ts +29 -0
- package/src/deploy/settings/identity.ts +133 -0
- package/src/deploy/settings/index.ts +189 -0
- package/src/deploy/settings/package-manifest.ts +66 -0
- package/src/deploy/settings/paths.ts +115 -0
- package/src/deploy/settings/screenshots.ts +125 -0
- package/src/deploy/settings/starter.ts +41 -0
- package/src/deploy/settings/version.ts +59 -0
- package/src/deploy/targets/appimage.ts +140 -0
- package/src/deploy/targets/deb.ts +6 -0
- package/src/deploy/targets/flatpak-manifest.ts +61 -0
- package/src/deploy/targets/flatpak-prebuilt.ts +59 -0
- package/src/deploy/targets/flatpak-source.ts +168 -0
- package/src/deploy/targets/flatpak-sources.ts +171 -0
- package/src/deploy/targets/flatpak.ts +143 -0
- package/src/deploy/targets/nfpm-target.ts +33 -0
- package/src/deploy/targets/rpm.ts +6 -0
- package/src/deploy/tools.ts +135 -0
- package/src/deploy/types.ts +174 -0
- package/src/deploy/vendored/appimagetool.ts +57 -0
- package/src/deploy/vendored/nfpm.ts +79 -0
- package/src/dev/change-queue.ts +59 -0
- package/src/dev/failure-tracker.ts +92 -0
- package/src/dev/missing-import.ts +32 -0
- package/src/dev/runner-deps.ts +34 -6
- package/src/dev/runner.ts +506 -102
- package/src/dev/supervisor.ts +0 -3
- package/src/dev/vite-dev-server.ts +54 -3
- package/src/internal/entry-arg.ts +25 -11
- package/src/internal/module-loads.ts +32 -0
- package/src/internal/prepare-project.ts +23 -0
- package/src/internal/run-cli-tool.ts +22 -6
- package/src/internal/staging-dir.ts +57 -2
- package/src/mcp/serialize-widget.ts +3 -2
- package/src/mcp/testing-loader.ts +19 -4
- package/src/refresh-runtime.ts +48 -2
- package/src/settings/schema.ts +0 -1
- package/src/vite-plugins/asset-extensions.ts +2 -1
- package/src/vite-plugins/asset-imports.ts +134 -0
- package/src/vite-plugins/asset-specifier.ts +9 -0
- package/src/vite-plugins/esm-extension.ts +4 -0
- package/src/vite-plugins/fast-refresh/swc-refresh.ts +1 -1
- package/src/vite-plugins/index.ts +4 -0
- package/src/vite-plugins/resource-shared.ts +2 -0
- package/src/vite-plugins/resources.ts +33 -33
- package/src/vite-plugins/self-contained.ts +352 -0
- package/src/vite-plugins/settings.ts +21 -48
- package/src/vite-plugins/store-links.ts +25 -0
- package/src/vite-plugins/undeclared-library.ts +74 -12
- package/src/vite-plugins/worker.ts +4 -1
- package/dist/internal.d.ts +0 -3
- package/dist/internal.d.ts.map +0 -1
- package/dist/internal.js +0 -3
- package/dist/internal.js.map +0 -1
- package/src/internal.ts +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatpak-manifest.js","sourceRoot":"","sources":["../../../src/deploy/targets/flatpak-manifest.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeployPayload, DeploySettings } from \"../types.js\";\nimport { optional } from \"../nfpm/optional.js\";\nimport { flatpakPrebuiltModule } from \"./flatpak-prebuilt.js\";\nimport { flatpakSourceModule } from \"./flatpak-source.js\";\nimport { nodeExtensionFor } from \"./flatpak-sources.js\";\n\ntype FlatpakManifest = Record<string, unknown>;\n\nconst DEFAULT_BRANCH = \"stable\";\nconst DEFAULT_RUNTIME = \"org.gnome.Platform\";\nconst DEFAULT_RUNTIME_VERSION = \"50\";\nconst DEFAULT_SDK = \"org.gnome.Sdk\";\nconst DEFAULT_FINISH_ARGS = [\"--share=ipc\", \"--socket=wayland\", \"--socket=fallback-x11\", \"--device=dri\"];\nconst DEFAULT_CLEANUP = [\"/include\", \"/share/pkgconfig\", \"*.la\", \"*.a\"];\n\nconst branchFor = (settings: DeploySettings): string => settings.deploy.flatpak?.branch ?? DEFAULT_BRANCH;\nconst isSourceMode = (settings: DeploySettings): boolean => settings.deploy.flatpak?.mode === \"source\";\n\nconst sdkExtensionsFor = (settings: DeploySettings): string[] => {\n const flatpak = settings.deploy.flatpak ?? {};\n const nodeExtension = isSourceMode(settings) ? [nodeExtensionFor(settings)] : [];\n\n return [...nodeExtension, ...(flatpak.sdkExtensions ?? [])];\n};\n\nconst modulesFor = (payload: DeployPayload): unknown[] => {\n const settings = payload.settings;\n const own = isSourceMode(settings) ? flatpakSourceModule(payload) : flatpakPrebuiltModule(payload);\n\n return [...(settings.deploy.flatpak?.modules ?? []), own];\n};\n\nconst runtimeKeys = (settings: DeploySettings): FlatpakManifest => {\n const flatpak = settings.deploy.flatpak ?? {};\n const extensions = sdkExtensionsFor(settings);\n\n return {\n runtime: flatpak.runtime ?? DEFAULT_RUNTIME,\n \"runtime-version\": flatpak.runtimeVersion ?? DEFAULT_RUNTIME_VERSION,\n sdk: flatpak.sdk ?? DEFAULT_SDK,\n ...optional(\"base\", flatpak.base),\n ...optional(\"base-version\", flatpak.baseVersion),\n ...optional(\"sdk-extensions\", extensions.length === 0 ? undefined : extensions),\n };\n};\n\nconst renderFlatpakManifest = (payload: DeployPayload): FlatpakManifest => {\n const settings = payload.settings;\n const flatpak = settings.deploy.flatpak ?? {};\n\n return {\n id: settings.applicationId,\n ...runtimeKeys(settings),\n command: settings.binaryName,\n \"finish-args\": flatpak.finishArgs ?? DEFAULT_FINISH_ARGS,\n cleanup: flatpak.cleanup ?? DEFAULT_CLEANUP,\n modules: modulesFor(payload),\n };\n};\n\nexport { branchFor, renderFlatpakManifest };\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DeployPayload, DeploySettings } from "../types.js";
|
|
2
|
+
type FlatpakModule = Record<string, unknown>;
|
|
3
|
+
declare const DESTINATION = "${FLATPAK_DEST}";
|
|
4
|
+
declare const validationCommands: (settings: DeploySettings) => string[];
|
|
5
|
+
declare const postInstallCommands: (payload: DeployPayload) => string[];
|
|
6
|
+
declare const flatpakPrebuiltModule: (payload: DeployPayload) => FlatpakModule;
|
|
7
|
+
export { DESTINATION, type FlatpakModule, flatpakPrebuiltModule, postInstallCommands, validationCommands };
|
|
8
|
+
//# sourceMappingURL=flatpak-prebuilt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatpak-prebuilt.d.ts","sourceRoot":"","sources":["../../../src/deploy/targets/flatpak-prebuilt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGjE,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7C,QAAA,MAAM,WAAW,oBAAoB,CAAC;AAItC,QAAA,MAAM,kBAAkB,GAAI,UAAU,cAAc,KAAG,MAAM,EAW5D,CAAC;AAaF,QAAA,MAAM,mBAAmB,GAAI,SAAS,aAAa,KAAG,MAAM,EAGY,CAAC;AAEzE,QAAA,MAAM,qBAAqB,GAAI,SAAS,aAAa,KAAG,aAkBvD,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { optional } from "../nfpm/optional.js";
|
|
2
|
+
const DESTINATION = "${FLATPAK_DEST}";
|
|
3
|
+
const STAGE_SOURCE_PATH = "../../stage";
|
|
4
|
+
const OVERLAY_SOURCE_PATH = "../../overlay/flatpak";
|
|
5
|
+
const validationCommands = (settings) => {
|
|
6
|
+
if (settings.deploy.flatpak?.mode !== "source") {
|
|
7
|
+
return [];
|
|
8
|
+
}
|
|
9
|
+
const metainfo = `${DESTINATION}/share/metainfo/${settings.applicationId}.metainfo.xml`;
|
|
10
|
+
return [
|
|
11
|
+
`desktop-file-validate ${DESTINATION}/share/applications/${settings.applicationId}.desktop`,
|
|
12
|
+
`appstreamcli validate --no-net --explain ${metainfo}`,
|
|
13
|
+
];
|
|
14
|
+
};
|
|
15
|
+
const permissionCommands = (settings) => [
|
|
16
|
+
`chmod 755 ${DESTINATION}/bin/${settings.binaryName} ${DESTINATION}/lib/${settings.binaryName}/node`,
|
|
17
|
+
`find ${DESTINATION}/lib/${settings.binaryName} -name '*.node' -exec chmod 755 {} +`,
|
|
18
|
+
];
|
|
19
|
+
const overlaySources = (payload) => payload.overlays.flatpak.length === 0 ? [] : [{ type: "dir", path: OVERLAY_SOURCE_PATH, dest: "overlay" }];
|
|
20
|
+
const overlayCommands = (payload) => payload.overlays.flatpak.length === 0 ? [] : [`cp -a overlay/. ${DESTINATION}/`];
|
|
21
|
+
const postInstallCommands = (payload) => payload.settings.paths.schemaFiles.length === 0
|
|
22
|
+
? []
|
|
23
|
+
: [`glib-compile-schemas ${DESTINATION}/share/glib-2.0/schemas`];
|
|
24
|
+
const flatpakPrebuiltModule = (payload) => {
|
|
25
|
+
const settings = payload.settings;
|
|
26
|
+
const postInstall = postInstallCommands(payload);
|
|
27
|
+
return {
|
|
28
|
+
name: settings.binaryName,
|
|
29
|
+
buildsystem: "simple",
|
|
30
|
+
"build-options": { strip: false, "no-debuginfo": true },
|
|
31
|
+
sources: [{ type: "dir", path: STAGE_SOURCE_PATH, dest: "stage" }, ...overlaySources(payload)],
|
|
32
|
+
"build-commands": [
|
|
33
|
+
`cp -a stage/. ${DESTINATION}/`,
|
|
34
|
+
...overlayCommands(payload),
|
|
35
|
+
...permissionCommands(settings),
|
|
36
|
+
...(settings.deploy.flatpak?.buildCommands ?? []),
|
|
37
|
+
...validationCommands(settings),
|
|
38
|
+
],
|
|
39
|
+
...optional("post-install", postInstall.length === 0 ? undefined : postInstall),
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
export { DESTINATION, flatpakPrebuiltModule, postInstallCommands, validationCommands };
|
|
43
|
+
//# sourceMappingURL=flatpak-prebuilt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatpak-prebuilt.js","sourceRoot":"","sources":["../../../src/deploy/targets/flatpak-prebuilt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAI/C,MAAM,WAAW,GAAG,iBAAiB,CAAC;AACtC,MAAM,iBAAiB,GAAG,aAAa,CAAC;AACxC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAEpD,MAAM,kBAAkB,GAAG,CAAC,QAAwB,EAAY,EAAE;IAC9D,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7C,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,WAAW,mBAAmB,QAAQ,CAAC,aAAa,eAAe,CAAC;IAExF,OAAO;QACH,yBAAyB,WAAW,uBAAuB,QAAQ,CAAC,aAAa,UAAU;QAC3F,4CAA4C,QAAQ,EAAE;KACzD,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,QAAwB,EAAY,EAAE,CAAC;IAC/D,aAAa,WAAW,QAAQ,QAAQ,CAAC,UAAU,IAAI,WAAW,QAAQ,QAAQ,CAAC,UAAU,OAAO;IACpG,QAAQ,WAAW,QAAQ,QAAQ,CAAC,UAAU,sCAAsC;CACvF,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,OAAsB,EAAmB,EAAE,CAC/D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;AAE/G,MAAM,eAAe,GAAG,CAAC,OAAsB,EAAY,EAAE,CACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,WAAW,GAAG,CAAC,CAAC;AAErF,MAAM,mBAAmB,GAAG,CAAC,OAAsB,EAAY,EAAE,CAC7D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;IAC3C,CAAC,CAAC,EAAE;IACJ,CAAC,CAAC,CAAC,wBAAwB,WAAW,yBAAyB,CAAC,CAAC;AAEzE,MAAM,qBAAqB,GAAG,CAAC,OAAsB,EAAiB,EAAE;IACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAEjD,OAAO;QACH,IAAI,EAAE,QAAQ,CAAC,UAAU;QACzB,WAAW,EAAE,QAAQ;QACrB,eAAe,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE;QACvD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9F,gBAAgB,EAAE;YACd,iBAAiB,WAAW,GAAG;YAC/B,GAAG,eAAe,CAAC,OAAO,CAAC;YAC3B,GAAG,kBAAkB,CAAC,QAAQ,CAAC;YAC/B,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,IAAI,EAAE,CAAC;YACjD,GAAG,kBAAkB,CAAC,QAAQ,CAAC;SAClC;QACD,GAAG,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;KAClF,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,EAAE,WAAW,EAAsB,qBAAqB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC","sourcesContent":["import type { DeployPayload, DeploySettings } from \"../types.js\";\nimport { optional } from \"../nfpm/optional.js\";\n\ntype FlatpakModule = Record<string, unknown>;\n\nconst DESTINATION = \"${FLATPAK_DEST}\";\nconst STAGE_SOURCE_PATH = \"../../stage\";\nconst OVERLAY_SOURCE_PATH = \"../../overlay/flatpak\";\n\nconst validationCommands = (settings: DeploySettings): string[] => {\n if (settings.deploy.flatpak?.mode !== \"source\") {\n return [];\n }\n\n const metainfo = `${DESTINATION}/share/metainfo/${settings.applicationId}.metainfo.xml`;\n\n return [\n `desktop-file-validate ${DESTINATION}/share/applications/${settings.applicationId}.desktop`,\n `appstreamcli validate --no-net --explain ${metainfo}`,\n ];\n};\n\nconst permissionCommands = (settings: DeploySettings): string[] => [\n `chmod 755 ${DESTINATION}/bin/${settings.binaryName} ${DESTINATION}/lib/${settings.binaryName}/node`,\n `find ${DESTINATION}/lib/${settings.binaryName} -name '*.node' -exec chmod 755 {} +`,\n];\n\nconst overlaySources = (payload: DeployPayload): FlatpakModule[] =>\n payload.overlays.flatpak.length === 0 ? [] : [{ type: \"dir\", path: OVERLAY_SOURCE_PATH, dest: \"overlay\" }];\n\nconst overlayCommands = (payload: DeployPayload): string[] =>\n payload.overlays.flatpak.length === 0 ? [] : [`cp -a overlay/. ${DESTINATION}/`];\n\nconst postInstallCommands = (payload: DeployPayload): string[] =>\n payload.settings.paths.schemaFiles.length === 0\n ? []\n : [`glib-compile-schemas ${DESTINATION}/share/glib-2.0/schemas`];\n\nconst flatpakPrebuiltModule = (payload: DeployPayload): FlatpakModule => {\n const settings = payload.settings;\n const postInstall = postInstallCommands(payload);\n\n return {\n name: settings.binaryName,\n buildsystem: \"simple\",\n \"build-options\": { strip: false, \"no-debuginfo\": true },\n sources: [{ type: \"dir\", path: STAGE_SOURCE_PATH, dest: \"stage\" }, ...overlaySources(payload)],\n \"build-commands\": [\n `cp -a stage/. ${DESTINATION}/`,\n ...overlayCommands(payload),\n ...permissionCommands(settings),\n ...(settings.deploy.flatpak?.buildCommands ?? []),\n ...validationCommands(settings),\n ],\n ...optional(\"post-install\", postInstall.length === 0 ? undefined : postInstall),\n };\n};\n\nexport { DESTINATION, type FlatpakModule, flatpakPrebuiltModule, postInstallCommands, validationCommands };\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DeployPayload } from "../types.js";
|
|
2
|
+
import { type FlatpakModule } from "./flatpak-prebuilt.js";
|
|
3
|
+
declare const flatpakSourceModule: (payload: DeployPayload) => FlatpakModule;
|
|
4
|
+
export { flatpakSourceModule };
|
|
5
|
+
//# sourceMappingURL=flatpak-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatpak-source.d.ts","sourceRoot":"","sources":["../../../src/deploy/targets/flatpak-source.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,aAAa,CAAC;AASjE,OAAO,EAAe,KAAK,aAAa,EAA2C,MAAM,uBAAuB,CAAC;AAwHjH,QAAA,MAAM,mBAAmB,GAAI,SAAS,aAAa,KAAG,aAmCrD,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { posix, relative } from "node:path";
|
|
2
|
+
import { listFilesRecursive } from "../../internal/list-files.js";
|
|
3
|
+
import { BUNDLE_FILENAME } from "../../vite-plugins/esm-extension.js";
|
|
4
|
+
import { renderDbusService } from "../freedesktop/dbus-service.js";
|
|
5
|
+
import { renderDesktopEntry } from "../freedesktop/desktop-entry.js";
|
|
6
|
+
import { renderMetainfo } from "../freedesktop/metainfo.js";
|
|
7
|
+
import { optional } from "../nfpm/optional.js";
|
|
8
|
+
import { iconPathFor } from "../payload/icons.js";
|
|
9
|
+
import { renderLauncher } from "../payload/launcher.js";
|
|
10
|
+
import { DESTINATION, postInstallCommands, validationCommands } from "./flatpak-prebuilt.js";
|
|
11
|
+
import { detectPackageManager, GENERATED_SOURCES, installCommandFor, nodeExtensionPathFor, resolveGitSource, } from "./flatpak-sources.js";
|
|
12
|
+
const LAUNCHER_FILENAME = "launcher.sh";
|
|
13
|
+
const MODULE_BUILD_ROOT = "/run/build";
|
|
14
|
+
const RUNTIME_PREFIX = "/app";
|
|
15
|
+
const NPM_CACHE_DIR = "flatpak-node/npm-cache";
|
|
16
|
+
const YARN_MIRROR_DIR = "flatpak-node/yarn-mirror";
|
|
17
|
+
const PLAIN_ARGUMENT = /^[\w./-]+$/;
|
|
18
|
+
const QUOTE_ESCAPE = String.raw `'\''`;
|
|
19
|
+
const inlineSource = (fileName, contents) => ({
|
|
20
|
+
type: "inline",
|
|
21
|
+
"dest-filename": fileName,
|
|
22
|
+
contents,
|
|
23
|
+
});
|
|
24
|
+
const projectRelative = (settings, path) => relative(settings.paths.root, path).replaceAll("\\", "/");
|
|
25
|
+
const shellArgument = (value) => PLAIN_ARGUMENT.test(value) ? value : `'${value.split("'").join(QUOTE_ESCAPE)}'`;
|
|
26
|
+
const pathArgument = (value) => shellArgument(value.startsWith("-") ? `./${value}` : value);
|
|
27
|
+
const installCommand = (source, destination, mode) => `install -D${mode} ${pathArgument(source)} ${destination}`;
|
|
28
|
+
const runtimeInstallCommands = (settings, nodeExtensionPath) => {
|
|
29
|
+
const lib = `${DESTINATION}/lib/${settings.binaryName}`;
|
|
30
|
+
return [
|
|
31
|
+
installCommand(`${nodeExtensionPath}/bin/node`, `${lib}/node`, "m755"),
|
|
32
|
+
installCommand(`dist/${BUNDLE_FILENAME}`, `${lib}/${BUNDLE_FILENAME}`, "m644"),
|
|
33
|
+
installCommand("dist/gtkx.node", `${lib}/gtkx.node`, "m755"),
|
|
34
|
+
"test ! -f dist/gtkx.gresource || " + installCommand("dist/gtkx.gresource", `${lib}/gtkx.gresource`, "m644"),
|
|
35
|
+
"test ! -f dist/gschemas.compiled || " +
|
|
36
|
+
installCommand("dist/gschemas.compiled", `${lib}/gschemas.compiled`, "m644"),
|
|
37
|
+
`test ! -d dist/assets || cp -a dist/assets ${lib}/assets`,
|
|
38
|
+
installCommand(LAUNCHER_FILENAME, `${DESTINATION}/bin/${settings.binaryName}`, "m755"),
|
|
39
|
+
];
|
|
40
|
+
};
|
|
41
|
+
const activationSource = (settings) => settings.isDbusActivatable
|
|
42
|
+
? [inlineSource(`${settings.applicationId}.service`, renderDbusService(settings, RUNTIME_PREFIX))]
|
|
43
|
+
: [];
|
|
44
|
+
const activationInstallCommands = (settings) => settings.isDbusActivatable
|
|
45
|
+
? [installCommand(`${settings.applicationId}.service`, `${DESTINATION}/share/dbus-1/services/${settings.applicationId}.service`, "m644")]
|
|
46
|
+
: [];
|
|
47
|
+
const metadataInstallCommands = (settings) => [
|
|
48
|
+
installCommand(`${settings.applicationId}.desktop`, `${DESTINATION}/share/applications/${settings.applicationId}.desktop`, "m644"),
|
|
49
|
+
installCommand(`${settings.applicationId}.metainfo.xml`, `${DESTINATION}/share/metainfo/${settings.applicationId}.metainfo.xml`, "m644"),
|
|
50
|
+
...activationInstallCommands(settings),
|
|
51
|
+
];
|
|
52
|
+
const schemaInstallCommands = (settings) => settings.paths.schemaFiles.map((file) => {
|
|
53
|
+
const name = posix.basename(file);
|
|
54
|
+
return installCommand(projectRelative(settings, file), `${DESTINATION}/share/glib-2.0/schemas/${shellArgument(name)}`, "m644");
|
|
55
|
+
});
|
|
56
|
+
const iconInstallCommand = (settings, source, rel) => installCommand(projectRelative(settings, source), `${DESTINATION}/share/icons/${shellArgument(rel.replaceAll("\\", "/"))}`, "m644");
|
|
57
|
+
const iconInstallCommands = (settings) => {
|
|
58
|
+
const { iconsDir, iconFile } = settings.paths;
|
|
59
|
+
if (iconFile !== null) {
|
|
60
|
+
return [iconInstallCommand(settings, iconFile, iconPathFor(settings, iconFile))];
|
|
61
|
+
}
|
|
62
|
+
if (iconsDir === null) {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
return listFilesRecursive(iconsDir).map((icon) => iconInstallCommand(settings, icon.absPath, icon.rel));
|
|
66
|
+
};
|
|
67
|
+
const offlineEnvFor = (manager, settings) => {
|
|
68
|
+
const moduleDir = `${MODULE_BUILD_ROOT}/${settings.binaryName}`;
|
|
69
|
+
if (manager === "yarn") {
|
|
70
|
+
return { YARN_OFFLINE_MIRROR: `${moduleDir}/${YARN_MIRROR_DIR}` };
|
|
71
|
+
}
|
|
72
|
+
return { npm_config_cache: `${moduleDir}/${NPM_CACHE_DIR}`, npm_config_offline: "true" };
|
|
73
|
+
};
|
|
74
|
+
const flatpakSourceModule = (payload) => {
|
|
75
|
+
const settings = payload.settings;
|
|
76
|
+
const manager = detectPackageManager(settings);
|
|
77
|
+
const postInstall = postInstallCommands(payload);
|
|
78
|
+
const nodeExtensionPath = nodeExtensionPathFor(settings);
|
|
79
|
+
return {
|
|
80
|
+
name: settings.binaryName,
|
|
81
|
+
buildsystem: "simple",
|
|
82
|
+
"build-options": {
|
|
83
|
+
"append-path": `${nodeExtensionPath}/bin`,
|
|
84
|
+
env: { npm_config_nodedir: nodeExtensionPath, ...offlineEnvFor(manager, settings) },
|
|
85
|
+
strip: false,
|
|
86
|
+
"no-debuginfo": true,
|
|
87
|
+
},
|
|
88
|
+
sources: [
|
|
89
|
+
resolveGitSource(settings),
|
|
90
|
+
GENERATED_SOURCES,
|
|
91
|
+
inlineSource(`${settings.applicationId}.desktop`, renderDesktopEntry(settings)),
|
|
92
|
+
inlineSource(`${settings.applicationId}.metainfo.xml`, renderMetainfo(settings)),
|
|
93
|
+
inlineSource(LAUNCHER_FILENAME, renderLauncher(settings)),
|
|
94
|
+
...activationSource(settings),
|
|
95
|
+
],
|
|
96
|
+
"build-commands": [
|
|
97
|
+
installCommandFor(manager),
|
|
98
|
+
"npx gtkx build",
|
|
99
|
+
...runtimeInstallCommands(settings, nodeExtensionPath),
|
|
100
|
+
...metadataInstallCommands(settings),
|
|
101
|
+
...schemaInstallCommands(settings),
|
|
102
|
+
...iconInstallCommands(settings),
|
|
103
|
+
...(settings.deploy.flatpak?.buildCommands ?? []),
|
|
104
|
+
...validationCommands(settings),
|
|
105
|
+
],
|
|
106
|
+
...optional("post-install", postInstall.length === 0 ? undefined : postInstall),
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
export { flatpakSourceModule };
|
|
110
|
+
//# sourceMappingURL=flatpak-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatpak-source.js","sourceRoot":"","sources":["../../../src/deploy/targets/flatpak-source.ts"],"names":[],"mappings":"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","sourcesContent":["import { posix, relative } from \"node:path\";\nimport type { DeployPayload, DeploySettings } from \"../types.js\";\nimport { listFilesRecursive } from \"../../internal/list-files.js\";\nimport { BUNDLE_FILENAME } from \"../../vite-plugins/esm-extension.js\";\nimport { renderDbusService } from \"../freedesktop/dbus-service.js\";\nimport { renderDesktopEntry } from \"../freedesktop/desktop-entry.js\";\nimport { renderMetainfo } from \"../freedesktop/metainfo.js\";\nimport { optional } from \"../nfpm/optional.js\";\nimport { iconPathFor } from \"../payload/icons.js\";\nimport { renderLauncher } from \"../payload/launcher.js\";\nimport { DESTINATION, type FlatpakModule, postInstallCommands, validationCommands } from \"./flatpak-prebuilt.js\";\nimport {\n detectPackageManager,\n GENERATED_SOURCES,\n installCommandFor,\n nodeExtensionPathFor,\n type PackageManager,\n resolveGitSource,\n} from \"./flatpak-sources.js\";\n\nconst LAUNCHER_FILENAME = \"launcher.sh\";\nconst MODULE_BUILD_ROOT = \"/run/build\";\nconst RUNTIME_PREFIX = \"/app\";\nconst NPM_CACHE_DIR = \"flatpak-node/npm-cache\";\nconst YARN_MIRROR_DIR = \"flatpak-node/yarn-mirror\";\nconst PLAIN_ARGUMENT = /^[\\w./-]+$/;\nconst QUOTE_ESCAPE = String.raw`'\\''`;\n\nconst inlineSource = (fileName: string, contents: string): FlatpakModule => ({\n type: \"inline\",\n \"dest-filename\": fileName,\n contents,\n});\n\nconst projectRelative = (settings: DeploySettings, path: string): string =>\n relative(settings.paths.root, path).replaceAll(\"\\\\\", \"/\");\n\nconst shellArgument = (value: string): string =>\n PLAIN_ARGUMENT.test(value) ? value : `'${value.split(\"'\").join(QUOTE_ESCAPE)}'`;\n\nconst pathArgument = (value: string): string => shellArgument(value.startsWith(\"-\") ? `./${value}` : value);\n\nconst installCommand = (source: string, destination: string, mode: string): string =>\n `install -D${mode} ${pathArgument(source)} ${destination}`;\n\nconst runtimeInstallCommands = (settings: DeploySettings, nodeExtensionPath: string): string[] => {\n const lib = `${DESTINATION}/lib/${settings.binaryName}`;\n\n return [\n installCommand(`${nodeExtensionPath}/bin/node`, `${lib}/node`, \"m755\"),\n installCommand(`dist/${BUNDLE_FILENAME}`, `${lib}/${BUNDLE_FILENAME}`, \"m644\"),\n installCommand(\"dist/gtkx.node\", `${lib}/gtkx.node`, \"m755\"),\n \"test ! -f dist/gtkx.gresource || \" + installCommand(\"dist/gtkx.gresource\", `${lib}/gtkx.gresource`, \"m644\"),\n \"test ! -f dist/gschemas.compiled || \" +\n installCommand(\"dist/gschemas.compiled\", `${lib}/gschemas.compiled`, \"m644\"),\n `test ! -d dist/assets || cp -a dist/assets ${lib}/assets`,\n installCommand(LAUNCHER_FILENAME, `${DESTINATION}/bin/${settings.binaryName}`, \"m755\"),\n ];\n};\n\nconst activationSource = (settings: DeploySettings): FlatpakModule[] =>\n settings.isDbusActivatable\n ? [inlineSource(`${settings.applicationId}.service`, renderDbusService(settings, RUNTIME_PREFIX))]\n : [];\n\nconst activationInstallCommands = (settings: DeploySettings): string[] =>\n settings.isDbusActivatable\n ? [installCommand(\n `${settings.applicationId}.service`,\n `${DESTINATION}/share/dbus-1/services/${settings.applicationId}.service`,\n \"m644\",\n )]\n : [];\n\nconst metadataInstallCommands = (settings: DeploySettings): string[] => [\n installCommand(\n `${settings.applicationId}.desktop`,\n `${DESTINATION}/share/applications/${settings.applicationId}.desktop`,\n \"m644\",\n ),\n installCommand(\n `${settings.applicationId}.metainfo.xml`,\n `${DESTINATION}/share/metainfo/${settings.applicationId}.metainfo.xml`,\n \"m644\",\n ),\n ...activationInstallCommands(settings),\n];\n\nconst schemaInstallCommands = (settings: DeploySettings): string[] =>\n settings.paths.schemaFiles.map((file) => {\n const name = posix.basename(file);\n\n return installCommand(\n projectRelative(settings, file),\n `${DESTINATION}/share/glib-2.0/schemas/${shellArgument(name)}`,\n \"m644\",\n );\n });\n\nconst iconInstallCommand = (settings: DeploySettings, source: string, rel: string): string =>\n installCommand(\n projectRelative(settings, source),\n `${DESTINATION}/share/icons/${shellArgument(rel.replaceAll(\"\\\\\", \"/\"))}`,\n \"m644\",\n );\n\nconst iconInstallCommands = (settings: DeploySettings): string[] => {\n const { iconsDir, iconFile } = settings.paths;\n\n if (iconFile !== null) {\n return [iconInstallCommand(settings, iconFile, iconPathFor(settings, iconFile))];\n }\n\n if (iconsDir === null) {\n return [];\n }\n\n return listFilesRecursive(iconsDir).map((icon) => iconInstallCommand(settings, icon.absPath, icon.rel));\n};\n\nconst offlineEnvFor = (manager: PackageManager, settings: DeploySettings): Record<string, string> => {\n const moduleDir = `${MODULE_BUILD_ROOT}/${settings.binaryName}`;\n\n if (manager === \"yarn\") {\n return { YARN_OFFLINE_MIRROR: `${moduleDir}/${YARN_MIRROR_DIR}` };\n }\n\n return { npm_config_cache: `${moduleDir}/${NPM_CACHE_DIR}`, npm_config_offline: \"true\" };\n};\n\nconst flatpakSourceModule = (payload: DeployPayload): FlatpakModule => {\n const settings = payload.settings;\n const manager = detectPackageManager(settings);\n const postInstall = postInstallCommands(payload);\n const nodeExtensionPath = nodeExtensionPathFor(settings);\n\n return {\n name: settings.binaryName,\n buildsystem: \"simple\",\n \"build-options\": {\n \"append-path\": `${nodeExtensionPath}/bin`,\n env: { npm_config_nodedir: nodeExtensionPath, ...offlineEnvFor(manager, settings) },\n strip: false,\n \"no-debuginfo\": true,\n },\n sources: [\n resolveGitSource(settings),\n GENERATED_SOURCES,\n inlineSource(`${settings.applicationId}.desktop`, renderDesktopEntry(settings)),\n inlineSource(`${settings.applicationId}.metainfo.xml`, renderMetainfo(settings)),\n inlineSource(LAUNCHER_FILENAME, renderLauncher(settings)),\n ...activationSource(settings),\n ],\n \"build-commands\": [\n installCommandFor(manager),\n \"npx gtkx build\",\n ...runtimeInstallCommands(settings, nodeExtensionPath),\n ...metadataInstallCommands(settings),\n ...schemaInstallCommands(settings),\n ...iconInstallCommands(settings),\n ...(settings.deploy.flatpak?.buildCommands ?? []),\n ...validationCommands(settings),\n ],\n ...optional(\"post-install\", postInstall.length === 0 ? undefined : postInstall),\n };\n};\n\nexport { flatpakSourceModule };\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { DeploySettings } from "../types.js";
|
|
2
|
+
type PackageManager = "npm" | "pnpm" | "yarn";
|
|
3
|
+
type GitSource = {
|
|
4
|
+
type: "git";
|
|
5
|
+
url: string;
|
|
6
|
+
tag?: string;
|
|
7
|
+
commit?: string;
|
|
8
|
+
};
|
|
9
|
+
declare const GENERATED_SOURCES = "generated-sources.json";
|
|
10
|
+
declare const detectPackageManager: (settings: DeploySettings) => PackageManager;
|
|
11
|
+
declare const installCommandFor: (manager: PackageManager) => string;
|
|
12
|
+
declare const nodeExtensionFor: (settings: DeploySettings) => string;
|
|
13
|
+
declare const nodeExtensionPathFor: (settings: DeploySettings) => string;
|
|
14
|
+
declare const resolveGitSource: (settings: DeploySettings) => GitSource;
|
|
15
|
+
declare const generateNodeSources: (settings: DeploySettings, manager: PackageManager) => void;
|
|
16
|
+
export { detectPackageManager, GENERATED_SOURCES, generateNodeSources, installCommandFor, nodeExtensionFor, nodeExtensionPathFor, type PackageManager, resolveGitSource, };
|
|
17
|
+
//# sourceMappingURL=flatpak-sources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatpak-sources.d.ts","sourceRoot":"","sources":["../../../src/deploy/targets/flatpak-sources.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD,KAAK,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9C,KAAK,SAAS,GAAG;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAOF,QAAA,MAAM,iBAAiB,2BAA2B,CAAC;AAmBnD,QAAA,MAAM,oBAAoB,GAAI,UAAU,cAAc,KAAG,cAkBxD,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAI,SAAS,cAAc,KAAG,MAAkC,CAAC;AAExF,QAAA,MAAM,gBAAgB,GAAI,UAAU,cAAc,KAAG,MACe,CAAC;AAErE,QAAA,MAAM,oBAAoB,GAAI,UAAU,cAAc,KAAG,MAWxD,CAAC;AA0CF,QAAA,MAAM,gBAAgB,GAAI,UAAU,cAAc,KAAG,SAInD,CAAC;AAoBH,QAAA,MAAM,mBAAmB,GAAI,UAAU,cAAc,EAAE,SAAS,cAAc,KAAG,IAgBhF,CAAC;AAEF,OAAO,EACH,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,cAAc,EACnB,gBAAgB,GACnB,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { copyFileSync, existsSync, mkdirSync, mkdtempSync, rmSync } from "node:fs";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { basename, dirname, join } from "node:path";
|
|
4
|
+
import { runCliTool } from "../../internal/run-cli-tool.js";
|
|
5
|
+
import { gitRemoteUrl, runGit } from "../git.js";
|
|
6
|
+
import { optional } from "../nfpm/optional.js";
|
|
7
|
+
const GENERATED_SOURCES = "generated-sources.json";
|
|
8
|
+
const GENERATOR = "flatpak-node-generator";
|
|
9
|
+
const FETCHABLE_URL = /^https?:\/\//;
|
|
10
|
+
const DEFAULT_NODE_EXTENSION = "org.freedesktop.Sdk.Extension.node24";
|
|
11
|
+
const NODE_EXTENSION_PREFIX = "org.freedesktop.Sdk.Extension.";
|
|
12
|
+
const SDK_EXTENSION_ROOT = "/usr/lib/sdk";
|
|
13
|
+
const LOCKFILE_BY_MANAGER = {
|
|
14
|
+
npm: "package-lock.json",
|
|
15
|
+
pnpm: "pnpm-lock.yaml",
|
|
16
|
+
yarn: "yarn.lock",
|
|
17
|
+
};
|
|
18
|
+
const INSTALL_COMMAND = {
|
|
19
|
+
npm: "npm ci --offline",
|
|
20
|
+
pnpm: "pnpm install --offline --frozen-lockfile",
|
|
21
|
+
yarn: "yarn install --offline",
|
|
22
|
+
};
|
|
23
|
+
const detectPackageManager = (settings) => {
|
|
24
|
+
const configured = settings.deploy.flatpak?.packageManager;
|
|
25
|
+
if (configured !== undefined) {
|
|
26
|
+
return configured;
|
|
27
|
+
}
|
|
28
|
+
const found = ["pnpm", "yarn", "npm"]
|
|
29
|
+
.find((manager) => existsSync(join(settings.paths.root, LOCKFILE_BY_MANAGER[manager])));
|
|
30
|
+
if (found === undefined) {
|
|
31
|
+
throw new Error("Cannot build a Flathub-ready manifest without a lockfile: the sandbox installs dependencies offline. " +
|
|
32
|
+
"Commit a package-lock.json, pnpm-lock.yaml, or yarn.lock, or set `deploy.flatpak.packageManager`.");
|
|
33
|
+
}
|
|
34
|
+
return found;
|
|
35
|
+
};
|
|
36
|
+
const installCommandFor = (manager) => INSTALL_COMMAND[manager];
|
|
37
|
+
const nodeExtensionFor = (settings) => settings.deploy.flatpak?.nodeExtension ?? DEFAULT_NODE_EXTENSION;
|
|
38
|
+
const nodeExtensionPathFor = (settings) => {
|
|
39
|
+
const extension = nodeExtensionFor(settings);
|
|
40
|
+
if (!extension.startsWith(NODE_EXTENSION_PREFIX)) {
|
|
41
|
+
throw new Error(`Cannot resolve where "${extension}" mounts: the sandbox installs Node SDK extensions under ` +
|
|
42
|
+
`${SDK_EXTENSION_ROOT}, so \`deploy.flatpak.nodeExtension\` has to be an ${NODE_EXTENSION_PREFIX}* id.`);
|
|
43
|
+
}
|
|
44
|
+
return `${SDK_EXTENSION_ROOT}/${extension.slice(NODE_EXTENSION_PREFIX.length)}`;
|
|
45
|
+
};
|
|
46
|
+
const resolveSourceUrl = (settings) => {
|
|
47
|
+
const url = settings.deploy.flatpak?.source?.url ?? gitRemoteUrl(settings.paths.root);
|
|
48
|
+
if (url === null) {
|
|
49
|
+
throw new Error("Cannot build a Flathub-ready manifest without a public source: Flathub builds from a fetchable " +
|
|
50
|
+
"repository, not from your working tree. Set `deploy.flatpak.source.url`.");
|
|
51
|
+
}
|
|
52
|
+
if (!FETCHABLE_URL.test(url)) {
|
|
53
|
+
throw new Error(`Cannot build a Flathub-ready manifest from "${url}": Flathub's builders clone over HTTPS and have no ` +
|
|
54
|
+
"credentials, so an SSH remote never resolves there. Set `deploy.flatpak.source.url` to the " +
|
|
55
|
+
"repository's https:// URL.");
|
|
56
|
+
}
|
|
57
|
+
return url;
|
|
58
|
+
};
|
|
59
|
+
const configuredRevision = (settings) => {
|
|
60
|
+
const source = settings.deploy.flatpak?.source ?? {};
|
|
61
|
+
if (source.commit !== undefined) {
|
|
62
|
+
return { ...optional("tag", source.tag), commit: source.commit };
|
|
63
|
+
}
|
|
64
|
+
return source.tag === undefined ? null : { tag: source.tag };
|
|
65
|
+
};
|
|
66
|
+
const workingTreeRevision = (settings) => {
|
|
67
|
+
const root = settings.paths.root;
|
|
68
|
+
return {
|
|
69
|
+
...optional("tag", runGit(root, ["describe", "--tags", "--exact-match"]) ?? undefined),
|
|
70
|
+
...optional("commit", runGit(root, ["rev-parse", "HEAD"]) ?? undefined),
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
const resolveGitSource = (settings) => ({
|
|
74
|
+
type: "git",
|
|
75
|
+
url: resolveSourceUrl(settings),
|
|
76
|
+
...(configuredRevision(settings) ?? workingTreeRevision(settings)),
|
|
77
|
+
});
|
|
78
|
+
const generatedSourcesPath = (settings) => join(settings.paths.targets, "flatpak", GENERATED_SOURCES);
|
|
79
|
+
const isolateLockfile = (root, lockfile) => {
|
|
80
|
+
const source = join(root, lockfile);
|
|
81
|
+
if (!existsSync(source)) {
|
|
82
|
+
throw new Error(`Cannot vendor the offline sources: no ${lockfile} under ${root}`);
|
|
83
|
+
}
|
|
84
|
+
const manifest = join(dirname(source), "package.json");
|
|
85
|
+
const dir = mkdtempSync(join(tmpdir(), "gtkx-lockfile-"));
|
|
86
|
+
copyFileSync(existsSync(manifest) ? manifest : join(root, "package.json"), join(dir, "package.json"));
|
|
87
|
+
copyFileSync(source, join(dir, basename(lockfile)));
|
|
88
|
+
return dir;
|
|
89
|
+
};
|
|
90
|
+
const generateNodeSources = (settings, manager) => {
|
|
91
|
+
const lockfile = settings.deploy.flatpak?.lockfile ?? LOCKFILE_BY_MANAGER[manager];
|
|
92
|
+
const output = generatedSourcesPath(settings);
|
|
93
|
+
mkdirSync(dirname(output), { recursive: true });
|
|
94
|
+
const isolated = isolateLockfile(settings.paths.root, lockfile);
|
|
95
|
+
try {
|
|
96
|
+
runCliTool({
|
|
97
|
+
tool: GENERATOR,
|
|
98
|
+
args: [manager, join(isolated, basename(lockfile)), "-o", output],
|
|
99
|
+
target: "the offline npm sources",
|
|
100
|
+
shouldStream: true,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
rmSync(isolated, { recursive: true, force: true, maxRetries: 5 });
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
export { detectPackageManager, GENERATED_SOURCES, generateNodeSources, installCommandFor, nodeExtensionFor, nodeExtensionPathFor, resolveGitSource, };
|
|
108
|
+
//# sourceMappingURL=flatpak-sources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatpak-sources.js","sourceRoot":"","sources":["../../../src/deploy/targets/flatpak-sources.ts"],"names":[],"mappings":"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","sourcesContent":["import { copyFileSync, existsSync, mkdirSync, mkdtempSync, rmSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { basename, dirname, join } from \"node:path\";\nimport type { DeploySettings } from \"../types.js\";\nimport { runCliTool } from \"../../internal/run-cli-tool.js\";\nimport { gitRemoteUrl, runGit } from \"../git.js\";\nimport { optional } from \"../nfpm/optional.js\";\n\ntype PackageManager = \"npm\" | \"pnpm\" | \"yarn\";\n\ntype GitSource = {\n type: \"git\";\n url: string;\n tag?: string;\n commit?: string;\n};\n\ntype GitRevision = {\n tag?: string;\n commit?: string;\n};\n\nconst GENERATED_SOURCES = \"generated-sources.json\";\nconst GENERATOR = \"flatpak-node-generator\";\nconst FETCHABLE_URL = /^https?:\\/\\//;\nconst DEFAULT_NODE_EXTENSION = \"org.freedesktop.Sdk.Extension.node24\";\nconst NODE_EXTENSION_PREFIX = \"org.freedesktop.Sdk.Extension.\";\nconst SDK_EXTENSION_ROOT = \"/usr/lib/sdk\";\n\nconst LOCKFILE_BY_MANAGER: Record<PackageManager, string> = {\n npm: \"package-lock.json\",\n pnpm: \"pnpm-lock.yaml\",\n yarn: \"yarn.lock\",\n};\n\nconst INSTALL_COMMAND: Record<PackageManager, string> = {\n npm: \"npm ci --offline\",\n pnpm: \"pnpm install --offline --frozen-lockfile\",\n yarn: \"yarn install --offline\",\n};\n\nconst detectPackageManager = (settings: DeploySettings): PackageManager => {\n const configured = settings.deploy.flatpak?.packageManager;\n\n if (configured !== undefined) {\n return configured;\n }\n\n const found = ([\"pnpm\", \"yarn\", \"npm\"] as const)\n .find((manager) => existsSync(join(settings.paths.root, LOCKFILE_BY_MANAGER[manager])));\n\n if (found === undefined) {\n throw new Error(\n \"Cannot build a Flathub-ready manifest without a lockfile: the sandbox installs dependencies offline. \" +\n \"Commit a package-lock.json, pnpm-lock.yaml, or yarn.lock, or set `deploy.flatpak.packageManager`.\",\n );\n }\n\n return found;\n};\n\nconst installCommandFor = (manager: PackageManager): string => INSTALL_COMMAND[manager];\n\nconst nodeExtensionFor = (settings: DeploySettings): string =>\n settings.deploy.flatpak?.nodeExtension ?? DEFAULT_NODE_EXTENSION;\n\nconst nodeExtensionPathFor = (settings: DeploySettings): string => {\n const extension = nodeExtensionFor(settings);\n\n if (!extension.startsWith(NODE_EXTENSION_PREFIX)) {\n throw new Error(\n `Cannot resolve where \"${extension}\" mounts: the sandbox installs Node SDK extensions under ` +\n `${SDK_EXTENSION_ROOT}, so \\`deploy.flatpak.nodeExtension\\` has to be an ${NODE_EXTENSION_PREFIX}* id.`,\n );\n }\n\n return `${SDK_EXTENSION_ROOT}/${extension.slice(NODE_EXTENSION_PREFIX.length)}`;\n};\n\nconst resolveSourceUrl = (settings: DeploySettings): string => {\n const url = settings.deploy.flatpak?.source?.url ?? gitRemoteUrl(settings.paths.root);\n\n if (url === null) {\n throw new Error(\n \"Cannot build a Flathub-ready manifest without a public source: Flathub builds from a fetchable \" +\n \"repository, not from your working tree. Set `deploy.flatpak.source.url`.\",\n );\n }\n\n if (!FETCHABLE_URL.test(url)) {\n throw new Error(\n `Cannot build a Flathub-ready manifest from \"${url}\": Flathub's builders clone over HTTPS and have no ` +\n \"credentials, so an SSH remote never resolves there. Set `deploy.flatpak.source.url` to the \" +\n \"repository's https:// URL.\",\n );\n }\n\n return url;\n};\n\nconst configuredRevision = (settings: DeploySettings): GitRevision | null => {\n const source = settings.deploy.flatpak?.source ?? {};\n\n if (source.commit !== undefined) {\n return { ...optional(\"tag\", source.tag), commit: source.commit };\n }\n\n return source.tag === undefined ? null : { tag: source.tag };\n};\n\nconst workingTreeRevision = (settings: DeploySettings): GitRevision => {\n const root = settings.paths.root;\n\n return {\n ...optional(\"tag\", runGit(root, [\"describe\", \"--tags\", \"--exact-match\"]) ?? undefined),\n ...optional(\"commit\", runGit(root, [\"rev-parse\", \"HEAD\"]) ?? undefined),\n };\n};\n\nconst resolveGitSource = (settings: DeploySettings): GitSource => ({\n type: \"git\",\n url: resolveSourceUrl(settings),\n ...(configuredRevision(settings) ?? workingTreeRevision(settings)),\n});\n\nconst generatedSourcesPath = (settings: DeploySettings): string =>\n join(settings.paths.targets, \"flatpak\", GENERATED_SOURCES);\n\nconst isolateLockfile = (root: string, lockfile: string): string => {\n const source = join(root, lockfile);\n\n if (!existsSync(source)) {\n throw new Error(`Cannot vendor the offline sources: no ${lockfile} under ${root}`);\n }\n\n const manifest = join(dirname(source), \"package.json\");\n const dir = mkdtempSync(join(tmpdir(), \"gtkx-lockfile-\"));\n copyFileSync(existsSync(manifest) ? manifest : join(root, \"package.json\"), join(dir, \"package.json\"));\n copyFileSync(source, join(dir, basename(lockfile)));\n\n return dir;\n};\n\nconst generateNodeSources = (settings: DeploySettings, manager: PackageManager): void => {\n const lockfile = settings.deploy.flatpak?.lockfile ?? LOCKFILE_BY_MANAGER[manager];\n const output = generatedSourcesPath(settings);\n mkdirSync(dirname(output), { recursive: true });\n const isolated = isolateLockfile(settings.paths.root, lockfile);\n\n try {\n runCliTool({\n tool: GENERATOR,\n args: [manager, join(isolated, basename(lockfile)), \"-o\", output],\n target: \"the offline npm sources\",\n shouldStream: true,\n });\n } finally {\n rmSync(isolated, { recursive: true, force: true, maxRetries: 5 });\n }\n};\n\nexport {\n detectPackageManager,\n GENERATED_SOURCES,\n generateNodeSources,\n installCommandFor,\n nodeExtensionFor,\n nodeExtensionPathFor,\n type PackageManager,\n resolveGitSource,\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatpak.d.ts","sourceRoot":"","sources":["../../../src/deploy/targets/flatpak.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAiE,YAAY,EAAE,MAAM,aAAa,CAAC;AAgB/G,QAAA,MAAM,aAAa,EAAE,YAMpB,CAAC;AAoHF,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { errorMessage, info, tryResolveExecutable } from "@gtkx/utils";
|
|
2
|
+
import { existsSync, mkdirSync, statSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { stringify } from "yaml";
|
|
5
|
+
import { runCliTool } from "../../internal/run-cli-tool.js";
|
|
6
|
+
import { APPSTREAMCLI, DESKTOP_FILE_VALIDATE, FLATPAK, FLATPAK_BUILDER } from "../tools.js";
|
|
7
|
+
import { branchFor, renderFlatpakManifest } from "./flatpak-manifest.js";
|
|
8
|
+
import { detectPackageManager, generateNodeSources } from "./flatpak-sources.js";
|
|
9
|
+
const PREFIX = "/app";
|
|
10
|
+
const TARGET_DIR = "flatpak";
|
|
11
|
+
const FLATHUB_REPO = "https://dl.flathub.org/repo/flathub.flatpakrepo";
|
|
12
|
+
const BUILDER_REF = "org.flatpak.Builder";
|
|
13
|
+
const flatpakTarget = {
|
|
14
|
+
name: "flatpak",
|
|
15
|
+
prefix: PREFIX,
|
|
16
|
+
tools: [FLATPAK, FLATPAK_BUILDER, DESKTOP_FILE_VALIDATE, APPSTREAMCLI],
|
|
17
|
+
render: (payload) => renderManifests(payload),
|
|
18
|
+
pack: (payload) => Promise.try(() => packFlatpak(payload)),
|
|
19
|
+
};
|
|
20
|
+
const flatpakDir = (settings) => join(settings.paths.targets, TARGET_DIR);
|
|
21
|
+
const manifestPathFor = (settings) => join(flatpakDir(settings), `${settings.applicationId}.yml`);
|
|
22
|
+
const resolveBuilder = () => {
|
|
23
|
+
if (tryResolveExecutable(FLATPAK_BUILDER.command) !== undefined) {
|
|
24
|
+
return { tool: FLATPAK_BUILDER.command, prefix: [] };
|
|
25
|
+
}
|
|
26
|
+
return { tool: FLATPAK.command, prefix: ["run", BUILDER_REF] };
|
|
27
|
+
};
|
|
28
|
+
const isSourceMode = (settings) => settings.deploy.flatpak?.mode === "source";
|
|
29
|
+
const renderManifests = (payload) => {
|
|
30
|
+
const settings = payload.settings;
|
|
31
|
+
if (isSourceMode(settings)) {
|
|
32
|
+
generateNodeSources(settings, detectPackageManager(settings));
|
|
33
|
+
}
|
|
34
|
+
return [{
|
|
35
|
+
path: manifestPathFor(settings),
|
|
36
|
+
contents: stringify(renderFlatpakManifest(payload), { lineWidth: 0 }),
|
|
37
|
+
}];
|
|
38
|
+
};
|
|
39
|
+
const builderArgsFor = (settings, dir) => [
|
|
40
|
+
"--force-clean",
|
|
41
|
+
"--user",
|
|
42
|
+
"--install-deps-from=flathub",
|
|
43
|
+
`--default-branch=${branchFor(settings)}`,
|
|
44
|
+
...(settings.deploy.flatpak?.shouldUseRofilesFuse === false ? ["--disable-rofiles-fuse"] : []),
|
|
45
|
+
`--state-dir=${join(dir, "state")}`,
|
|
46
|
+
`--repo=${join(dir, "repo")}`,
|
|
47
|
+
join(dir, "build"),
|
|
48
|
+
manifestPathFor(settings),
|
|
49
|
+
];
|
|
50
|
+
const buildFlatpak = (settings) => {
|
|
51
|
+
const dir = flatpakDir(settings);
|
|
52
|
+
const builder = resolveBuilder();
|
|
53
|
+
info("flatpak: running flatpak-builder, this can take several minutes");
|
|
54
|
+
try {
|
|
55
|
+
runCliTool({
|
|
56
|
+
tool: builder.tool,
|
|
57
|
+
args: [...builder.prefix, ...builderArgsFor(settings, dir)],
|
|
58
|
+
target: "the flatpak",
|
|
59
|
+
shouldStream: true,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
throw new Error(`${errorMessage(error)}\n\nIf it stopped at "Failure spawning rofiles-fuse", the build is running ` +
|
|
64
|
+
"somewhere FUSE is unavailable, such as a container. Set `deploy.flatpak.shouldUseRofilesFuse: false` " +
|
|
65
|
+
"to build without it.", { cause: error });
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const bundleArgsFor = (settings, target) => {
|
|
69
|
+
const signing = settings.deploy.signing?.flatpak;
|
|
70
|
+
const runtimeRepo = settings.deploy.flatpak?.runtimeRepo ?? FLATHUB_REPO;
|
|
71
|
+
return [
|
|
72
|
+
"build-bundle",
|
|
73
|
+
join(flatpakDir(settings), "repo"),
|
|
74
|
+
target,
|
|
75
|
+
settings.applicationId,
|
|
76
|
+
branchFor(settings),
|
|
77
|
+
`--arch=${settings.arch.flatpak}`,
|
|
78
|
+
`--runtime-repo=${runtimeRepo}`,
|
|
79
|
+
...(signing === undefined ? [] : [`--gpg-sign=${signing.gpgKeyId}`]),
|
|
80
|
+
...(signing?.gpgHomeDir === undefined ? [] : [`--gpg-homedir=${signing.gpgHomeDir}`]),
|
|
81
|
+
];
|
|
82
|
+
};
|
|
83
|
+
const bundleFlatpak = (settings) => {
|
|
84
|
+
const output = settings.paths.output;
|
|
85
|
+
mkdirSync(output, { recursive: true });
|
|
86
|
+
const version = settings.versions.packageVersion;
|
|
87
|
+
const target = join(output, `${settings.applicationId}-${version}-${settings.arch.flatpak}.flatpak`);
|
|
88
|
+
runCliTool({ tool: FLATPAK.command, args: bundleArgsFor(settings, target), target: "the flatpak bundle" });
|
|
89
|
+
if (!existsSync(target)) {
|
|
90
|
+
throw new Error(`flatpak build-bundle reported success but wrote no bundle at ${target}`);
|
|
91
|
+
}
|
|
92
|
+
return { path: target, size: statSync(target).size };
|
|
93
|
+
};
|
|
94
|
+
const installFlatpak = (settings) => {
|
|
95
|
+
runCliTool({
|
|
96
|
+
tool: FLATPAK.command,
|
|
97
|
+
args: ["install", "--user", "--noninteractive", "--reinstall", join(flatpakDir(settings), "repo"),
|
|
98
|
+
settings.applicationId],
|
|
99
|
+
target: "the flatpak",
|
|
100
|
+
shouldStream: true,
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
const packFlatpak = (payload) => {
|
|
104
|
+
const settings = payload.settings;
|
|
105
|
+
buildFlatpak(settings);
|
|
106
|
+
if (settings.deploy.flatpak?.shouldInstall === true) {
|
|
107
|
+
installFlatpak(settings);
|
|
108
|
+
}
|
|
109
|
+
return settings.deploy.flatpak?.shouldEmitBundle === false ? [] : [bundleFlatpak(settings)];
|
|
110
|
+
};
|
|
111
|
+
export { flatpakTarget };
|
|
112
|
+
//# sourceMappingURL=flatpak.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatpak.js","sourceRoot":"","sources":["../../../src/deploy/targets/flatpak.ts"],"names":[],"mappings":"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","sourcesContent":["import { errorMessage, info, tryResolveExecutable } from \"@gtkx/utils\";\nimport { existsSync, mkdirSync, statSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { stringify } from \"yaml\";\nimport type { DeployArtifact, DeployManifest, DeployPayload, DeploySettings, DeployTarget } from \"../types.js\";\nimport { runCliTool } from \"../../internal/run-cli-tool.js\";\nimport { APPSTREAMCLI, DESKTOP_FILE_VALIDATE, FLATPAK, FLATPAK_BUILDER } from \"../tools.js\";\nimport { branchFor, renderFlatpakManifest } from \"./flatpak-manifest.js\";\nimport { detectPackageManager, generateNodeSources } from \"./flatpak-sources.js\";\n\ntype BuilderInvocation = {\n tool: string;\n prefix: string[];\n};\n\nconst PREFIX = \"/app\";\nconst TARGET_DIR = \"flatpak\";\nconst FLATHUB_REPO = \"https://dl.flathub.org/repo/flathub.flatpakrepo\";\nconst BUILDER_REF = \"org.flatpak.Builder\";\n\nconst flatpakTarget: DeployTarget = {\n name: \"flatpak\",\n prefix: PREFIX,\n tools: [FLATPAK, FLATPAK_BUILDER, DESKTOP_FILE_VALIDATE, APPSTREAMCLI],\n render: (payload) => renderManifests(payload),\n pack: (payload) => Promise.try(() => packFlatpak(payload)),\n};\n\nconst flatpakDir = (settings: DeploySettings): string => join(settings.paths.targets, TARGET_DIR);\n\nconst manifestPathFor = (settings: DeploySettings): string =>\n join(flatpakDir(settings), `${settings.applicationId}.yml`);\n\nconst resolveBuilder = (): BuilderInvocation => {\n if (tryResolveExecutable(FLATPAK_BUILDER.command) !== undefined) {\n return { tool: FLATPAK_BUILDER.command, prefix: [] };\n }\n\n return { tool: FLATPAK.command, prefix: [\"run\", BUILDER_REF] };\n};\n\nconst isSourceMode = (settings: DeploySettings): boolean => settings.deploy.flatpak?.mode === \"source\";\n\nconst renderManifests = (payload: DeployPayload): DeployManifest[] => {\n const settings = payload.settings;\n\n if (isSourceMode(settings)) {\n generateNodeSources(settings, detectPackageManager(settings));\n }\n\n return [{\n path: manifestPathFor(settings),\n contents: stringify(renderFlatpakManifest(payload), { lineWidth: 0 }),\n }];\n};\n\nconst builderArgsFor = (settings: DeploySettings, dir: string): string[] => [\n \"--force-clean\",\n \"--user\",\n \"--install-deps-from=flathub\",\n `--default-branch=${branchFor(settings)}`,\n ...(settings.deploy.flatpak?.shouldUseRofilesFuse === false ? [\"--disable-rofiles-fuse\"] : []),\n `--state-dir=${join(dir, \"state\")}`,\n `--repo=${join(dir, \"repo\")}`,\n join(dir, \"build\"),\n manifestPathFor(settings),\n];\n\nconst buildFlatpak = (settings: DeploySettings): void => {\n const dir = flatpakDir(settings);\n const builder = resolveBuilder();\n info(\"flatpak: running flatpak-builder, this can take several minutes\");\n\n try {\n runCliTool({\n tool: builder.tool,\n args: [...builder.prefix, ...builderArgsFor(settings, dir)],\n target: \"the flatpak\",\n shouldStream: true,\n });\n } catch (error) {\n throw new Error(\n `${errorMessage(error)}\\n\\nIf it stopped at \"Failure spawning rofiles-fuse\", the build is running ` +\n \"somewhere FUSE is unavailable, such as a container. Set `deploy.flatpak.shouldUseRofilesFuse: false` \" +\n \"to build without it.\",\n { cause: error },\n );\n }\n};\n\nconst bundleArgsFor = (settings: DeploySettings, target: string): string[] => {\n const signing = settings.deploy.signing?.flatpak;\n const runtimeRepo = settings.deploy.flatpak?.runtimeRepo ?? FLATHUB_REPO;\n\n return [\n \"build-bundle\",\n join(flatpakDir(settings), \"repo\"),\n target,\n settings.applicationId,\n branchFor(settings),\n `--arch=${settings.arch.flatpak}`,\n `--runtime-repo=${runtimeRepo}`,\n ...(signing === undefined ? [] : [`--gpg-sign=${signing.gpgKeyId}`]),\n ...(signing?.gpgHomeDir === undefined ? [] : [`--gpg-homedir=${signing.gpgHomeDir}`]),\n ];\n};\n\nconst bundleFlatpak = (settings: DeploySettings): DeployArtifact => {\n const output = settings.paths.output;\n mkdirSync(output, { recursive: true });\n const version = settings.versions.packageVersion;\n const target = join(output, `${settings.applicationId}-${version}-${settings.arch.flatpak}.flatpak`);\n runCliTool({ tool: FLATPAK.command, args: bundleArgsFor(settings, target), target: \"the flatpak bundle\" });\n\n if (!existsSync(target)) {\n throw new Error(`flatpak build-bundle reported success but wrote no bundle at ${target}`);\n }\n\n return { path: target, size: statSync(target).size };\n};\n\nconst installFlatpak = (settings: DeploySettings): void => {\n runCliTool({\n tool: FLATPAK.command,\n args: [\"install\", \"--user\", \"--noninteractive\", \"--reinstall\", join(flatpakDir(settings), \"repo\"),\n settings.applicationId],\n target: \"the flatpak\",\n shouldStream: true,\n });\n};\n\nconst packFlatpak = (payload: DeployPayload): DeployArtifact[] => {\n const settings = payload.settings;\n buildFlatpak(settings);\n\n if (settings.deploy.flatpak?.shouldInstall === true) {\n installFlatpak(settings);\n }\n\n return settings.deploy.flatpak?.shouldEmitBundle === false ? [] : [bundleFlatpak(settings)];\n};\n\nexport { flatpakTarget };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nfpm-target.d.ts","sourceRoot":"","sources":["../../../src/deploy/targets/nfpm-target.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiD,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AAqBxE,QAAA,MAAM,UAAU,GAAI,UAAU,YAAY,KAAG,YAM3C,CAAC;AAEH,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { stringify } from "yaml";
|
|
3
|
+
import { renderNfpmConfig } from "../nfpm/config.js";
|
|
4
|
+
import { packWithNfpm } from "../nfpm/pack.js";
|
|
5
|
+
import { TAR } from "../tools.js";
|
|
6
|
+
const MANIFEST_FILENAME = "nfpm.yaml";
|
|
7
|
+
const PREFIX = "/usr";
|
|
8
|
+
const manifestPathFor = (payload, packager) => join(payload.settings.paths.targets, packager, MANIFEST_FILENAME);
|
|
9
|
+
const renderManifests = (payload, packager) => [
|
|
10
|
+
{
|
|
11
|
+
path: manifestPathFor(payload, packager),
|
|
12
|
+
contents: stringify(renderNfpmConfig(payload, packager), { lineWidth: 0 }),
|
|
13
|
+
},
|
|
14
|
+
];
|
|
15
|
+
const packPackage = async (payload, packager) => [
|
|
16
|
+
await packWithNfpm(payload, packager, manifestPathFor(payload, packager)),
|
|
17
|
+
];
|
|
18
|
+
const nfpmTarget = (packager) => ({
|
|
19
|
+
name: packager,
|
|
20
|
+
prefix: PREFIX,
|
|
21
|
+
tools: [TAR],
|
|
22
|
+
render: (payload) => renderManifests(payload, packager),
|
|
23
|
+
pack: (payload) => packPackage(payload, packager),
|
|
24
|
+
});
|
|
25
|
+
export { nfpmTarget };
|
|
26
|
+
//# sourceMappingURL=nfpm-target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nfpm-target.js","sourceRoot":"","sources":["../../../src/deploy/targets/nfpm-target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,EAAqB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,MAAM,iBAAiB,GAAG,WAAW,CAAC;AACtC,MAAM,MAAM,GAAG,MAAM,CAAC;AAEtB,MAAM,eAAe,GAAG,CAAC,OAAsB,EAAE,QAAsB,EAAU,EAAE,CAC/E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAEtE,MAAM,eAAe,GAAG,CAAC,OAAsB,EAAE,QAAsB,EAAoB,EAAE,CAAC;IAC1F;QACI,IAAI,EAAE,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC;QACxC,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;KAC7E;CACJ,CAAC;AAEF,MAAM,WAAW,GAAG,KAAK,EAAE,OAAsB,EAAE,QAAsB,EAA6B,EAAE,CAAC;IACrG,MAAM,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;CAC5E,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,QAAsB,EAAgB,EAAE,CAAC,CAAC;IAC1D,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,CAAC,GAAG,CAAC;IACZ,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC;IACvD,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC;CACpD,CAAC,CAAC;AAEH,OAAO,EAAE,UAAU,EAAE,CAAC","sourcesContent":["import { join } from \"node:path\";\nimport { stringify } from \"yaml\";\nimport type { DeployArtifact, DeployManifest, DeployPayload, DeployTarget } from \"../types.js\";\nimport { type NfpmPackager, renderNfpmConfig } from \"../nfpm/config.js\";\nimport { packWithNfpm } from \"../nfpm/pack.js\";\nimport { TAR } from \"../tools.js\";\n\nconst MANIFEST_FILENAME = \"nfpm.yaml\";\nconst PREFIX = \"/usr\";\n\nconst manifestPathFor = (payload: DeployPayload, packager: NfpmPackager): string =>\n join(payload.settings.paths.targets, packager, MANIFEST_FILENAME);\n\nconst renderManifests = (payload: DeployPayload, packager: NfpmPackager): DeployManifest[] => [\n {\n path: manifestPathFor(payload, packager),\n contents: stringify(renderNfpmConfig(payload, packager), { lineWidth: 0 }),\n },\n];\n\nconst packPackage = async (payload: DeployPayload, packager: NfpmPackager): Promise<DeployArtifact[]> => [\n await packWithNfpm(payload, packager, manifestPathFor(payload, packager)),\n];\n\nconst nfpmTarget = (packager: NfpmPackager): DeployTarget => ({\n name: packager,\n prefix: PREFIX,\n tools: [TAR],\n render: (payload) => renderManifests(payload, packager),\n pack: (payload) => packPackage(payload, packager),\n});\n\nexport { nfpmTarget };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpm.d.ts","sourceRoot":"","sources":["../../../src/deploy/targets/rpm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,QAAA,MAAM,SAAS,EAAE,YAAgC,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpm.js","sourceRoot":"","sources":["../../../src/deploy/targets/rpm.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,SAAS,GAAiB,UAAU,CAAC,KAAK,CAAC,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,CAAC","sourcesContent":["import type { DeployTarget } from \"../types.js\";\nimport { nfpmTarget } from \"./nfpm-target.js\";\n\nconst rpmTarget: DeployTarget = nfpmTarget(\"rpm\");\n\nexport { rpmTarget };\n"]}
|