opkg 0.6.1 → 0.7.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 +109 -186
- package/assets/openpackage_ascii_dark.png +0 -0
- package/assets/openpackage_ascii_light.png +0 -0
- package/dist/commands/add.js +34 -10
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/apply.js +16 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/delete.js +1 -1
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/install.js +177 -8
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/list.js +2 -2
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.js +1 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +1 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/new.js +125 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/pack.js +7 -13
- package/dist/commands/pack.js.map +1 -1
- package/dist/commands/pull.js +1 -1
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.js +1 -1
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/remove.js +63 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/save.js +11 -17
- package/dist/commands/save.js.map +1 -1
- package/dist/commands/set.js +33 -0
- package/dist/commands/set.js.map +1 -0
- package/dist/commands/show.js +16 -94
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/status.js +26 -701
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/uninstall.js +14 -427
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/constants/index.js +72 -16
- package/dist/constants/index.js.map +1 -1
- package/dist/core/add/add-conflict-handler.js +1 -8
- package/dist/core/add/add-conflict-handler.js.map +1 -1
- package/dist/core/add/add-pipeline.js +12 -10
- package/dist/core/add/add-pipeline.js.map +1 -1
- package/dist/core/add/add-to-source-pipeline.js +123 -0
- package/dist/core/add/add-to-source-pipeline.js.map +1 -0
- package/dist/core/add/package-index-updater.js +77 -78
- package/dist/core/add/package-index-updater.js.map +1 -1
- package/dist/core/add/platform-path-transformer.js +6 -4
- package/dist/core/add/platform-path-transformer.js.map +1 -1
- package/dist/core/add/source-collector.js +2 -3
- package/dist/core/add/source-collector.js.map +1 -1
- package/dist/core/apply/apply-pipeline.js +110 -0
- package/dist/core/apply/apply-pipeline.js.map +1 -0
- package/dist/core/dependency-resolver.js +263 -21
- package/dist/core/dependency-resolver.js.map +1 -1
- package/dist/core/discovery/file-discovery.js +1 -2
- package/dist/core/discovery/file-discovery.js.map +1 -1
- package/dist/core/discovery/platform-files-discovery.js +33 -18
- package/dist/core/discovery/platform-files-discovery.js.map +1 -1
- package/dist/core/flows/flow-executor.js +974 -0
- package/dist/core/flows/flow-executor.js.map +1 -0
- package/dist/core/flows/flow-inverter.js +442 -0
- package/dist/core/flows/flow-inverter.js.map +1 -0
- package/dist/core/flows/flow-key-extractor.js +101 -0
- package/dist/core/flows/flow-key-extractor.js.map +1 -0
- package/dist/core/flows/flow-key-mapper.js +382 -0
- package/dist/core/flows/flow-key-mapper.js.map +1 -0
- package/dist/core/flows/flow-transforms.js +632 -0
- package/dist/core/flows/flow-transforms.js.map +1 -0
- package/dist/core/flows/map-pipeline/context.js +73 -0
- package/dist/core/flows/map-pipeline/context.js.map +1 -0
- package/dist/core/flows/map-pipeline/index.js +156 -0
- package/dist/core/flows/map-pipeline/index.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/copy.js +104 -0
- package/dist/core/flows/map-pipeline/operations/copy.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/pipe.js +70 -0
- package/dist/core/flows/map-pipeline/operations/pipe.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/rename.js +102 -0
- package/dist/core/flows/map-pipeline/operations/rename.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/set.js +50 -0
- package/dist/core/flows/map-pipeline/operations/set.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/switch.js +79 -0
- package/dist/core/flows/map-pipeline/operations/switch.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/transform.js +543 -0
- package/dist/core/flows/map-pipeline/operations/transform.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/unset.js +65 -0
- package/dist/core/flows/map-pipeline/operations/unset.js.map +1 -0
- package/dist/core/flows/map-pipeline/types.js +8 -0
- package/dist/core/flows/map-pipeline/types.js.map +1 -0
- package/dist/core/flows/map-pipeline/utils.js +278 -0
- package/dist/core/flows/map-pipeline/utils.js.map +1 -0
- package/dist/core/flows/platform-converter.js +328 -0
- package/dist/core/flows/platform-converter.js.map +1 -0
- package/dist/core/flows/source-resolver.js +192 -0
- package/dist/core/flows/source-resolver.js.map +1 -0
- package/dist/core/flows/toml-domain-transforms.js +23 -0
- package/dist/core/flows/toml-domain-transforms.js.map +1 -0
- package/dist/core/install/bulk-install-pipeline.js +68 -7
- package/dist/core/install/bulk-install-pipeline.js.map +1 -1
- package/dist/core/install/canonical-plan.js +3 -3
- package/dist/core/install/canonical-plan.js.map +1 -1
- package/dist/core/install/dry-run.js +3 -3
- package/dist/core/install/dry-run.js.map +1 -1
- package/dist/core/install/flow-based-installer.js +1158 -0
- package/dist/core/install/flow-based-installer.js.map +1 -0
- package/dist/core/install/flow-workspace-tracker.js +111 -0
- package/dist/core/install/flow-workspace-tracker.js.map +1 -0
- package/dist/core/install/format-detector.js +228 -0
- package/dist/core/install/format-detector.js.map +1 -0
- package/dist/core/install/git-package-loader.js +20 -0
- package/dist/core/install/git-package-loader.js.map +1 -0
- package/dist/core/install/install-errors.js +1 -1
- package/dist/core/install/install-errors.js.map +1 -1
- package/dist/core/install/install-flow.js +34 -14
- package/dist/core/install/install-flow.js.map +1 -1
- package/dist/core/install/install-pipeline.js +52 -17
- package/dist/core/install/install-pipeline.js.map +1 -1
- package/dist/core/install/install-reporting.js +26 -8
- package/dist/core/install/install-reporting.js.map +1 -1
- package/dist/core/install/local-source-resolution.js +103 -0
- package/dist/core/install/local-source-resolution.js.map +1 -0
- package/dist/core/install/marketplace-handler.js +221 -0
- package/dist/core/install/marketplace-handler.js.map +1 -0
- package/dist/core/install/path-install-pipeline.js +241 -0
- package/dist/core/install/path-install-pipeline.js.map +1 -0
- package/dist/core/install/path-package-loader.js +116 -0
- package/dist/core/install/path-package-loader.js.map +1 -0
- package/dist/core/install/plugin-detector.js +72 -0
- package/dist/core/install/plugin-detector.js.map +1 -0
- package/dist/core/install/plugin-to-universal-converter.js +218 -0
- package/dist/core/install/plugin-to-universal-converter.js.map +1 -0
- package/dist/core/install/plugin-transformer.js +191 -0
- package/dist/core/install/plugin-transformer.js.map +1 -0
- package/dist/core/install/version-selection.js +1 -1
- package/dist/core/install/version-selection.js.map +1 -1
- package/dist/core/openpackage.js +40 -22
- package/dist/core/openpackage.js.map +1 -1
- package/dist/core/pack/pack-output.js +62 -0
- package/dist/core/pack/pack-output.js.map +1 -0
- package/dist/core/pack/pack-pipeline.js +186 -0
- package/dist/core/pack/pack-pipeline.js.map +1 -0
- package/dist/core/package-context.js +45 -70
- package/dist/core/package-context.js.map +1 -1
- package/dist/core/package-creation.js +203 -0
- package/dist/core/package-creation.js.map +1 -0
- package/dist/core/package.js +20 -6
- package/dist/core/package.js.map +1 -1
- package/dist/core/platforms.js +665 -209
- package/dist/core/platforms.js.map +1 -1
- package/dist/core/push/push-context.js +1 -1
- package/dist/core/push/push-context.js.map +1 -1
- package/dist/core/push/push-upload.js +2 -2
- package/dist/core/push/push-upload.js.map +1 -1
- package/dist/core/registry.js +6 -6
- package/dist/core/registry.js.map +1 -1
- package/dist/core/remote-pull.js +2 -2
- package/dist/core/remote-pull.js.map +1 -1
- package/dist/core/remove/removal-collector.js +52 -0
- package/dist/core/remove/removal-collector.js.map +1 -0
- package/dist/core/remove/removal-confirmation.js +39 -0
- package/dist/core/remove/removal-confirmation.js.map +1 -0
- package/dist/core/remove/remove-from-source-pipeline.js +173 -0
- package/dist/core/remove/remove-from-source-pipeline.js.map +1 -0
- package/dist/core/save/constants.js +3 -3
- package/dist/core/save/constants.js.map +1 -1
- package/dist/core/save/flow-based-saver.js +270 -0
- package/dist/core/save/flow-based-saver.js.map +1 -0
- package/dist/core/save/name-resolution.js +1 -1
- package/dist/core/save/name-resolution.js.map +1 -1
- package/dist/core/save/package-yml-generator.js +4 -5
- package/dist/core/save/package-yml-generator.js.map +1 -1
- package/dist/core/save/save-candidate-builder.js +215 -0
- package/dist/core/save/save-candidate-builder.js.map +1 -0
- package/dist/core/save/save-candidate-loader.js +12 -11
- package/dist/core/save/save-candidate-loader.js.map +1 -1
- package/dist/core/save/save-conflict-analyzer.js +150 -0
- package/dist/core/save/save-conflict-analyzer.js.map +1 -0
- package/dist/core/save/save-conflict-resolution.js +28 -14
- package/dist/core/save/save-conflict-resolution.js.map +1 -1
- package/dist/core/save/save-conflict-resolver.js +31 -275
- package/dist/core/save/save-conflict-resolver.js.map +1 -1
- package/dist/core/save/save-group-builder.js +52 -0
- package/dist/core/save/save-group-builder.js.map +1 -0
- package/dist/core/save/save-interactive-resolver.js +190 -0
- package/dist/core/save/save-interactive-resolver.js.map +1 -0
- package/dist/core/save/save-pipeline.js +58 -34
- package/dist/core/save/save-pipeline.js.map +1 -1
- package/dist/core/save/save-platform-handler.js +53 -0
- package/dist/core/save/save-platform-handler.js.map +1 -0
- package/dist/core/save/save-resolution-executor.js +145 -0
- package/dist/core/save/save-resolution-executor.js.map +1 -0
- package/dist/core/save/save-result-reporter.js +167 -0
- package/dist/core/save/save-result-reporter.js.map +1 -0
- package/dist/core/save/save-to-source-pipeline.js +154 -0
- package/dist/core/save/save-to-source-pipeline.js.map +1 -0
- package/dist/core/save/save-versioning.js +4 -4
- package/dist/core/save/save-versioning.js.map +1 -1
- package/dist/core/save/save-write-coordinator.js +204 -0
- package/dist/core/save/save-write-coordinator.js.map +1 -0
- package/dist/core/save/save-yml-resolution.js +28 -216
- package/dist/core/save/save-yml-resolution.js.map +1 -1
- package/dist/core/save/workspace-rename.js +7 -8
- package/dist/core/save/workspace-rename.js.map +1 -1
- package/dist/core/set/set-output.js +72 -0
- package/dist/core/set/set-output.js.map +1 -0
- package/dist/core/set/set-pipeline.js +361 -0
- package/dist/core/set/set-pipeline.js.map +1 -0
- package/dist/core/set/set-types.js +5 -0
- package/dist/core/set/set-types.js.map +1 -0
- package/dist/core/show/package-resolver.js +257 -0
- package/dist/core/show/package-resolver.js.map +1 -0
- package/dist/core/show/scope-discovery.js +165 -0
- package/dist/core/show/scope-discovery.js.map +1 -0
- package/dist/core/show/show-output.js +168 -0
- package/dist/core/show/show-output.js.map +1 -0
- package/dist/core/show/show-pipeline.js +113 -0
- package/dist/core/show/show-pipeline.js.map +1 -0
- package/dist/core/show/show-types.js +5 -0
- package/dist/core/show/show-types.js.map +1 -0
- package/dist/core/source-resolution/dependency-graph.js +104 -0
- package/dist/core/source-resolution/dependency-graph.js.map +1 -0
- package/dist/core/source-resolution/resolve-mutable-source.js +109 -0
- package/dist/core/source-resolution/resolve-mutable-source.js.map +1 -0
- package/dist/core/source-resolution/resolve-package-source.js +29 -0
- package/dist/core/source-resolution/resolve-package-source.js.map +1 -0
- package/dist/core/source-resolution/resolve-registry-version.js +35 -0
- package/dist/core/source-resolution/resolve-registry-version.js.map +1 -0
- package/dist/core/source-resolution/types.js.map +1 -0
- package/dist/core/status/status-file-discovery.js +23 -12
- package/dist/core/status/status-file-discovery.js.map +1 -1
- package/dist/core/status/status-pipeline.js +134 -0
- package/dist/core/status/status-pipeline.js.map +1 -0
- package/dist/core/sync/platform-sync-summary.js +27 -0
- package/dist/core/sync/platform-sync-summary.js.map +1 -0
- package/dist/core/uninstall/flow-aware-uninstaller.js +189 -0
- package/dist/core/uninstall/flow-aware-uninstaller.js.map +1 -0
- package/dist/core/uninstall/uninstall-file-discovery.js +11 -6
- package/dist/core/uninstall/uninstall-file-discovery.js.map +1 -1
- package/dist/core/uninstall/uninstall-pipeline.js +141 -0
- package/dist/core/uninstall/uninstall-pipeline.js.map +1 -0
- package/dist/core/universal-patterns.js +64 -0
- package/dist/core/universal-patterns.js.map +1 -0
- package/dist/index.js +99 -6
- package/dist/index.js.map +1 -1
- package/dist/types/flows.js +8 -0
- package/dist/types/flows.js.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/platform-flows.js +8 -0
- package/dist/types/platform-flows.js.map +1 -0
- package/dist/types/workspace-index.js +6 -0
- package/dist/types/workspace-index.js.map +1 -0
- package/dist/utils/custom-path-resolution.js +160 -0
- package/dist/utils/custom-path-resolution.js.map +1 -0
- package/dist/utils/dependency-coverage.js +1 -1
- package/dist/utils/dependency-coverage.js.map +1 -1
- package/dist/utils/file-processing.js +1 -1
- package/dist/utils/flow-index-installer.js +209 -0
- package/dist/utils/flow-index-installer.js.map +1 -0
- package/dist/utils/formatters.js +47 -1
- package/dist/utils/formatters.js.map +1 -1
- package/dist/utils/fs.js +17 -0
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/git-clone-registry.js +88 -0
- package/dist/utils/git-clone-registry.js.map +1 -0
- package/dist/utils/git-clone.js +69 -0
- package/dist/utils/git-clone.js.map +1 -0
- package/dist/utils/git-spec.js +96 -0
- package/dist/utils/git-spec.js.map +1 -0
- package/dist/utils/http-client.js +7 -0
- package/dist/utils/http-client.js.map +1 -1
- package/dist/utils/index-based-installer.js +356 -163
- package/dist/utils/index-based-installer.js.map +1 -1
- package/dist/utils/install-conflict-handler.js +2 -2
- package/dist/utils/install-conflict-handler.js.map +1 -1
- package/dist/utils/install-file-discovery.js +18 -13
- package/dist/utils/install-file-discovery.js.map +1 -1
- package/dist/utils/install-helpers.js +43 -20
- package/dist/utils/install-helpers.js.map +1 -1
- package/dist/utils/jsonc.js +23 -1
- package/dist/utils/jsonc.js.map +1 -1
- package/dist/utils/manifest-paths.js +1 -1
- package/dist/utils/manifest-paths.js.map +1 -1
- package/dist/utils/markdown-frontmatter.js +46 -0
- package/dist/utils/markdown-frontmatter.js.map +1 -1
- package/dist/utils/package-copy.js +5 -103
- package/dist/utils/package-copy.js.map +1 -1
- package/dist/utils/package-filters.js +9 -105
- package/dist/utils/package-filters.js.map +1 -1
- package/dist/utils/package-index-yml.js +27 -6
- package/dist/utils/package-index-yml.js.map +1 -1
- package/dist/utils/package-input.js +98 -0
- package/dist/utils/package-input.js.map +1 -0
- package/dist/utils/package-management.js +80 -28
- package/dist/utils/package-management.js.map +1 -1
- package/dist/utils/package-name-resolution.js +327 -0
- package/dist/utils/package-name-resolution.js.map +1 -0
- package/dist/utils/package-name.js +18 -16
- package/dist/utils/package-name.js.map +1 -1
- package/dist/utils/package-versioning.js +2 -33
- package/dist/utils/package-versioning.js.map +1 -1
- package/dist/utils/package-yml.js +19 -28
- package/dist/utils/package-yml.js.map +1 -1
- package/dist/utils/path-resolution.js +102 -0
- package/dist/utils/path-resolution.js.map +1 -0
- package/dist/utils/paths.js +6 -6
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/platform-file.js +36 -24
- package/dist/utils/platform-file.js.map +1 -1
- package/dist/utils/platform-mapper.js +222 -68
- package/dist/utils/platform-mapper.js.map +1 -1
- package/dist/utils/platform-root-files.js +44 -0
- package/dist/utils/platform-root-files.js.map +1 -0
- package/dist/utils/platform-utils.js +35 -54
- package/dist/utils/platform-utils.js.map +1 -1
- package/dist/utils/platform-yaml-merge.js +20 -140
- package/dist/utils/platform-yaml-merge.js.map +1 -1
- package/dist/utils/prompts.js +92 -7
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/registry-entry-filter.js +50 -27
- package/dist/utils/registry-entry-filter.js.map +1 -1
- package/dist/utils/registry-paths.js +5 -4
- package/dist/utils/registry-paths.js.map +1 -1
- package/dist/utils/scope-resolution.js +156 -0
- package/dist/utils/scope-resolution.js.map +1 -0
- package/dist/utils/source-mutability.js +15 -0
- package/dist/utils/source-mutability.js.map +1 -0
- package/dist/utils/tarball.js +29 -4
- package/dist/utils/tarball.js.map +1 -1
- package/dist/utils/version-ranges.js +1 -32
- package/dist/utils/version-ranges.js.map +1 -1
- package/dist/utils/workspace-index-helpers.js +28 -0
- package/dist/utils/workspace-index-helpers.js.map +1 -0
- package/dist/utils/workspace-index-ownership.js +100 -0
- package/dist/utils/workspace-index-ownership.js.map +1 -0
- package/dist/utils/workspace-index-yml.js +173 -0
- package/dist/utils/workspace-index-yml.js.map +1 -0
- package/examples/custom-subdirs-platform.jsonc +157 -0
- package/package.json +7 -2
- package/platforms.jsonc +531 -84
- package/schemas/map-pipeline-v1.json +256 -0
- package/schemas/platforms-v1.json +400 -0
- package/specs/README.md +88 -0
- package/specs/add/README.md +166 -0
- package/specs/agents-claude.md +570 -0
- package/specs/agents-opencode.md +622 -0
- package/specs/apply/README.md +21 -0
- package/specs/apply/apply-behavior.md +58 -0
- package/specs/apply/apply-command.md +51 -0
- package/specs/apply/conflicts.md +41 -0
- package/specs/apply/index-effects.md +81 -0
- package/specs/architecture.md +107 -0
- package/specs/auth/README.md +17 -0
- package/specs/auth/auth-http-contract.md +25 -0
- package/specs/auth/cli/credentials.md +39 -0
- package/specs/auth/cli/login.md +32 -0
- package/specs/auth/cli/logout.md +16 -0
- package/specs/claude-mcp.md +1065 -0
- package/specs/claude-plugins-marketplace.md +363 -0
- package/specs/claude-plugins.md +413 -0
- package/specs/cli-options.md +52 -0
- package/specs/codex-mcp.md +114 -0
- package/specs/commands-overview.md +175 -0
- package/specs/directory-layout.md +95 -0
- package/specs/install/README.md +12 -4
- package/specs/install/git-sources.md +230 -0
- package/specs/install/install-behavior.md +483 -73
- package/specs/install/package-yml-canonical.md +67 -35
- package/specs/install/version-resolution.md +69 -115
- package/specs/new/README.md +769 -0
- package/specs/new/SUMMARY.md +310 -0
- package/specs/new/scope-behavior.md +793 -0
- package/specs/pack/README.md +77 -0
- package/specs/pack/package-name-resolution.md +330 -0
- package/specs/package/README.md +18 -17
- package/specs/package/nested-packages-and-parent-packages.md +32 -31
- package/specs/package/package-index-yml.md +95 -101
- package/specs/package/package-root-layout.md +64 -46
- package/specs/package/registry-payload-and-copy.md +50 -44
- package/specs/package/universal-content.md +33 -56
- package/specs/package-sources.md +248 -0
- package/specs/platforms/README.md +52 -0
- package/specs/platforms/configuration.md +571 -0
- package/specs/platforms/detection.md +552 -0
- package/specs/platforms/directory-layout.md +599 -0
- package/specs/platforms/examples.md +1146 -0
- package/specs/platforms/flow-reference.md +1240 -0
- package/specs/platforms/flows.md +1488 -0
- package/specs/platforms/map-pipeline.md +801 -0
- package/specs/platforms/overview.md +349 -0
- package/specs/platforms/specification.md +700 -0
- package/specs/platforms/troubleshooting.md +697 -0
- package/specs/platforms/universal-converter.md +520 -0
- package/specs/push/README.md +1 -0
- package/specs/push/push-behavior.md +11 -3
- package/specs/push/push-remote-upload.md +1 -1
- package/specs/push/push-scoping.md +1 -1
- package/specs/push/push-version-selection.md +1 -1
- package/specs/registry.md +111 -0
- package/specs/remove/README.md +257 -0
- package/specs/save/README.md +21 -17
- package/specs/save/save-conflict-resolution.md +205 -83
- package/specs/save/save-file-discovery.md +6 -4
- package/specs/save/save-frontmatter-overrides.md +11 -15
- package/specs/save/save-modes-inputs.md +9 -39
- package/specs/save/save-naming-scoping.md +4 -4
- package/specs/save/save-package-detection.md +13 -13
- package/specs/save/save-registry-sync.md +16 -106
- package/specs/save/save-versioning.md +80 -0
- package/specs/scope-management.md +92 -0
- package/specs/set/README.md +520 -0
- package/specs/set/set-behavior.md +563 -0
- package/specs/show/README.md +483 -0
- package/specs/show/show-remote.md +494 -0
- package/specs/status/README.md +38 -0
- package/specs/uninstall/README.md +231 -0
- package/dist/commands/duplicate.js +0 -69
- package/dist/commands/duplicate.js.map +0 -1
- package/dist/commands/init.js +0 -117
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/prune.js +0 -357
- package/dist/commands/prune.js.map +0 -1
- package/dist/commands/tui.js +0 -61
- package/dist/commands/tui.js.map +0 -1
- package/dist/core/install/index.js +0 -3
- package/dist/core/install/index.js.map +0 -1
- package/dist/core/push/push-single-file.js +0 -56
- package/dist/core/push/push-single-file.js.map +0 -1
- package/dist/core/save/package-detection.js +0 -147
- package/dist/core/save/package-detection.js.map +0 -1
- package/dist/core/save/save-single-file.js +0 -124
- package/dist/core/save/save-single-file.js.map +0 -1
- package/dist/core/token-store.js +0 -73
- package/dist/core/token-store.js.map +0 -1
- package/dist/tui/app.js +0 -95
- package/dist/tui/app.js.map +0 -1
- package/dist/tui/components/package-list.js +0 -73
- package/dist/tui/components/package-list.js.map +0 -1
- package/dist/tui/controller.js +0 -365
- package/dist/tui/controller.js.map +0 -1
- package/dist/tui/index.js +0 -12
- package/dist/tui/index.js.map +0 -1
- package/dist/tui/services/file-index.js +0 -64
- package/dist/tui/services/file-index.js.map +0 -1
- package/dist/tui/services/packages.js +0 -18
- package/dist/tui/services/packages.js.map +0 -1
- package/dist/tui/services/save.js +0 -21
- package/dist/tui/services/save.js.map +0 -1
- package/dist/tui/state/app-state.js +0 -15
- package/dist/tui/state/app-state.js.map +0 -1
- package/dist/tui/state.js +0 -17
- package/dist/tui/state.js.map +0 -1
- package/dist/tui/types.js.map +0 -1
- package/dist/tui/views/add-file-modal.js +0 -129
- package/dist/tui/views/add-file-modal.js.map +0 -1
- package/dist/tui/views/file-preview.js +0 -44
- package/dist/tui/views/file-preview.js.map +0 -1
- package/dist/tui/views/list-packages.js +0 -73
- package/dist/tui/views/list-packages.js.map +0 -1
- package/dist/tui/views/main-menu.js +0 -29
- package/dist/tui/views/main-menu.js.map +0 -1
- package/dist/tui/views/manage-view.js +0 -81
- package/dist/tui/views/manage-view.js.map +0 -1
- package/dist/tui/views/package-hub.js +0 -120
- package/dist/tui/views/package-hub.js.map +0 -1
- package/dist/tui/views/placeholder.js +0 -24
- package/dist/tui/views/placeholder.js.map +0 -1
- package/dist/utils/bun-bootstrap.js +0 -72
- package/dist/utils/bun-bootstrap.js.map +0 -1
- package/dist/utils/entity-id.js +0 -19
- package/dist/utils/entity-id.js.map +0 -1
- package/dist/utils/package-local-files.js +0 -5
- package/dist/utils/package-local-files.js.map +0 -1
- package/dist/utils/path-matching.js +0 -74
- package/dist/utils/path-matching.js.map +0 -1
- package/dist/utils/root-file-operations.js +0 -39
- package/dist/utils/root-file-operations.js.map +0 -1
- package/dist/utils/root-file-transformer.js +0 -27
- package/dist/utils/root-file-transformer.js.map +0 -1
- package/dist/utils/yaml-frontmatter.js +0 -25
- package/dist/utils/yaml-frontmatter.js.map +0 -1
- package/specs/auth/auth-device-flow.md +0 -70
- package/specs/login/login-device-flow.md +0 -70
- package/specs/platforms.md +0 -193
- package/specs/save-pack-versioning.md +0 -224
- package/specs/save-pack.md +0 -68
- /package/dist/{tui → core/source-resolution}/types.js +0 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# Uninstall Command
|
|
2
|
+
|
|
3
|
+
`opkg uninstall` removes a package's files/mappings from workspace without touching source. Cleans index/yml/root files.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
- Workspace cleanup: Reverse of install/apply.
|
|
7
|
+
- Safe: Only mapped content; source persists.
|
|
8
|
+
- Precise: Removes only what the package contributed, preserving other packages' content.
|
|
9
|
+
|
|
10
|
+
## Flow
|
|
11
|
+
1. Read index for package entry/mappings.
|
|
12
|
+
2. Delete workspace files/dirs per mappings (platforms/root).
|
|
13
|
+
3. For merged files with key tracking, remove only package's keys.
|
|
14
|
+
4. Update root files (e.g., remove package section from AGENTS.md).
|
|
15
|
+
5. Remove package from index.
|
|
16
|
+
6. Remove dep from openpackage.yml.
|
|
17
|
+
7. Optional: Prune unused registry if applicable.
|
|
18
|
+
|
|
19
|
+
## File Removal Strategies
|
|
20
|
+
|
|
21
|
+
### 1. Simple File Mappings
|
|
22
|
+
|
|
23
|
+
When a file is owned entirely by one package (no merge):
|
|
24
|
+
|
|
25
|
+
```yaml
|
|
26
|
+
files:
|
|
27
|
+
rules/typescript.md:
|
|
28
|
+
- .cursor/rules/typescript.md
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Behavior:** File is deleted entirely.
|
|
32
|
+
|
|
33
|
+
### 2. Merged Files with Key Tracking
|
|
34
|
+
|
|
35
|
+
When a file is shared by multiple packages with deep/shallow merge:
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
files:
|
|
39
|
+
mcp.jsonc:
|
|
40
|
+
- target: .opencode/opencode.json
|
|
41
|
+
merge: deep
|
|
42
|
+
keys:
|
|
43
|
+
- mcp.server1
|
|
44
|
+
- mcp.server2
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Behavior:**
|
|
48
|
+
- Load the target file (`.opencode/opencode.json`)
|
|
49
|
+
- Remove only the tracked keys (`mcp.server1`, `mcp.server2`)
|
|
50
|
+
- Delete empty parent objects after key removal
|
|
51
|
+
- If file becomes empty, delete it; otherwise save updated content
|
|
52
|
+
- Other packages' keys are preserved
|
|
53
|
+
|
|
54
|
+
**Example:**
|
|
55
|
+
|
|
56
|
+
Before uninstall:
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"mcp": {
|
|
60
|
+
"server1": { "url": "http://localhost:3000" },
|
|
61
|
+
"server2": { "url": "http://localhost:4000" },
|
|
62
|
+
"server3": { "url": "http://localhost:5000" }
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
After uninstalling package with keys `[mcp.server1, mcp.server2]`:
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"mcp": {
|
|
71
|
+
"server3": { "url": "http://localhost:5000" }
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 3. Composite Merge (Delimiter-Based)
|
|
77
|
+
|
|
78
|
+
When a file uses composite merge strategy:
|
|
79
|
+
|
|
80
|
+
```yaml
|
|
81
|
+
files:
|
|
82
|
+
AGENTS.md:
|
|
83
|
+
- target: CLAUDE.md
|
|
84
|
+
merge: composite
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Behavior:**
|
|
88
|
+
- Remove content between `<!-- package: name -->` ... `<!-- -->` markers
|
|
89
|
+
- Preserve other packages' sections
|
|
90
|
+
- Preserve manual edits outside markers
|
|
91
|
+
|
|
92
|
+
**Example:**
|
|
93
|
+
|
|
94
|
+
Before uninstall:
|
|
95
|
+
```markdown
|
|
96
|
+
<!-- package: package-a -->
|
|
97
|
+
Instructions from Package A
|
|
98
|
+
<!-- -->
|
|
99
|
+
|
|
100
|
+
<!-- package: package-b -->
|
|
101
|
+
Instructions from Package B
|
|
102
|
+
<!-- -->
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
After uninstalling `package-a`:
|
|
106
|
+
```markdown
|
|
107
|
+
<!-- package: package-b -->
|
|
108
|
+
Instructions from Package B
|
|
109
|
+
<!-- -->
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Key Tracking for Merged Files
|
|
113
|
+
|
|
114
|
+
### What is Key Tracking?
|
|
115
|
+
|
|
116
|
+
When packages use flow-based key mappings with merge strategies (`deep` or `shallow`), the workspace index tracks the **transformed keys** each package contributes to merged files. This enables precise removal during uninstall.
|
|
117
|
+
|
|
118
|
+
### When Keys Are Tracked
|
|
119
|
+
|
|
120
|
+
**Keys tracked when:**
|
|
121
|
+
- ✅ Flow uses `merge: 'deep'` or `merge: 'shallow'`
|
|
122
|
+
- ✅ Target file will be shared by multiple packages
|
|
123
|
+
|
|
124
|
+
**Keys NOT tracked when:**
|
|
125
|
+
- ❌ `merge: 'replace'` (whole file owned by one package)
|
|
126
|
+
- ❌ `merge: 'composite'` (delimiter-based tracking used instead)
|
|
127
|
+
- ❌ Simple file copy (no merge)
|
|
128
|
+
|
|
129
|
+
### Key Notation
|
|
130
|
+
|
|
131
|
+
Keys are stored in dot-notation format representing nested object paths:
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
mcp.server1 → { mcp: { server1: {...} } }
|
|
135
|
+
editor.fontSize → { editor: { fontSize: 14 } }
|
|
136
|
+
servers.db.host → { servers: { db: { host: "..." } } }
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Flow Example with Key Transformation
|
|
140
|
+
|
|
141
|
+
Consider this flow:
|
|
142
|
+
|
|
143
|
+
```jsonc
|
|
144
|
+
{
|
|
145
|
+
"from": "mcp.jsonc",
|
|
146
|
+
"to": ".opencode/opencode.json",
|
|
147
|
+
"pipe": ["filter-comments"],
|
|
148
|
+
"map": {
|
|
149
|
+
"mcpServers.*": "mcp.*" // Key transformation!
|
|
150
|
+
},
|
|
151
|
+
"merge": "deep"
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Package source (`mcp.jsonc`):**
|
|
156
|
+
```json
|
|
157
|
+
{
|
|
158
|
+
"mcpServers": {
|
|
159
|
+
"server1": { "url": "http://localhost:3000" },
|
|
160
|
+
"server2": { "url": "http://localhost:4000" }
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**After install**, workspace index tracks the **transformed** keys:
|
|
166
|
+
```yaml
|
|
167
|
+
packages:
|
|
168
|
+
my-mcp-package:
|
|
169
|
+
files:
|
|
170
|
+
mcp.jsonc:
|
|
171
|
+
- target: .opencode/opencode.json
|
|
172
|
+
merge: deep
|
|
173
|
+
keys:
|
|
174
|
+
- mcp.server1 # Note: transformed from mcpServers.server1
|
|
175
|
+
- mcp.server2 # Note: transformed from mcpServers.server2
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**On uninstall:**
|
|
179
|
+
1. Load `.opencode/opencode.json`
|
|
180
|
+
2. Remove `mcp.server1` and `mcp.server2` (the transformed keys)
|
|
181
|
+
3. Save updated file or delete if empty
|
|
182
|
+
|
|
183
|
+
### Why Track Transformed Keys?
|
|
184
|
+
|
|
185
|
+
**The problem:** If we tracked source keys (`mcpServers.*`), we couldn't find them in the target file because they were transformed to `mcp.*`.
|
|
186
|
+
|
|
187
|
+
**The solution:** Track the **output** keys (after transformation), not the input keys. This works regardless of transformation complexity.
|
|
188
|
+
|
|
189
|
+
### Parent Cleanup
|
|
190
|
+
|
|
191
|
+
When removing keys, the uninstaller automatically cleans up empty parent objects:
|
|
192
|
+
|
|
193
|
+
```json
|
|
194
|
+
// Before removal
|
|
195
|
+
{
|
|
196
|
+
"mcp": {
|
|
197
|
+
"server1": { "url": "..." },
|
|
198
|
+
"server2": { "url": "..." }
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// After removing mcp.server1 and mcp.server2
|
|
203
|
+
// The entire "mcp" object is removed because it's now empty
|
|
204
|
+
{}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Options
|
|
208
|
+
- `--dry-run`: Preview deletions.
|
|
209
|
+
- Force without prompt.
|
|
210
|
+
|
|
211
|
+
## Example
|
|
212
|
+
```bash
|
|
213
|
+
opkg uninstall my-pkg # Deletes mappings; updates files/index/yml
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Errors
|
|
217
|
+
- Package not installed.
|
|
218
|
+
- Files in use (rare; force?).
|
|
219
|
+
|
|
220
|
+
## Integration
|
|
221
|
+
- Uses same discovery as status/install.
|
|
222
|
+
- Post-uninstall: Re-add via install/add.
|
|
223
|
+
- See [Commands Overview](../commands-overview.md).
|
|
224
|
+
- See implementation: `src/core/uninstall/`
|
|
225
|
+
- `uninstall-pipeline.ts` - Main orchestration
|
|
226
|
+
- `flow-aware-uninstaller.ts` - Flow-aware file removal
|
|
227
|
+
- `uninstall-file-discovery.ts` - File discovery
|
|
228
|
+
|
|
229
|
+
Root file handling: [Root Files](../package/package-root-layout.md).
|
|
230
|
+
|
|
231
|
+
Key tracking implementation: `src/core/flows/flow-key-extractor.ts`.
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import * as semver from 'semver';
|
|
2
|
-
import { packageManager } from '../core/package.js';
|
|
3
|
-
import { ensureRegistryDirectories } from '../core/directory.js';
|
|
4
|
-
import { logger } from '../utils/logger.js';
|
|
5
|
-
import { withErrorHandling, PackageNotFoundError } from '../utils/errors.js';
|
|
6
|
-
import { parsePackageInput } from '../utils/package-name.js';
|
|
7
|
-
import { transformPackageFilesMetadata } from '../utils/package-versioning.js';
|
|
8
|
-
import { UNVERSIONED } from '../constants/index.js';
|
|
9
|
-
async function duplicatePackageCommand(sourceInput, newInput) {
|
|
10
|
-
logger.info(`Duplicating package: ${sourceInput} -> ${newInput}`);
|
|
11
|
-
// Ensure registry directories
|
|
12
|
-
await ensureRegistryDirectories();
|
|
13
|
-
// Parse inputs
|
|
14
|
-
const { name: sourceName, version: sourceVersionInput } = parsePackageInput(sourceInput);
|
|
15
|
-
const { name: newName, version: newVersionInput } = parsePackageInput(newInput);
|
|
16
|
-
// Validate new version if provided
|
|
17
|
-
if (newVersionInput && !semver.valid(newVersionInput)) {
|
|
18
|
-
throw new Error(`Invalid version: ${newVersionInput}. Must be a valid semver version.`);
|
|
19
|
-
}
|
|
20
|
-
// Load source package (handles ranges; defaults to latest)
|
|
21
|
-
let sourcePackage;
|
|
22
|
-
try {
|
|
23
|
-
sourcePackage = await packageManager.loadPackage(sourceName, sourceVersionInput);
|
|
24
|
-
}
|
|
25
|
-
catch (error) {
|
|
26
|
-
if (error instanceof PackageNotFoundError) {
|
|
27
|
-
return { success: false, error: `Target package ${sourceName} not found.` };
|
|
28
|
-
}
|
|
29
|
-
throw error instanceof Error ? error : new Error(String(error));
|
|
30
|
-
}
|
|
31
|
-
// Check if any version already exists for the new name
|
|
32
|
-
if (await packageManager.packageExists(newName)) {
|
|
33
|
-
return { success: false, error: `Package ${newName} already exists` };
|
|
34
|
-
}
|
|
35
|
-
// Determine new version
|
|
36
|
-
const newVersion = newVersionInput || sourcePackage.metadata.version;
|
|
37
|
-
// Transform files: update package.yml
|
|
38
|
-
const transformedFiles = transformPackageFilesMetadata(sourcePackage.files, sourceName, newName, newVersion);
|
|
39
|
-
const newPackage = {
|
|
40
|
-
metadata: {
|
|
41
|
-
...sourcePackage.metadata,
|
|
42
|
-
name: newName,
|
|
43
|
-
version: newVersion
|
|
44
|
-
},
|
|
45
|
-
files: transformedFiles
|
|
46
|
-
};
|
|
47
|
-
// Save duplicated package
|
|
48
|
-
await packageManager.savePackage(newPackage);
|
|
49
|
-
const fromLabel = sourcePackage.metadata.version ? `${sourceName}@${sourcePackage.metadata.version}` : `${sourceName} (${UNVERSIONED})`;
|
|
50
|
-
const toLabel = newVersion ? `${newName}@${newVersion}` : `${newName} (${UNVERSIONED})`;
|
|
51
|
-
console.log(`✓ Duplicated '${fromLabel}' -> '${toLabel}'`);
|
|
52
|
-
return { success: true, data: { from: fromLabel, to: toLabel } };
|
|
53
|
-
}
|
|
54
|
-
export function setupDuplicateCommand(program) {
|
|
55
|
-
program
|
|
56
|
-
.command('duplicate')
|
|
57
|
-
.description('Duplicate a package in the local registry to a new name and optional version')
|
|
58
|
-
.argument('<package>', 'source package name or package@version')
|
|
59
|
-
.argument('<newName>', 'new package name or newName@version')
|
|
60
|
-
.action(withErrorHandling(async (pkg, newName) => {
|
|
61
|
-
const result = await duplicatePackageCommand(pkg, newName);
|
|
62
|
-
if (!result.success) {
|
|
63
|
-
// If we already printed a user-friendly message, just exit with error
|
|
64
|
-
if (result.error)
|
|
65
|
-
throw new Error(result.error);
|
|
66
|
-
}
|
|
67
|
-
}));
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=duplicate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duplicate.js","sourceRoot":"","sources":["../../src/commands/duplicate.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { basename, relative } from 'path';
|
|
2
|
-
import { writePackageYml } from '../utils/package-yml.js';
|
|
3
|
-
import { promptPackageDetails, promptPackageDetailsForNamed } from '../utils/prompts.js';
|
|
4
|
-
import { logger } from '../utils/logger.js';
|
|
5
|
-
import { displayPackageConfig } from '../utils/formatters.js';
|
|
6
|
-
import { withErrorHandling, UserCancellationError } from '../utils/errors.js';
|
|
7
|
-
import { ensureDir } from '../utils/fs.js';
|
|
8
|
-
import { detectPackageContext, getPackageYmlPath, getPackageFilesDir, createPackageContext } from '../core/package-context.js';
|
|
9
|
-
import { normalizePackageName, validatePackageName } from '../utils/package-name.js';
|
|
10
|
-
import { createWorkspacePackageYml, addPackageToYml } from '../utils/package-management.js';
|
|
11
|
-
/**
|
|
12
|
-
* Initialize root package (cwd as package)
|
|
13
|
-
*/
|
|
14
|
-
async function initRootPackage(force) {
|
|
15
|
-
const cwd = process.cwd();
|
|
16
|
-
const packageYmlPath = getPackageYmlPath(cwd, 'root');
|
|
17
|
-
const packageFilesDir = getPackageFilesDir(cwd, 'root');
|
|
18
|
-
logger.info(`Initializing root package in: ${packageFilesDir}`);
|
|
19
|
-
// Check if already exists
|
|
20
|
-
const existingContext = await detectPackageContext(cwd);
|
|
21
|
-
if (existingContext && existingContext.location === 'root') {
|
|
22
|
-
if (!force) {
|
|
23
|
-
logger.info('Found existing root package.yml');
|
|
24
|
-
displayPackageConfig(existingContext.config, relative(cwd, packageYmlPath), true);
|
|
25
|
-
return { success: true, data: existingContext };
|
|
26
|
-
}
|
|
27
|
-
logger.info('Found existing package.yml, forcing overwrite...');
|
|
28
|
-
}
|
|
29
|
-
try {
|
|
30
|
-
await ensureDir(packageFilesDir);
|
|
31
|
-
const defaultName = basename(cwd);
|
|
32
|
-
const packageConfig = await promptPackageDetails(defaultName);
|
|
33
|
-
await writePackageYml(packageYmlPath, packageConfig);
|
|
34
|
-
const context = createPackageContext(cwd, packageConfig, 'root');
|
|
35
|
-
displayPackageConfig(packageConfig, relative(cwd, packageYmlPath), false);
|
|
36
|
-
return { success: true, data: context };
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
if (error instanceof UserCancellationError) {
|
|
40
|
-
throw error;
|
|
41
|
-
}
|
|
42
|
-
return { success: false, error: `Failed to initialize root package: ${error}` };
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Initialize nested package
|
|
47
|
-
*/
|
|
48
|
-
async function initNestedPackage(packageName, force) {
|
|
49
|
-
const cwd = process.cwd();
|
|
50
|
-
validatePackageName(packageName);
|
|
51
|
-
const normalizedName = normalizePackageName(packageName);
|
|
52
|
-
// Ensure root package.yml exists
|
|
53
|
-
await createWorkspacePackageYml(cwd, false);
|
|
54
|
-
// Check if package already exists
|
|
55
|
-
const existingContext = await detectPackageContext(cwd, normalizedName);
|
|
56
|
-
if (existingContext) {
|
|
57
|
-
if (existingContext.location === 'root') {
|
|
58
|
-
return {
|
|
59
|
-
success: false,
|
|
60
|
-
error: `Package '${packageName}' matches the root package name. Use 'opkg init' without arguments to reinitialize the root package.`
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
if (!force) {
|
|
64
|
-
logger.info('Found existing nested package');
|
|
65
|
-
displayPackageConfig(existingContext.config, relative(cwd, existingContext.packageYmlPath), true);
|
|
66
|
-
return { success: true, data: existingContext };
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
const packageFilesDir = getPackageFilesDir(cwd, 'nested', normalizedName);
|
|
70
|
-
const packageYmlPath = getPackageYmlPath(cwd, 'nested', normalizedName);
|
|
71
|
-
logger.info(`Initializing nested package '${normalizedName}' in: ${packageFilesDir}`);
|
|
72
|
-
try {
|
|
73
|
-
await ensureDir(packageFilesDir);
|
|
74
|
-
const packageConfig = {
|
|
75
|
-
...(await promptPackageDetailsForNamed(normalizedName)),
|
|
76
|
-
partial: true
|
|
77
|
-
};
|
|
78
|
-
// Ensure include pattern is set
|
|
79
|
-
if (!packageConfig.include || packageConfig.include.length === 0) {
|
|
80
|
-
packageConfig.include = ['**'];
|
|
81
|
-
}
|
|
82
|
-
await writePackageYml(packageYmlPath, packageConfig);
|
|
83
|
-
const context = createPackageContext(cwd, packageConfig, 'nested');
|
|
84
|
-
displayPackageConfig(packageConfig, relative(cwd, packageYmlPath), false);
|
|
85
|
-
// Add to root package dependencies
|
|
86
|
-
await addPackageToYml(cwd, normalizedName, packageConfig.version);
|
|
87
|
-
return { success: true, data: context };
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
if (error instanceof UserCancellationError) {
|
|
91
|
-
throw error;
|
|
92
|
-
}
|
|
93
|
-
return { success: false, error: `Failed to initialize nested package: ${error}` };
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Setup the init command
|
|
98
|
-
*/
|
|
99
|
-
export function setupInitCommand(program) {
|
|
100
|
-
program
|
|
101
|
-
.command('init')
|
|
102
|
-
.argument('[package-name]', 'package name for initialization in .openpackage/packages/ (optional)')
|
|
103
|
-
.description('Initialize a new package.yml file. \n' +
|
|
104
|
-
'Usage patterns:\n' +
|
|
105
|
-
' opkg init # Initialize .openpackage/package.yml in current directory\n' +
|
|
106
|
-
' opkg init <package-name> # Initialize .openpackage/packages/<package-name>/package.yml')
|
|
107
|
-
.option('-f, --force', 'overwrite existing package.yml')
|
|
108
|
-
.action(withErrorHandling(async (packageName, options) => {
|
|
109
|
-
const result = packageName
|
|
110
|
-
? await initNestedPackage(packageName, options?.force)
|
|
111
|
-
: await initRootPackage(options?.force);
|
|
112
|
-
if (!result.success) {
|
|
113
|
-
throw new Error(result.error || 'Init operation failed');
|
|
114
|
-
}
|
|
115
|
-
}));
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|