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,483 @@
|
|
|
1
|
+
# Show Command
|
|
2
|
+
|
|
3
|
+
`opkg show` displays detailed information about packages from any source (local or remote). It provides a unified way to inspect package metadata, files, dependencies, and source information.
|
|
4
|
+
|
|
5
|
+
## Purpose & Direction
|
|
6
|
+
- **Inspection Only**: Read-only command; shows package details without modifying anything
|
|
7
|
+
- **Multi-Source**: Supports package names, paths, git URLs, tarballs
|
|
8
|
+
- **Local-First**: Searches local sources first (CWD → Workspace → Global → Registry)
|
|
9
|
+
- **Future-Ready**: Designed to support remote metadata fetching
|
|
10
|
+
|
|
11
|
+
## Command Syntax
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
opkg show <package>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Where `<package>` can be:
|
|
18
|
+
- Package name: `my-package`, `my-package@1.2.3`, `@scope/package`
|
|
19
|
+
- Path: `.`, `./path/to/package`, `/absolute/path`, `.openpackage/packages/pkg`
|
|
20
|
+
- Git URL: `git:https://github.com/user/repo.git#ref`, `github:user/repo#tag`
|
|
21
|
+
- Tarball: `./package.tgz`, `/path/to/package.tar.gz`
|
|
22
|
+
|
|
23
|
+
## Flow
|
|
24
|
+
|
|
25
|
+
### Local Package Show Flow
|
|
26
|
+
|
|
27
|
+
1. **Input Classification** (via `classifyPackageInput()`)
|
|
28
|
+
- Detect input type: registry name, path, git URL, or tarball
|
|
29
|
+
- Parse git specs, check path patterns, validate tarballs
|
|
30
|
+
|
|
31
|
+
2. **Package Resolution** (via `resolvePackageForShow()`)
|
|
32
|
+
- **For names**: Use unified resolution (CWD → Workspace → Global → Registry)
|
|
33
|
+
- **For paths**: Validate and resolve to absolute path
|
|
34
|
+
- **For git URLs**: Clone repository to temp location
|
|
35
|
+
- **For tarballs**: Validate tarball exists and is readable
|
|
36
|
+
|
|
37
|
+
3. **Information Collection** (via `collectPackageInfo()`)
|
|
38
|
+
- Load `openpackage.yml` manifest
|
|
39
|
+
- Discover all package files (filtered for junk)
|
|
40
|
+
- Detect partial packages (from manifest flag or missing files)
|
|
41
|
+
- Determine source mutability based on location
|
|
42
|
+
|
|
43
|
+
4. **Display Output** (via `displayPackageInfo()`)
|
|
44
|
+
- Package metadata (name, version, description, etc.)
|
|
45
|
+
- Source information (type, path, mutability)
|
|
46
|
+
- Dependencies (packages and dev-packages)
|
|
47
|
+
- File list (sorted, tree-style display)
|
|
48
|
+
- Resolution info (if multiple candidates found)
|
|
49
|
+
|
|
50
|
+
## Resolution Priority
|
|
51
|
+
|
|
52
|
+
For package names, uses the same resolution strategy as `pack`:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Priority Order:
|
|
56
|
+
1. CWD (current directory, if name matches)
|
|
57
|
+
2. Workspace packages (.openpackage/packages/)
|
|
58
|
+
3. Global packages (~/.openpackage/packages/)
|
|
59
|
+
4. Local registry (~/.openpackage/registry/)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Multi-Candidate Selection Rules
|
|
63
|
+
|
|
64
|
+
When multiple sources have the package:
|
|
65
|
+
|
|
66
|
+
1. **CWD match**: Always wins if checked and name matches
|
|
67
|
+
2. **Workspace override**: Always wins among non-CWD sources
|
|
68
|
+
3. **Version comparison**: Between global and registry, highest version wins
|
|
69
|
+
4. **Tie-breaker**: Same version prefers global (mutable) over registry (immutable)
|
|
70
|
+
|
|
71
|
+
### Resolution Information Display
|
|
72
|
+
|
|
73
|
+
When multiple candidates exist, show displays:
|
|
74
|
+
```
|
|
75
|
+
Resolved from multiple sources:
|
|
76
|
+
✓ workspace packages: 2.0.0
|
|
77
|
+
global packages: 1.5.0
|
|
78
|
+
local registry: 1.8.0
|
|
79
|
+
Selection reason: workspace packages always override
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Scope Hint Display
|
|
83
|
+
|
|
84
|
+
When a package with the same name exists in multiple scopes (workspace, global, registry), show displays a hint after the main package information:
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
💡 This package also exists in other scopes:
|
|
88
|
+
• global packages (v1.5.0)
|
|
89
|
+
View with: opkg show /Users/user/.openpackage/packages/my-package
|
|
90
|
+
• local registry (v1.8.0)
|
|
91
|
+
View with: opkg show /Users/user/.openpackage/registry/my-package/1.8.0
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
This helps users understand that:
|
|
95
|
+
- The same package name can exist in multiple locations
|
|
96
|
+
- Each scope may have a different version
|
|
97
|
+
- Users can view each scope's package using the provided command
|
|
98
|
+
|
|
99
|
+
## Source Type Detection
|
|
100
|
+
|
|
101
|
+
| Location | Type | Mutable | Label |
|
|
102
|
+
|----------|------|---------|-------|
|
|
103
|
+
| Current directory (matching name) | `cwd` | Yes | "current directory" |
|
|
104
|
+
| `.openpackage/packages/` (workspace) | `workspace` | Yes | "workspace packages" |
|
|
105
|
+
| `~/.openpackage/packages/` (global) | `global` | Yes | "global packages" |
|
|
106
|
+
| `~/.openpackage/registry/` | `registry` | No | "local registry" |
|
|
107
|
+
| Git repository | `git` | No | "git repository" |
|
|
108
|
+
| Tarball file | `tarball` | No | "tarball" |
|
|
109
|
+
| Other path | `path` | Yes | "path" |
|
|
110
|
+
|
|
111
|
+
Mutability determines if the package can be modified via `save`/`add` commands.
|
|
112
|
+
|
|
113
|
+
## Display Format
|
|
114
|
+
|
|
115
|
+
### Standard Output
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
✓ Package: my-package
|
|
119
|
+
✓ Version: 1.2.3
|
|
120
|
+
✓ Source: workspace packages (.openpackage/packages/my-package)
|
|
121
|
+
✓ Type: mutable
|
|
122
|
+
✓ Description: Example package for demonstration
|
|
123
|
+
✓ Keywords: example, test, demo
|
|
124
|
+
✓ Author: John Doe
|
|
125
|
+
✓ License: MIT
|
|
126
|
+
✓ Homepage: https://example.com
|
|
127
|
+
✓ Repository: git - https://github.com/user/my-package.git
|
|
128
|
+
✓ Private: No
|
|
129
|
+
✓ Imported Packages (2):
|
|
130
|
+
• dependency-one@^1.0.0 (compatible with 1.0.0 (^1.0.0))
|
|
131
|
+
• dependency-two@~2.1.0 (compatible with 2.1.x (~2.1.0))
|
|
132
|
+
✓ Imported Dev Packages (1):
|
|
133
|
+
• dev-tool@^3.0.0 (compatible with 3.0.0 (^3.0.0))
|
|
134
|
+
✓ Files: 15
|
|
135
|
+
├── commands/example.md
|
|
136
|
+
├── commands/helper.md
|
|
137
|
+
├── openpackage.yml
|
|
138
|
+
├── README.md
|
|
139
|
+
├── rules/code-style.md
|
|
140
|
+
├── ...
|
|
141
|
+
|
|
142
|
+
💡 This package also exists in other scopes:
|
|
143
|
+
• global packages (v1.5.0)
|
|
144
|
+
View with: opkg show /Users/user/.openpackage/packages/my-package
|
|
145
|
+
• local registry (v1.8.0)
|
|
146
|
+
View with: opkg show /Users/user/.openpackage/registry/my-package/1.8.0
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Note: The scope hint section only appears when the package exists in multiple scopes.
|
|
150
|
+
|
|
151
|
+
### Partial Package Indicator
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
✓ Partial: Yes
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Shows when package is incomplete (e.g., partial pull from remote).
|
|
158
|
+
|
|
159
|
+
### Unversioned Packages
|
|
160
|
+
|
|
161
|
+
For packages without a version field:
|
|
162
|
+
```
|
|
163
|
+
✓ Package: dev-package
|
|
164
|
+
✓ Source: workspace packages (.openpackage/packages/dev-package)
|
|
165
|
+
✓ Type: mutable
|
|
166
|
+
✓ Description: Development version
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Version line is omitted entirely.
|
|
170
|
+
|
|
171
|
+
## Scope Awareness
|
|
172
|
+
|
|
173
|
+
### Understanding Scopes
|
|
174
|
+
|
|
175
|
+
OpenPackage supports multiple scopes where packages can exist:
|
|
176
|
+
|
|
177
|
+
- **Workspace Scope** (`.openpackage/packages/`): Project-specific packages
|
|
178
|
+
- **Global Scope** (`~/.openpackage/packages/`): Cross-project shared packages
|
|
179
|
+
- **Registry Scope** (`~/.openpackage/registry/`): Immutable version snapshots
|
|
180
|
+
|
|
181
|
+
The same package name can exist in multiple scopes simultaneously, each potentially with different versions or content.
|
|
182
|
+
|
|
183
|
+
### Multi-Scope Detection
|
|
184
|
+
|
|
185
|
+
When you run `opkg show <package-name>`, the command:
|
|
186
|
+
|
|
187
|
+
1. **Resolves** using standard priority (CWD → Workspace → Global → Registry)
|
|
188
|
+
2. **Displays** the selected package information
|
|
189
|
+
3. **Discovers** if the same package exists in other scopes
|
|
190
|
+
4. **Shows hint** with commands to view packages in other scopes
|
|
191
|
+
|
|
192
|
+
### Example: Package in Multiple Scopes
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
$ opkg show my-rules
|
|
196
|
+
|
|
197
|
+
✓ Package: my-rules
|
|
198
|
+
✓ Version: 2.0.0
|
|
199
|
+
✓ Source: workspace packages (.openpackage/packages/my-rules)
|
|
200
|
+
✓ Type: mutable
|
|
201
|
+
✓ Description: Project-specific rules
|
|
202
|
+
✓ Files: 10
|
|
203
|
+
├── openpackage.yml
|
|
204
|
+
├── rules/coding-standards.md
|
|
205
|
+
├── ...
|
|
206
|
+
|
|
207
|
+
💡 This package also exists in other scopes:
|
|
208
|
+
• global packages (v1.5.0)
|
|
209
|
+
View with: opkg show /Users/user/.openpackage/packages/my-rules
|
|
210
|
+
• local registry (v1.8.0)
|
|
211
|
+
View with: opkg show /Users/user/.openpackage/registry/my-rules/1.8.0
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
In this example:
|
|
215
|
+
- **Workspace version (2.0.0)** is shown (highest priority)
|
|
216
|
+
- **Global version (1.5.0)** exists with different content
|
|
217
|
+
- **Registry version (1.8.0)** is an older immutable snapshot
|
|
218
|
+
- Each can be viewed separately using the provided commands
|
|
219
|
+
|
|
220
|
+
### Use Cases for Multi-Scope Packages
|
|
221
|
+
|
|
222
|
+
1. **Development Workflow**: Work on a package in workspace scope while keeping a stable version in registry
|
|
223
|
+
2. **Testing Changes**: Compare workspace changes against global or registry versions
|
|
224
|
+
3. **Version Management**: Maintain multiple versions for different purposes
|
|
225
|
+
4. **Scope Migration**: Elevate workspace packages to global, or localize global packages
|
|
226
|
+
|
|
227
|
+
### Viewing Specific Scopes
|
|
228
|
+
|
|
229
|
+
To view a package in a specific scope, use the path directly:
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
# View workspace version
|
|
233
|
+
opkg show .openpackage/packages/my-package
|
|
234
|
+
|
|
235
|
+
# View global version
|
|
236
|
+
opkg show ~/.openpackage/packages/my-package
|
|
237
|
+
|
|
238
|
+
# View registry version
|
|
239
|
+
opkg show ~/.openpackage/registry/my-package/1.2.3
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
This bypasses scope resolution and shows exactly what you specify.
|
|
243
|
+
|
|
244
|
+
## Examples
|
|
245
|
+
|
|
246
|
+
### Show by Package Name
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
opkg show my-package
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Searches all local sources and displays the best match.
|
|
253
|
+
|
|
254
|
+
### Show Specific Version
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
opkg show my-package@1.2.3
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Resolves to the specific version from registry or available sources.
|
|
261
|
+
|
|
262
|
+
### Show by Path
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
# Current directory
|
|
266
|
+
opkg show .
|
|
267
|
+
|
|
268
|
+
# Relative path
|
|
269
|
+
opkg show ./packages/shared-utils
|
|
270
|
+
|
|
271
|
+
# Workspace package path
|
|
272
|
+
opkg show .openpackage/packages/my-package
|
|
273
|
+
|
|
274
|
+
# Absolute path
|
|
275
|
+
opkg show /Users/me/projects/my-package
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Show from Git
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
# Full git URL
|
|
282
|
+
opkg show git:https://github.com/user/repo.git
|
|
283
|
+
|
|
284
|
+
# With branch/tag/commit
|
|
285
|
+
opkg show git:https://github.com/user/repo.git#main
|
|
286
|
+
opkg show git:https://github.com/user/repo.git#v1.0.0
|
|
287
|
+
|
|
288
|
+
# GitHub shorthand
|
|
289
|
+
opkg show github:user/repo
|
|
290
|
+
opkg show github:user/repo#develop
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### Show from Tarball
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
opkg show ./downloaded-package.tgz
|
|
297
|
+
opkg show /path/to/package.tar.gz
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
## Options
|
|
301
|
+
|
|
302
|
+
Currently, show command has no options. Future options may include:
|
|
303
|
+
|
|
304
|
+
- `--remote`: Fetch from remote registry (skip local search)
|
|
305
|
+
- `--json`: Output in JSON format for scripting
|
|
306
|
+
- `--tree`: Display dependency tree
|
|
307
|
+
- `--files-only`: Show only file list
|
|
308
|
+
- `--download`: Download remote package for complete info (with remote support)
|
|
309
|
+
|
|
310
|
+
## Errors
|
|
311
|
+
|
|
312
|
+
### Package Not Found
|
|
313
|
+
|
|
314
|
+
```
|
|
315
|
+
Error: Package 'my-package' not found locally
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
Occurs when no local source has the package.
|
|
319
|
+
|
|
320
|
+
**Future**: Will suggest checking remote registry.
|
|
321
|
+
|
|
322
|
+
### Invalid Path
|
|
323
|
+
|
|
324
|
+
```
|
|
325
|
+
Error: Path './invalid' exists but is not a valid OpenPackage directory.
|
|
326
|
+
Valid packages must contain openpackage.yml
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
Occurs when path doesn't contain a valid package.
|
|
330
|
+
|
|
331
|
+
### Git Clone Failure
|
|
332
|
+
|
|
333
|
+
```
|
|
334
|
+
Error: Git repository does not contain a valid OpenPackage (missing openpackage.yml)
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
Occurs when git URL doesn't point to a valid OpenPackage repository.
|
|
338
|
+
|
|
339
|
+
### Validation Error
|
|
340
|
+
|
|
341
|
+
```
|
|
342
|
+
Error: Failed to load package manifest from: /path/to/package
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
Occurs when `openpackage.yml` is malformed or missing.
|
|
346
|
+
|
|
347
|
+
## Integration Points
|
|
348
|
+
|
|
349
|
+
### Reuses Existing Infrastructure
|
|
350
|
+
|
|
351
|
+
- **Package Input Classification**: `classifyPackageInput()` from `package-input.ts`
|
|
352
|
+
- **Unified Resolution**: `resolvePackageByName()` from `package-name-resolution.ts`
|
|
353
|
+
- **Git Loading**: `loadPackageFromGit()` from `install/git-package-loader.ts`
|
|
354
|
+
- **Package Validation**: `isValidPackageDirectory()` from `package-context.ts`
|
|
355
|
+
- **File Discovery**: `packageManager.loadPackage()` from `package.ts`
|
|
356
|
+
- **Path Formatting**: `formatPathForDisplay()` from `formatters.ts`
|
|
357
|
+
- **Version Utilities**: `formatVersionLabel()`, `describeVersionRange()`, `isUnversionedVersion()`
|
|
358
|
+
|
|
359
|
+
### Used By
|
|
360
|
+
|
|
361
|
+
Currently standalone; future uses may include:
|
|
362
|
+
- Interactive package selector (before install)
|
|
363
|
+
- Package comparison tools
|
|
364
|
+
- Documentation generators
|
|
365
|
+
|
|
366
|
+
## Implementation Modules
|
|
367
|
+
|
|
368
|
+
Located in `src/core/show/`:
|
|
369
|
+
|
|
370
|
+
```
|
|
371
|
+
show/
|
|
372
|
+
├── show-types.ts # Type definitions
|
|
373
|
+
├── package-resolver.ts # Resolution logic (~270 lines)
|
|
374
|
+
├── scope-discovery.ts # Scope discovery logic (~200 lines)
|
|
375
|
+
├── show-output.ts # Display formatting (~200 lines)
|
|
376
|
+
└── show-pipeline.ts # Orchestration (~120 lines)
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
### Module Responsibilities
|
|
380
|
+
|
|
381
|
+
**show-types.ts**
|
|
382
|
+
- Type definitions for show domain
|
|
383
|
+
- `ShowSourceType`, `ShowPackageSource`, `ShowPackageInfo`, `ShowResolutionInfo`
|
|
384
|
+
- `ScopeHintInfo` for multi-scope hints
|
|
385
|
+
|
|
386
|
+
**package-resolver.ts**
|
|
387
|
+
- Main: `resolvePackageForShow(packageInput, cwd)`
|
|
388
|
+
- Handles all input types and resolution strategies
|
|
389
|
+
- Determines source type and mutability
|
|
390
|
+
- Converts resolution info to show-specific format
|
|
391
|
+
- Integrates scope discovery for hints
|
|
392
|
+
|
|
393
|
+
**scope-discovery.ts** (NEW)
|
|
394
|
+
- Main: `discoverPackagesAcrossScopes(packageName, cwd)`
|
|
395
|
+
- Helper: `hasMultipleScopes(packageName, cwd)`
|
|
396
|
+
- Discovers packages in workspace, global, and registry scopes
|
|
397
|
+
- Returns `ScopeDiscoveryResult` with all found packages
|
|
398
|
+
- Generates show commands for each scope
|
|
399
|
+
|
|
400
|
+
**show-output.ts**
|
|
401
|
+
- Main: `displayPackageInfo(info, cwd, scopeHintInfo?)`
|
|
402
|
+
- Helper: `displayResolutionInfo(info)`
|
|
403
|
+
- Helper: `displayScopeHint(scopeHintInfo)` (NEW)
|
|
404
|
+
- All console output formatting
|
|
405
|
+
- Dependency and file list display
|
|
406
|
+
- Scope hint formatting
|
|
407
|
+
|
|
408
|
+
**show-pipeline.ts**
|
|
409
|
+
- Main: `runShowPipeline(packageInput, cwd)`
|
|
410
|
+
- Orchestrates: resolve → collect → display
|
|
411
|
+
- Error handling and result packaging
|
|
412
|
+
- Passes scope hint info to display
|
|
413
|
+
- Returns `CommandResult`
|
|
414
|
+
|
|
415
|
+
## Testing
|
|
416
|
+
|
|
417
|
+
Test suite: `tests/show-command.test.ts`
|
|
418
|
+
|
|
419
|
+
Covers:
|
|
420
|
+
- ✅ Show workspace package by name
|
|
421
|
+
- ✅ Show package by relative path
|
|
422
|
+
- ✅ Show package from CWD
|
|
423
|
+
- ✅ Show registry package
|
|
424
|
+
- ✅ Show with version specifier
|
|
425
|
+
- ✅ Error handling for non-existent packages
|
|
426
|
+
- ✅ Multi-scope detection and hint display (NEW)
|
|
427
|
+
- ✅ Scope discovery across workspace, global, and registry (NEW)
|
|
428
|
+
|
|
429
|
+
## Future Enhancements
|
|
430
|
+
|
|
431
|
+
### Remote Support (Planned)
|
|
432
|
+
|
|
433
|
+
See [Show Remote Support](./show-remote.md) for detailed spec.
|
|
434
|
+
|
|
435
|
+
**Summary**:
|
|
436
|
+
- Metadata-only fetching by default (fast, lightweight)
|
|
437
|
+
- Optional `--download` flag for complete info
|
|
438
|
+
- Auto-fallback: local not found → try remote
|
|
439
|
+
- Clear indication of source (local vs remote)
|
|
440
|
+
|
|
441
|
+
**Example**:
|
|
442
|
+
```bash
|
|
443
|
+
opkg show community-package --remote
|
|
444
|
+
# Fetches metadata from remote registry (2-5 KB)
|
|
445
|
+
# Displays: name, version, size, timestamps, available versions
|
|
446
|
+
# Note: File list not available (metadata only)
|
|
447
|
+
|
|
448
|
+
opkg show community-package --remote --download
|
|
449
|
+
# Downloads full tarball to temp
|
|
450
|
+
# Displays: complete info including file list
|
|
451
|
+
# Cleans up temp files after display
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
### Additional Features (Future)
|
|
455
|
+
|
|
456
|
+
- **JSON Output**: `--json` for scripting and tooling integration
|
|
457
|
+
- **Comparison Mode**: `--compare` to show local vs remote differences
|
|
458
|
+
- **Dependency Tree**: `--tree` to visualize full dependency graph
|
|
459
|
+
- **File Preview**: `--preview <file>` to show file contents
|
|
460
|
+
- **Batch Show**: `opkg show pkg1 pkg2 pkg3` to show multiple packages
|
|
461
|
+
|
|
462
|
+
## Design Principles
|
|
463
|
+
|
|
464
|
+
1. **Read-Only**: Never modifies packages or system state
|
|
465
|
+
2. **Consistent**: Uses same resolution as pack (vs install which differs)
|
|
466
|
+
3. **Informative**: Shows source, mutability, and resolution details
|
|
467
|
+
4. **Fast**: Local operations are immediate
|
|
468
|
+
5. **Extensible**: Clean architecture for future features
|
|
469
|
+
6. **User-Friendly**: Clear output and helpful error messages
|
|
470
|
+
|
|
471
|
+
## Related Commands
|
|
472
|
+
|
|
473
|
+
- **pack**: Creates immutable snapshot; show can inspect before/after
|
|
474
|
+
- **install**: Materializes packages; show can inspect what's installed
|
|
475
|
+
- **status**: Compares workspace vs source; show displays source details
|
|
476
|
+
- **list**: Shows all packages; show displays one in detail
|
|
477
|
+
|
|
478
|
+
## Cross-References
|
|
479
|
+
|
|
480
|
+
- [Package Name Resolution](../pack/package-name-resolution.md) - Resolution strategy
|
|
481
|
+
- [Package Sources](../package-sources.md) - Source types and mutability
|
|
482
|
+
- [Commands Overview](../commands-overview.md) - All commands
|
|
483
|
+
- [CLI Options](../cli-options.md) - Global options
|