refactor: move internal/ to pkg/ for external importability
Moves all packages from internal/ to pkg/ so they can be imported by external modules (needed for claude-pm integration). - internal/app/ → pkg/app/ - internal/docker/ → pkg/docker/ - internal/config/ → pkg/config/ - internal/utils/ → pkg/utils/ Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type RateLimiter struct {
|
||||
lastTime time.Time
|
||||
minInterval time.Duration
|
||||
}
|
||||
|
||||
func NewRateLimiter(interval time.Duration) *RateLimiter {
|
||||
return &RateLimiter{
|
||||
minInterval: interval,
|
||||
}
|
||||
}
|
||||
|
||||
func (r *RateLimiter) Allow() bool {
|
||||
now := time.Now()
|
||||
if now.Sub(r.lastTime) >= r.minInterval {
|
||||
r.lastTime = now
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (r *RateLimiter) Reset() {
|
||||
r.lastTime = time.Time{}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package utils
|
||||
|
||||
type ScrollDirection int
|
||||
|
||||
const (
|
||||
ScrollUp ScrollDirection = iota
|
||||
ScrollDown
|
||||
ScrollPageUp
|
||||
ScrollPageDown
|
||||
ScrollHome
|
||||
ScrollEnd
|
||||
)
|
||||
|
||||
func (sd ScrollDirection) String() string {
|
||||
switch sd {
|
||||
case ScrollUp:
|
||||
return "up"
|
||||
case ScrollDown:
|
||||
return "down"
|
||||
case ScrollPageUp:
|
||||
return "pageup"
|
||||
case ScrollPageDown:
|
||||
return "pagedown"
|
||||
case ScrollHome:
|
||||
return "home"
|
||||
case ScrollEnd:
|
||||
return "end"
|
||||
default:
|
||||
return "unknown"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package utils
|
||||
|
||||
type ContainerStats struct {
|
||||
ID string
|
||||
CPU float64
|
||||
Memory uint64
|
||||
MemoryLimit uint64
|
||||
RX uint64
|
||||
TX uint64
|
||||
}
|
||||
|
||||
func ContainerStatsFromDocker(stats interface{}, id string) *ContainerStats {
|
||||
var cpu float64
|
||||
var mem, memLimit, rx, tx uint64
|
||||
|
||||
return &ContainerStats{
|
||||
ID: id,
|
||||
CPU: cpu,
|
||||
Memory: mem,
|
||||
MemoryLimit: memLimit,
|
||||
RX: rx,
|
||||
TX: tx,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/olekukonko/tablewriter"
|
||||
)
|
||||
|
||||
func FormatTable(data [][]string) string {
|
||||
var sb strings.Builder
|
||||
table := tablewriter.NewWriter(&sb)
|
||||
table.SetHeader([]string{})
|
||||
table.SetBorder(false)
|
||||
table.SetColMinWidth(0, 10)
|
||||
table.SetColMinWidth(1, 20)
|
||||
table.SetColMinWidth(2, 25)
|
||||
table.SetColMinWidth(3, 15)
|
||||
table.SetColMinWidth(4, 20)
|
||||
|
||||
for _, row := range data {
|
||||
table.Append(row)
|
||||
}
|
||||
|
||||
table.Render()
|
||||
return sb.String()
|
||||
}
|
||||
Reference in New Issue
Block a user