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
package/dist/commands/install.js
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
+
import { resolve } from 'path';
|
|
2
|
+
import { formatPathForDisplay } from '../utils/formatters.js';
|
|
1
3
|
import { DIR_PATTERNS, PACKAGE_PATHS } from '../constants/index.js';
|
|
2
4
|
import { runBulkInstallPipeline } from '../core/install/bulk-install-pipeline.js';
|
|
3
5
|
import { runInstallPipeline, determineResolutionMode } from '../core/install/install-pipeline.js';
|
|
4
|
-
import {
|
|
6
|
+
import { runPathInstallPipeline } from '../core/install/path-install-pipeline.js';
|
|
7
|
+
import { loadPackageFromGit } from '../core/install/git-package-loader.js';
|
|
8
|
+
import { inferSourceType } from '../core/install/path-package-loader.js';
|
|
9
|
+
import { detectPluginType } from '../core/install/plugin-detector.js';
|
|
10
|
+
import { parseMarketplace, promptPluginSelection, installMarketplacePlugins } from '../core/install/marketplace-handler.js';
|
|
11
|
+
import { withErrorHandling, ValidationError } from '../utils/errors.js';
|
|
5
12
|
import { normalizePlatforms } from '../utils/platform-mapper.js';
|
|
6
|
-
import {
|
|
13
|
+
import { classifyPackageInput } from '../utils/package-input.js';
|
|
14
|
+
import { findExistingPathOrGitSource } from '../utils/install-helpers.js';
|
|
7
15
|
import { logger } from '../utils/logger.js';
|
|
8
16
|
import { normalizePathForProcessing } from '../utils/path-normalization.js';
|
|
9
17
|
function assertTargetDirOutsideMetadata(targetDir) {
|
|
@@ -21,15 +29,131 @@ export function validateResolutionFlags(options) {
|
|
|
21
29
|
throw new Error('--remote and --local cannot be used together. Choose one resolution mode.');
|
|
22
30
|
}
|
|
23
31
|
}
|
|
24
|
-
async function installCommand(
|
|
32
|
+
async function installCommand(packageInput, options) {
|
|
25
33
|
const targetDir = '.';
|
|
34
|
+
const cwd = process.cwd();
|
|
26
35
|
assertTargetDirOutsideMetadata(targetDir);
|
|
27
36
|
options.resolutionMode = determineResolutionMode(options);
|
|
28
37
|
logger.debug('Install resolution mode selected', { mode: options.resolutionMode });
|
|
29
|
-
if (!
|
|
38
|
+
if (!packageInput) {
|
|
30
39
|
return await runBulkInstallPipeline(options);
|
|
31
40
|
}
|
|
32
|
-
|
|
41
|
+
// Classify the input to determine if it's a registry name, directory, or tarball
|
|
42
|
+
const classification = await classifyPackageInput(packageInput, cwd);
|
|
43
|
+
// For registry-type inputs (package names), check if it's actually a path/git dependency in openpackage.yml
|
|
44
|
+
// This ensures we respect the manifest's declared source type on subsequent installs
|
|
45
|
+
if (classification.type === 'registry' && classification.name) {
|
|
46
|
+
const existingSource = await findExistingPathOrGitSource(cwd, classification.name);
|
|
47
|
+
if (existingSource) {
|
|
48
|
+
if (existingSource.type === 'git') {
|
|
49
|
+
const subdirPart = existingSource.subdirectory ? `&subdirectory=${existingSource.subdirectory}` : '';
|
|
50
|
+
logger.info(`Using git source from openpackage.yml for '${classification.name}': ${existingSource.url}`);
|
|
51
|
+
console.log(`ā Using git source from openpackage.yml: ${existingSource.url}${existingSource.ref ? `#${existingSource.ref}` : ''}${subdirPart}`);
|
|
52
|
+
const result = await loadPackageFromGit({
|
|
53
|
+
url: existingSource.url,
|
|
54
|
+
ref: existingSource.ref,
|
|
55
|
+
subdirectory: existingSource.subdirectory
|
|
56
|
+
});
|
|
57
|
+
if (result.isMarketplace) {
|
|
58
|
+
throw new ValidationError(`Package '${classification.name}' is declared as a git source in openpackage.yml, ` +
|
|
59
|
+
`but the repository is a Claude Code plugin marketplace. ` +
|
|
60
|
+
`Marketplaces cannot be used as dependencies via openpackage.yml.`);
|
|
61
|
+
}
|
|
62
|
+
return await runPathInstallPipeline({
|
|
63
|
+
...options,
|
|
64
|
+
sourcePath: result.sourcePath,
|
|
65
|
+
sourceType: 'directory',
|
|
66
|
+
targetDir,
|
|
67
|
+
gitUrl: existingSource.url,
|
|
68
|
+
gitRef: existingSource.ref,
|
|
69
|
+
gitSubdirectory: existingSource.subdirectory
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
else if (existingSource.type === 'path') {
|
|
73
|
+
logger.info(`Using path source from openpackage.yml for '${classification.name}': ${existingSource.path}`);
|
|
74
|
+
const displayPath = formatPathForDisplay(existingSource.path, cwd);
|
|
75
|
+
console.log(`ā Using path source from openpackage.yml: ${displayPath}`);
|
|
76
|
+
const resolvedPath = resolve(cwd, existingSource.path);
|
|
77
|
+
const sourceType = inferSourceType(existingSource.path);
|
|
78
|
+
return await runPathInstallPipeline({
|
|
79
|
+
...options,
|
|
80
|
+
sourcePath: resolvedPath,
|
|
81
|
+
sourceType,
|
|
82
|
+
targetDir
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (classification.type === 'git') {
|
|
88
|
+
const result = await loadPackageFromGit({
|
|
89
|
+
url: classification.gitUrl,
|
|
90
|
+
ref: classification.gitRef,
|
|
91
|
+
subdirectory: classification.gitSubdirectory
|
|
92
|
+
});
|
|
93
|
+
// Check if this is a marketplace
|
|
94
|
+
if (result.isMarketplace) {
|
|
95
|
+
logger.info('Detected Claude Code marketplace, prompting for plugin selection', {
|
|
96
|
+
url: classification.gitUrl
|
|
97
|
+
});
|
|
98
|
+
const pluginDetection = await detectPluginType(result.sourcePath);
|
|
99
|
+
if (!pluginDetection.manifestPath) {
|
|
100
|
+
throw new ValidationError('Marketplace manifest not found');
|
|
101
|
+
}
|
|
102
|
+
// Parse marketplace and prompt for selection
|
|
103
|
+
const marketplace = await parseMarketplace(pluginDetection.manifestPath);
|
|
104
|
+
const selectedPlugins = await promptPluginSelection(marketplace);
|
|
105
|
+
if (selectedPlugins.length === 0) {
|
|
106
|
+
console.log('No plugins selected. Installation cancelled.');
|
|
107
|
+
return { success: true };
|
|
108
|
+
}
|
|
109
|
+
// Install selected plugins
|
|
110
|
+
return await installMarketplacePlugins(result.sourcePath, marketplace, selectedPlugins, classification.gitUrl, classification.gitRef, options);
|
|
111
|
+
}
|
|
112
|
+
// Not a marketplace, install as regular package/plugin
|
|
113
|
+
return await runPathInstallPipeline({
|
|
114
|
+
...options,
|
|
115
|
+
sourcePath: result.sourcePath,
|
|
116
|
+
sourceType: 'directory',
|
|
117
|
+
targetDir,
|
|
118
|
+
gitUrl: classification.gitUrl,
|
|
119
|
+
gitRef: classification.gitRef,
|
|
120
|
+
gitSubdirectory: classification.gitSubdirectory
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
if (classification.type === 'directory' || classification.type === 'tarball') {
|
|
124
|
+
// Display source comparison info if available
|
|
125
|
+
if (classification.sourceComparisonInfo) {
|
|
126
|
+
displayPackageSourceResolution(classification.sourceComparisonInfo);
|
|
127
|
+
}
|
|
128
|
+
// Check if this is a marketplace (only for directories, not tarballs)
|
|
129
|
+
if (classification.type === 'directory') {
|
|
130
|
+
const pluginDetection = await detectPluginType(classification.resolvedPath);
|
|
131
|
+
if (pluginDetection.isPlugin && pluginDetection.type === 'marketplace') {
|
|
132
|
+
logger.info('Detected Claude Code marketplace from local path, prompting for plugin selection', {
|
|
133
|
+
path: classification.resolvedPath
|
|
134
|
+
});
|
|
135
|
+
// Parse marketplace and prompt for selection
|
|
136
|
+
const marketplace = await parseMarketplace(pluginDetection.manifestPath);
|
|
137
|
+
const selectedPlugins = await promptPluginSelection(marketplace);
|
|
138
|
+
if (selectedPlugins.length === 0) {
|
|
139
|
+
console.log('No plugins selected. Installation cancelled.');
|
|
140
|
+
return { success: true };
|
|
141
|
+
}
|
|
142
|
+
// Install selected plugins (no git URL for local paths)
|
|
143
|
+
return await installMarketplacePlugins(classification.resolvedPath, marketplace, selectedPlugins, classification.resolvedPath, // Use path as "url" for tracking
|
|
144
|
+
undefined, // No git ref for local paths
|
|
145
|
+
options);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return await runPathInstallPipeline({
|
|
149
|
+
...options,
|
|
150
|
+
sourcePath: classification.resolvedPath,
|
|
151
|
+
sourceType: classification.type,
|
|
152
|
+
targetDir
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
// Registry-based install (existing flow)
|
|
156
|
+
const { name, version, registryPath } = classification;
|
|
33
157
|
return await runInstallPipeline({
|
|
34
158
|
...options,
|
|
35
159
|
packageName: name,
|
|
@@ -38,12 +162,58 @@ async function installCommand(packageName, options) {
|
|
|
38
162
|
targetDir
|
|
39
163
|
});
|
|
40
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Display user-friendly information about package source resolution
|
|
167
|
+
*/
|
|
168
|
+
function displayPackageSourceResolution(info) {
|
|
169
|
+
const { candidates, selected, reason } = info;
|
|
170
|
+
// Workspace override - simple message
|
|
171
|
+
if (reason === 'workspace-override') {
|
|
172
|
+
console.log(`ā Found ${selected.packageName} in workspace packages`);
|
|
173
|
+
console.log(`š” Workspace packages always override global/registry`);
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
// Single source - simple message
|
|
177
|
+
if (reason === 'only-source' && candidates.length === 1) {
|
|
178
|
+
const sourceType = selected.type === 'global' ? 'global packages' :
|
|
179
|
+
selected.type === 'registry' ? 'registry' : 'workspace packages';
|
|
180
|
+
console.log(`ā Found ${selected.packageName} in ${sourceType}`);
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
// Multiple sources - show comparison
|
|
184
|
+
if (candidates.length > 1) {
|
|
185
|
+
console.log(`Resolving ${selected.packageName}...`);
|
|
186
|
+
for (const candidate of candidates) {
|
|
187
|
+
const label = candidate.type === 'global' ? 'Global packages' : 'Registry';
|
|
188
|
+
const suffix = candidate.type === 'global' ? ' (mutable)' : ' (stable)';
|
|
189
|
+
console.log(` ⢠${label}: ${candidate.version}${suffix}`);
|
|
190
|
+
}
|
|
191
|
+
const sourceLabel = selected.type === 'global' ? 'global packages' : 'registry';
|
|
192
|
+
if (reason === 'newer-version') {
|
|
193
|
+
console.log(`ā Using ${selected.packageName}@${selected.version} from ${sourceLabel} (newer version)`);
|
|
194
|
+
// Warn about outdated global if registry was selected
|
|
195
|
+
if (selected.type === 'registry') {
|
|
196
|
+
const global = candidates.find((c) => c.type === 'global');
|
|
197
|
+
if (global) {
|
|
198
|
+
console.log(`ā ļø Global packages has older version (${global.version})`);
|
|
199
|
+
console.log(`š” To update global: cd ~/.openpackage/packages/${selected.packageName} && opkg pack`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
else if (reason === 'same-version-prefer-mutable') {
|
|
204
|
+
console.log(`ā Using ${selected.packageName}@${selected.version} from ${sourceLabel} (same version, prefer mutable)`);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
console.log(`ā Using ${selected.packageName}@${selected.version} from ${sourceLabel}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
41
211
|
export function setupInstallCommand(program) {
|
|
42
212
|
program
|
|
43
213
|
.command('install')
|
|
44
214
|
.alias('i')
|
|
45
|
-
.description('Install packages
|
|
46
|
-
.argument('[package-name]', 'name of the package to install (optional - installs all from
|
|
215
|
+
.description('Install packages to workspace')
|
|
216
|
+
.argument('[package-name]', 'name of the package to install (optional - installs all from openpackage.yml if not specified). Supports package@version syntax.')
|
|
47
217
|
.option('--dry-run', 'preview changes without applying them')
|
|
48
218
|
.option('--force', 'overwrite existing files')
|
|
49
219
|
.option('--conflicts <strategy>', 'conflict handling strategy: keep-both, overwrite, skip, or ask')
|
|
@@ -51,7 +221,6 @@ export function setupInstallCommand(program) {
|
|
|
51
221
|
.option('--platforms <platforms...>', 'prepare specific platforms (e.g., cursor claudecode opencode)')
|
|
52
222
|
.option('--remote', 'pull and install from remote registry, ignoring local versions')
|
|
53
223
|
.option('--local', 'resolve and install using only local registry versions, skipping remote metadata and pulls')
|
|
54
|
-
.option('--stable', 'prefer the latest stable version when resolving; ignore newer prerelease/WIP versions if a satisfying stable exists')
|
|
55
224
|
.option('--profile <profile>', 'profile to use for authentication')
|
|
56
225
|
.option('--api-key <key>', 'API key for authentication (overrides profile)')
|
|
57
226
|
.action(withErrorHandling(async (packageName, options) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/list.js
CHANGED
|
@@ -37,7 +37,7 @@ async function listPackagesCommand(options) {
|
|
|
37
37
|
console.log(`No packages found matching filter: ${options.filter}`);
|
|
38
38
|
}
|
|
39
39
|
else {
|
|
40
|
-
console.log('No packages found. Use "opkg
|
|
40
|
+
console.log('No packages found. Use "opkg new <package-name>" to create your first package.');
|
|
41
41
|
}
|
|
42
42
|
return { success: true, data: [] };
|
|
43
43
|
}
|
|
@@ -78,7 +78,7 @@ export function setupListCommand(program) {
|
|
|
78
78
|
program
|
|
79
79
|
.command('list [package-name]')
|
|
80
80
|
.alias('ls')
|
|
81
|
-
.description('List local packages
|
|
81
|
+
.description('List local packages')
|
|
82
82
|
.option('--format <format>', 'output format (table|json)', 'table')
|
|
83
83
|
.option('--filter <pattern>', 'filter packages by name pattern')
|
|
84
84
|
.option('--all', 'show all versions (default shows only latest)')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAqB,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAAC,OAAoB;IACrD,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAEtC,oCAAoC;IACpC,MAAM,yBAAyB,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,wEAAwE;QACxE,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;QACrD,kEAAkE;QAClE,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC5E,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,CACjD,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,aAAa,CAAC,CAC3E,CAAC;QAEF,yEAAyE;QACzE,IAAI,eAAe,GAAG,OAAO,CAAC;QAC9B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,MAAM,GAAE,OAAO,CAAC,WAAW,CAAC;YAClC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnD,GAAG,KAAK;YACR,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC;SAC7C,CAAC,CAAC,CAAC;QAEJ,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAC3D,CAAC;iBAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,sCAAsC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/login.js
CHANGED
|
@@ -7,7 +7,7 @@ import { getCurrentUsername } from '../core/api-keys.js';
|
|
|
7
7
|
export function setupLoginCommand(program) {
|
|
8
8
|
program
|
|
9
9
|
.command('login')
|
|
10
|
-
.description('Authenticate with OpenPackage
|
|
10
|
+
.description('Authenticate with OpenPackage')
|
|
11
11
|
.option('--profile <profile>', 'profile to use for authentication')
|
|
12
12
|
.action(withErrorHandling(async (options) => {
|
|
13
13
|
const profileName = authManager.getCurrentProfile({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACN,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,EACb,WAAW,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAMzD,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IACjD,OAAO;SACL,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/logout.js
CHANGED
|
@@ -5,7 +5,7 @@ import { logger } from '../utils/logger.js';
|
|
|
5
5
|
export function setupLogoutCommand(program) {
|
|
6
6
|
program
|
|
7
7
|
.command('logout')
|
|
8
|
-
.description('Remove stored
|
|
8
|
+
.description('Remove stored credentials')
|
|
9
9
|
.option('--profile <profile>', 'profile to log out')
|
|
10
10
|
.action(withErrorHandling(async (options) => {
|
|
11
11
|
const profileName = authManager.getCurrentProfile({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAM3C,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IAClD,OAAO;SACL,OAAO,CAAC,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAM3C,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IAClD,OAAO;SACL,OAAO,CAAC,QAAQ,CAAC;SACL,WAAW,CAAC,2BAA2B,CAAC;SACpD,MAAM,CAAC,qBAAqB,EAAE,oBAAoB,CAAC;SACnD,MAAM,CACN,iBAAiB,CAAC,KAAK,EAAE,OAAsB,EAAE,EAAE;QAClD,MAAM,WAAW,GAAG,WAAW,CAAC,iBAAiB,CAAC;YACjD,OAAO,EAAE,OAAO,CAAC,OAAO;SACxB,CAAC,CAAA;QAEF,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;YACnE,OAAM;QACP,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,cAAc,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAA;YACzD,OAAO,CAAC,GAAG,CAAC,sCAAsC,WAAW,IAAI,CAAC,CAAA;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;YACpE,MAAM,KAAK,CAAA;QACZ,CAAC;IACF,CAAC,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { withErrorHandling } from '../utils/errors.js';
|
|
2
|
+
import { createPackage } from '../core/package-creation.js';
|
|
3
|
+
import { parseScope, validateScopeWithPackageName } from '../utils/scope-resolution.js';
|
|
4
|
+
import { promptPackageScope, promptCustomPath } from '../utils/prompts.js';
|
|
5
|
+
import { logger } from '../utils/logger.js';
|
|
6
|
+
/**
|
|
7
|
+
* Setup the 'opkg new' command
|
|
8
|
+
*
|
|
9
|
+
* This command creates a new package with scope support:
|
|
10
|
+
* - root: Create openpackage.yml in current directory
|
|
11
|
+
* - local: Create in .openpackage/packages/<name>/ (default)
|
|
12
|
+
* - global: Create in ~/.openpackage/packages/<name>/
|
|
13
|
+
* - custom: Create at a user-specified path
|
|
14
|
+
*/
|
|
15
|
+
export function setupNewCommand(program) {
|
|
16
|
+
program
|
|
17
|
+
.command('new')
|
|
18
|
+
.argument('[package-name]', 'package name (optional - will prompt if not provided in interactive mode)')
|
|
19
|
+
.description('Create a new package with manifest')
|
|
20
|
+
.option('--scope <scope>', 'package scope: root, local, or global')
|
|
21
|
+
.option('--path <path>', 'custom path for package directory (overrides scope)')
|
|
22
|
+
.option('-f, --force', 'overwrite existing package without confirmation')
|
|
23
|
+
.option('--non-interactive', 'skip interactive prompts, use defaults')
|
|
24
|
+
.action(withErrorHandling(async (packageName, options) => {
|
|
25
|
+
const cwd = process.cwd();
|
|
26
|
+
const isInteractive = !options?.nonInteractive;
|
|
27
|
+
// Parse and validate scope or custom path
|
|
28
|
+
let scope;
|
|
29
|
+
let customPath;
|
|
30
|
+
if (options?.path) {
|
|
31
|
+
// Custom path explicitly provided via flag
|
|
32
|
+
customPath = options.path;
|
|
33
|
+
// Warn if --scope is also provided
|
|
34
|
+
if (options?.scope) {
|
|
35
|
+
logger.warn('--scope is ignored when --path is specified');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else if (options?.scope) {
|
|
39
|
+
// Scope explicitly provided via flag
|
|
40
|
+
try {
|
|
41
|
+
scope = parseScope(options.scope);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
throw new Error(error instanceof Error ? error.message : String(error));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (isInteractive) {
|
|
48
|
+
// Interactive mode without --scope or --path: prompt user to choose
|
|
49
|
+
const scopeOrCustom = await promptPackageScope();
|
|
50
|
+
if (scopeOrCustom === 'custom') {
|
|
51
|
+
// User selected custom path - prompt for it
|
|
52
|
+
customPath = await promptCustomPath(packageName);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// User selected a predefined scope
|
|
56
|
+
scope = scopeOrCustom;
|
|
57
|
+
}
|
|
58
|
+
console.log(); // Add blank line after prompt for better formatting
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// Non-interactive mode without --scope or --path: error
|
|
62
|
+
throw new Error('Either --scope or --path is required in non-interactive mode.\n\n' +
|
|
63
|
+
'Usage with scope:\n' +
|
|
64
|
+
' opkg new [package-name] --scope <root|local|global> --non-interactive\n\n' +
|
|
65
|
+
'Usage with custom path:\n' +
|
|
66
|
+
' opkg new [package-name] --path <directory> --non-interactive\n\n' +
|
|
67
|
+
'Available scopes:\n' +
|
|
68
|
+
' root - Create in current directory\n' +
|
|
69
|
+
' local - Create in .openpackage/packages/\n' +
|
|
70
|
+
' global - Create in ~/.openpackage/packages/');
|
|
71
|
+
}
|
|
72
|
+
// Validate scope and package name combination (skip for custom paths)
|
|
73
|
+
if (scope && !customPath) {
|
|
74
|
+
try {
|
|
75
|
+
validateScopeWithPackageName(scope, packageName, isInteractive);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
throw new Error(error instanceof Error ? error.message : String(error));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
logger.debug('Creating new package', {
|
|
82
|
+
scope,
|
|
83
|
+
customPath,
|
|
84
|
+
packageName,
|
|
85
|
+
force: options?.force,
|
|
86
|
+
interactive: isInteractive
|
|
87
|
+
});
|
|
88
|
+
// Create the package
|
|
89
|
+
const result = await createPackage({
|
|
90
|
+
cwd,
|
|
91
|
+
scope,
|
|
92
|
+
customPath,
|
|
93
|
+
packageName,
|
|
94
|
+
force: options?.force || false,
|
|
95
|
+
interactive: !options?.nonInteractive
|
|
96
|
+
});
|
|
97
|
+
if (!result.success) {
|
|
98
|
+
throw new Error(result.error || 'Package creation failed');
|
|
99
|
+
}
|
|
100
|
+
// Get the actual package name from the result context
|
|
101
|
+
const actualPackageName = result.context?.name || packageName;
|
|
102
|
+
// Additional success messaging based on scope or custom path
|
|
103
|
+
if (customPath) {
|
|
104
|
+
console.log(`\nš” Next steps:`);
|
|
105
|
+
console.log(` 1. Add files to your package at: ${customPath}`);
|
|
106
|
+
console.log(` 2. Install to workspace: opkg install ${customPath}`);
|
|
107
|
+
}
|
|
108
|
+
else if (scope === 'local') {
|
|
109
|
+
console.log(`\nš” Next steps:`);
|
|
110
|
+
console.log(` 1. Add files to your package: cd .openpackage/packages/${actualPackageName}/`);
|
|
111
|
+
console.log(` 2. Install to this workspace: opkg install ${actualPackageName}`);
|
|
112
|
+
}
|
|
113
|
+
else if (scope === 'global') {
|
|
114
|
+
console.log(`\nš” Next steps:`);
|
|
115
|
+
console.log(` 1. Add files to your package: cd ~/.openpackage/packages/${actualPackageName}/`);
|
|
116
|
+
console.log(` 2. Install to any workspace: opkg install ${actualPackageName}`);
|
|
117
|
+
}
|
|
118
|
+
else if (scope === 'root') {
|
|
119
|
+
console.log(`\nš” Next steps:`);
|
|
120
|
+
console.log(` 1. Add files to your package in current directory`);
|
|
121
|
+
console.log(` 2. Install to other workspaces: opkg install ${actualPackageName}`);
|
|
122
|
+
}
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=new.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/pack.js
CHANGED
|
@@ -1,22 +1,16 @@
|
|
|
1
1
|
import { withErrorHandling } from '../utils/errors.js';
|
|
2
|
-
import {
|
|
2
|
+
import { runPackPipeline } from '../core/pack/pack-pipeline.js';
|
|
3
3
|
async function packPackageCommand(packageName, options) {
|
|
4
|
-
return
|
|
5
|
-
mode: 'stable',
|
|
6
|
-
force: options?.force,
|
|
7
|
-
rename: options?.rename
|
|
8
|
-
});
|
|
4
|
+
return runPackPipeline(packageName, options);
|
|
9
5
|
}
|
|
10
6
|
export function setupPackCommand(program) {
|
|
11
7
|
program
|
|
12
8
|
.command('pack')
|
|
13
|
-
.argument('[package
|
|
14
|
-
.description('
|
|
15
|
-
'
|
|
16
|
-
'
|
|
17
|
-
'
|
|
18
|
-
.option('-f, --force', 'overwrite existing stable versions or skip confirmations')
|
|
19
|
-
.option('--rename <newName>', 'Rename package during pack')
|
|
9
|
+
.argument('[package]', 'package name or path (optional if cwd is a package)')
|
|
10
|
+
.description('Snapshot package source to local registry')
|
|
11
|
+
.option('-f, --force', 'skip confirmation and overwrite existing packages')
|
|
12
|
+
.option('--output <path>', 'write snapshot directly into the target directory instead of the registry path')
|
|
13
|
+
.option('--dry-run', 'print the destination and files that would be written')
|
|
20
14
|
.action(withErrorHandling(async (packageName, options) => {
|
|
21
15
|
const result = await packPackageCommand(packageName, options);
|
|
22
16
|
if (!result.success) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/commands/pack.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,KAAK,UAAU,kBAAkB,CAC/B,WAA+B,EAC/B,OAAqB;IAErB,OAAO,eAAe,CAAC,WAAW,EAAE
|
|
1
|
+
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/commands/pack.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,KAAK,UAAU,kBAAkB,CAC/B,WAA+B,EAC/B,OAAqB;IAErB,OAAO,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,WAAW,EAAE,qDAAqD,CAAC;SAC5E,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,aAAa,EAAE,mDAAmD,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,gFAAgF,CAAC;SAC3G,MAAM,CAAC,WAAW,EAAE,uDAAuD,CAAC;SAC5E,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAA+B,EAAE,OAAqB,EAAE,EAAE;QACzF,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,uBAAuB,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
package/dist/commands/pull.js
CHANGED
|
@@ -7,7 +7,7 @@ async function pullPackageCommand(packageInput, options) {
|
|
|
7
7
|
export function setupPullCommand(program) {
|
|
8
8
|
program
|
|
9
9
|
.command('pull')
|
|
10
|
-
.description('Pull
|
|
10
|
+
.description('Pull package from remote registry')
|
|
11
11
|
.argument('<package-name>', 'name of the package to pull. Supports package@version syntax.')
|
|
12
12
|
.option('--profile <profile>', 'profile to use for authentication')
|
|
13
13
|
.option('--api-key <key>', 'API key for authentication (overrides profile)')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,KAAK,UAAU,kBAAkB,CAC/B,YAAoB,EACpB,OAAoB;IAEpB,OAAO,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,KAAK,UAAU,kBAAkB,CAC/B,YAAoB,EACpB,OAAoB;IAEpB,OAAO,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mCAAmC,CAAC;SAChD,QAAQ,CAAC,gBAAgB,EAAE,+DAA+D,CAAC;SAC3F,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;SAClE,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;SAC3E,MAAM,CAAC,aAAa,EAAE,uDAAuD,CAAC;SAC9E,MAAM,CAAC,gBAAgB,EAAE,iDAAiD,EAAE,gBAAgB,CAAC;SAC7F,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAmB,EAAE,OAAoB,EAAE,EAAE;QAC5E,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,uBAAuB,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
package/dist/commands/push.js
CHANGED
|
@@ -7,7 +7,7 @@ async function pushPackageCommand(packageInput, options) {
|
|
|
7
7
|
export function setupPushCommand(program) {
|
|
8
8
|
program
|
|
9
9
|
.command('push')
|
|
10
|
-
.description('Push
|
|
10
|
+
.description('Push package to remote registry')
|
|
11
11
|
.argument('<package-name>', 'name of the package to push. Supports package@version syntax.')
|
|
12
12
|
.option('--profile <profile>', 'profile to use for authentication')
|
|
13
13
|
.option('--api-key <key>', 'API key for authentication (overrides profile)')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,KAAK,UAAU,kBAAkB,CAC/B,YAAoB,EACpB,OAAoB;IAEpB,OAAO,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,KAAK,UAAU,kBAAkB,CAC/B,YAAoB,EACpB,OAAoB;IAEpB,OAAO,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iCAAiC,CAAC;SAC9C,QAAQ,CAAC,gBAAgB,EAAE,+DAA+D,CAAC;SAC3F,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;SAClE,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;SAC3E,MAAM,CAAC,gBAAgB,EAAE,iDAAiD,EAAE,gBAAgB,CAAC;SAC7F,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAmB,EAAE,OAAoB,EAAE,EAAE;QAC5E,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,uBAAuB,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { withErrorHandling } from '../utils/errors.js';
|
|
2
|
+
import { runRemoveFromSourcePipeline } from '../core/remove/remove-from-source-pipeline.js';
|
|
3
|
+
import { readWorkspaceIndex } from '../utils/workspace-index-yml.js';
|
|
4
|
+
import { formatPathForDisplay } from '../utils/formatters.js';
|
|
5
|
+
export function setupRemoveCommand(program) {
|
|
6
|
+
program
|
|
7
|
+
.command('remove')
|
|
8
|
+
.alias('rm')
|
|
9
|
+
.argument('<package-name>', 'package name')
|
|
10
|
+
.argument('<path>', 'file or directory to remove from package')
|
|
11
|
+
.description('Remove files from a mutable package source')
|
|
12
|
+
.option('--apply', 'Apply changes to workspace immediately (requires package to be installed)')
|
|
13
|
+
.option('--force', 'Skip confirmation prompts')
|
|
14
|
+
.option('--dry-run', 'Preview what would be removed without actually deleting')
|
|
15
|
+
.action(withErrorHandling(async (packageName, pathArg, options) => {
|
|
16
|
+
const result = await runRemoveFromSourcePipeline(packageName, pathArg, options);
|
|
17
|
+
if (!result.success) {
|
|
18
|
+
throw new Error(result.error || 'Remove operation failed');
|
|
19
|
+
}
|
|
20
|
+
// Provide helpful feedback
|
|
21
|
+
if (result.data) {
|
|
22
|
+
const cwd = process.cwd();
|
|
23
|
+
const { filesRemoved, sourcePath, sourceType, packageName: resolvedName, removedPaths } = result.data;
|
|
24
|
+
// Format the path for display using unified formatter
|
|
25
|
+
const displayPath = formatPathForDisplay(sourcePath, cwd);
|
|
26
|
+
if (options.dryRun) {
|
|
27
|
+
console.log(`\n(dry-run) Would remove ${filesRemoved} file${filesRemoved !== 1 ? 's' : ''} from ${resolvedName}`);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
console.log(`\nā Removed ${filesRemoved} file${filesRemoved !== 1 ? 's' : ''} from ${resolvedName}`);
|
|
31
|
+
}
|
|
32
|
+
console.log(` Path: ${displayPath}`);
|
|
33
|
+
console.log(` Type: ${sourceType} package`);
|
|
34
|
+
// Show removed files (limited display)
|
|
35
|
+
if (removedPaths.length > 0) {
|
|
36
|
+
const maxDisplay = 10;
|
|
37
|
+
console.log(`\nFiles ${options.dryRun ? 'to be removed' : 'removed'}:`);
|
|
38
|
+
const displayPaths = removedPaths.slice(0, maxDisplay);
|
|
39
|
+
for (const path of displayPaths) {
|
|
40
|
+
console.log(` - ${path}`);
|
|
41
|
+
}
|
|
42
|
+
if (removedPaths.length > maxDisplay) {
|
|
43
|
+
console.log(` ... and ${removedPaths.length - maxDisplay} more`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (!options.apply && !options.dryRun) {
|
|
47
|
+
// Check if package is installed in workspace
|
|
48
|
+
const workspaceIndexRecord = await readWorkspaceIndex(cwd);
|
|
49
|
+
const isInstalled = !!workspaceIndexRecord.index.packages[resolvedName];
|
|
50
|
+
if (isInstalled) {
|
|
51
|
+
console.log(`\nš” Deletions not synced to workspace.`);
|
|
52
|
+
console.log(` To sync deletions, run:`);
|
|
53
|
+
console.log(` opkg apply ${resolvedName}`);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.log(`\nš” Package not installed in workspace.`);
|
|
57
|
+
console.log(` If you install this package later, the removed files won't be included.`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAgC,MAAM,+CAA+C,CAAC;AAC1H,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,KAAK,CAAC,IAAI,CAAC;SACX,QAAQ,CAAC,gBAAgB,EAAE,cAAc,CAAC;SAC1C,QAAQ,CAAC,QAAQ,EAAE,0CAA0C,CAAC;SAC9D,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,SAAS,EAAE,2EAA2E,CAAC;SAC9F,MAAM,CAAC,SAAS,EAAE,2BAA2B,CAAC;SAC9C,MAAM,CAAC,WAAW,EAAE,yDAAyD,CAAC;SAC9E,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,WAA+B,EAAE,OAA2B,EAAE,OAAgC,EAAE,EAAE;QACzH,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,yBAAyB,CAAC,CAAC;QAC7D,CAAC;QAED,2BAA2B;QAC3B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YAEtG,sDAAsD;YACtD,MAAM,WAAW,GAAG,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAE1D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,4BAA4B,YAAY,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC,CAAC;YACpH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,eAAe,YAAY,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC,CAAC;YACvG,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,UAAU,CAAC,CAAC;YAE7C,uCAAuC;YACvC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;gBAExE,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACvD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;oBAChC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBAC7B,CAAC;gBAED,IAAI,YAAY,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;oBACrC,OAAO,CAAC,GAAG,CAAC,aAAa,YAAY,CAAC,MAAM,GAAG,UAAU,OAAO,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACtC,6CAA6C;gBAC7C,MAAM,oBAAoB,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBAC3D,MAAM,WAAW,GAAG,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAExE,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;oBACvD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;oBAC1C,OAAO,CAAC,GAAG,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;oBACxD,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;gBAC5F,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
|