Extract workspace subpackage with pure repo helpers
Moves the stateless parts of the workspace subsystem into internal/daemon/workspace: - RepoSpec struct + InspectRepo for host-side git inspection - ImportRepoToGuest (taking a minimal GuestClient interface) with the full-copy and metadata-only / shallow-overlay paths - FinalizeScript, PrepareRepoCopy, ResolveSourcePath - ListSubmodules, ListOverlayPaths, ParsePrepareMode - Git helpers (GitOutput, GitTrimmedOutput, GitResolvedConfigValue, ParseNullSeparatedOutput, RunHostCommand, GitFileURL) and the HostCommandOutputFunc test seam - ShallowFetchDepth const The subpackage imports internal/daemon/session for ShellQuote and FormatStepError so both workspace and session pure helpers live in their own subpackages with a clean session→workspace direction of use. daemon/workspace.go shrinks from 481 → 156 LOC, keeping just the three orchestrator methods (Export, Prepare, prepareLocked) that still touch d.store, d.FindVM, d.dialGuest, d.waitForGuestSSH, and the VM lock set. guestSessionHostCommandOutputFunc is removed from guest_sessions.go (its only caller was workspace.go; the new package has its own copy). All tests green. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
37e02b1576
commit
1d51370d26
3 changed files with 404 additions and 343 deletions
|
|
@ -18,20 +18,6 @@ import (
|
|||
"banger/internal/system"
|
||||
)
|
||||
|
||||
var guestSessionHostCommandOutputFunc = func(ctx context.Context, name string, args ...string) ([]byte, error) {
|
||||
runner := system.NewRunner()
|
||||
output, err := runner.Run(ctx, name, args...)
|
||||
if err == nil {
|
||||
return output, nil
|
||||
}
|
||||
command := strings.TrimSpace(strings.Join(append([]string{name}, args...), " "))
|
||||
detail := strings.TrimSpace(string(output))
|
||||
if detail == "" {
|
||||
return output, fmt.Errorf("%s: %w", command, err)
|
||||
}
|
||||
return output, fmt.Errorf("%s: %w: %s", command, err, detail)
|
||||
}
|
||||
|
||||
type guestSSHClient interface {
|
||||
Close() error
|
||||
RunScript(context.Context, string, io.Writer) error
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue