mirror of
https://github.com/mark3labs/kit.git
synced 2026-06-14 03:30:26 +00:00
c5e6ca6e4d
Add comprehensive extension installation system for Kit: Features: - kit install <git-url> - Install extensions from git repos - kit install <url> --local - Install to project .kit/git/ directory - kit install <url> --select - Interactive selection for multi-extension repos - kit install <url> --update - Update installed extensions - kit install <url> --uninstall - Remove installed extensions - Version pinning via @ref (tags, branches, commits) - Support multiple URL formats (shorthand, git:, https, ssh) Implementation: - internal/extensions/installer.go - Git clone, checkout, validation - internal/extensions/manifest.go - Package tracking with Include filtering - internal/extensions/loader.go - Respect Include field when loading - cmd/install.go - Cobra command with interactive prompts - PromptMultiSelectConfig API - Multi-select prompts for extensions Storage: - Global: ~/.local/share/kit/git/<host>/<owner>/<repo>/ - Project: .kit/git/<host>/<owner>/<repo>/ - Manifests: packages.json tracking installed packages Examples: - Reorganized examples/extensions/ with README.md - Added status-tools/ multi-file extension example - Created comprehensive install guide in SKILL.md Testing: - Added installer_test.go with 15+ test cases - All tests pass, build clean Closes #extension-distribution
44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
//go:build ignore
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"kit/ext"
|
|
)
|
|
|
|
// Helper functions for the status-tools extension
|
|
// These are used by main.go but kept in a separate file
|
|
// to demonstrate the multi-file extension pattern.
|
|
|
|
// formatMemory converts bytes to human-readable format
|
|
func formatMemory(bytes int64) string {
|
|
const (
|
|
KB = 1024
|
|
MB = 1024 * KB
|
|
GB = 1024 * MB
|
|
)
|
|
|
|
switch {
|
|
case bytes >= GB:
|
|
return fmt.Sprintf("%.2f GB", float64(bytes)/float64(GB))
|
|
case bytes >= MB:
|
|
return fmt.Sprintf("%.2f MB", float64(bytes)/float64(MB))
|
|
case bytes >= KB:
|
|
return fmt.Sprintf("%.2f KB", float64(bytes)/float64(KB))
|
|
default:
|
|
return fmt.Sprintf("%d B", bytes)
|
|
}
|
|
}
|
|
|
|
// showMemoryStatus displays memory usage (placeholder)
|
|
func showMemoryStatus(ctx ext.Context) {
|
|
// This is a placeholder that would show memory stats
|
|
// In a real extension, you'd integrate with system metrics
|
|
ctx.PrintBlock(ext.PrintBlockOpts{
|
|
Text: "Memory status monitoring not yet implemented",
|
|
BorderColor: "#f9e2af",
|
|
Subtitle: "Memory",
|
|
})
|
|
}
|