You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: remove self-install references and update architecture docs
Updated to reflect Phase 1-3 changes:
- Removed all SelfInstall/self-installation references
- Updated CONTRIBUTING.md to use RegisterManagerV2 pattern
- Updated architecture.md to remove self-install capabilities
- Updated code-map.md to remove deleted tools.go reference
- Updated package-management.md to remove bootstrap examples
- Updated cli.md to clarify manager prerequisites
All docs now correctly state package managers must be
pre-installed, with plonk doctor providing instructions.
Copy file name to clipboardExpand all lines: docs/architecture.md
+8-15Lines changed: 8 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -69,7 +69,7 @@ Resources are organized by type:
69
69
- Package specification parsing (`spec.go`)
70
70
- Command execution abstraction (`executor.go`)
71
71
- Operations for install, uninstall, search, info, upgrade
72
-
- Health checking and self-installation capabilities
72
+
- Health checking capabilities
73
73
- Outdated package detection
74
74
75
75
Supported package managers:
@@ -123,7 +123,6 @@ The lock file uses a versioned format for future compatibility.
123
123
124
124
- Clone command implementation
125
125
- Git repository cloning
126
-
- Automatic package manager installation via SelfInstall()
127
126
- Dependency-aware installation that resolves package manager dependencies and installs in correct order
128
127
- Tool installation
129
128
@@ -151,12 +150,13 @@ Plonk works without any configuration files by using sensible defaults:
151
150
Each package manager implements a common interface following the Interface Segregation Principle (ISP). This allows:
152
151
- Consistent behavior across different tools
153
152
- Easy addition of new package managers
154
-
- Optional capability detection via type assertions (search, info, upgrade, health checks, self-install)
153
+
- Optional capability detection via type assertions (search, info, upgrade, health checks)
155
154
- Managers implement only the capabilities they support
156
155
- Self-health checking and diagnostics
157
-
- Automatic self-installation during environment setup
158
156
- Package upgrade management
159
157
158
+
**Note**: Package managers must be installed manually or via other supported package managers before use. The `plonk doctor` command provides installation instructions for missing managers. All managers are registered using `RegisterManagerV2` with executor injection for testability.
159
+
160
160
See [Capability Usage Examples](#capability-usage-examples) for implementation patterns.
161
161
162
162
### 3. State-Based Management
@@ -231,10 +231,10 @@ All commands support multiple output formats (table, JSON, YAML) to support:
231
231
232
232
1. Implement the `PackageManager` interface in `internal/resources/packages/`
- No elevated privileges required for user packages
283
283
- Atomic file operations prevent corruption
284
284
- Backup files created before modifications
285
-
- Package manager self-installation may execute remote scripts (opt-in via SelfInstall capability)
286
285
- Git operations use standard git binary
287
-
- Users should review package manager installation scripts before using automatic installation
286
+
- Package managers must be installed separately before use
288
287
289
288
## Future Considerations
290
289
@@ -321,11 +320,6 @@ if upgrader, ok := mgr.(packages.PackageUpgrader); ok {
321
320
if hc, ok := mgr.(packages.PackageHealthChecker); ok {
322
321
_, _ = hc.CheckHealth(ctx)
323
322
}
324
-
325
-
// Self-install (PackageSelfInstaller)
326
-
if si, ok := mgr.(packages.PackageSelfInstaller); ok {
327
-
_ = si.SelfInstall(ctx)
328
-
}
329
323
```
330
324
331
325
Helper predicates:
@@ -334,7 +328,6 @@ if packages.SupportsInfo(mgr) { /* safe to assert PackageInfoProvider */ }
334
328
if packages.SupportsSearch(mgr) { /* safe to assert PackageSearcher */ }
335
329
if packages.SupportsUpgrade(mgr) { /* safe to assert PackageUpgrader */ }
336
330
if packages.SupportsHealthCheck(mgr) { /* safe to assert PackageHealthChecker */ }
337
-
if packages.SupportsSelfInstall(mgr) { /* safe to assert PackageSelfInstaller */ }
338
331
```
339
332
340
333
These examples demonstrate the intent of the capability model: managers may omit optional features; callers should not assume availability without checking.
0 commit comments