Step 30: Targeting CLI commands.
tag add/remove/list for machine-local tags. identity prints full label set. --only/--never flags on add. target command to set/clear targeting on existing entries. SetTargeting garden method. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
34
garden/target.go
Normal file
34
garden/target.go
Normal file
@@ -0,0 +1,34 @@
|
||||
package garden
|
||||
|
||||
import "fmt"
|
||||
|
||||
// SetTargeting updates the Only/Never fields on an existing manifest entry.
|
||||
// If clear is true, both fields are reset to nil.
|
||||
func (g *Garden) SetTargeting(path string, only, never []string, clear bool) error {
|
||||
abs, err := ExpandTildePath(path)
|
||||
if err != nil {
|
||||
return fmt.Errorf("expanding path: %w", err)
|
||||
}
|
||||
tilded := toTildePath(abs)
|
||||
|
||||
entry := g.findEntry(tilded)
|
||||
if entry == nil {
|
||||
return fmt.Errorf("not tracking %s", tilded)
|
||||
}
|
||||
|
||||
if clear {
|
||||
entry.Only = nil
|
||||
entry.Never = nil
|
||||
} else {
|
||||
if len(only) > 0 {
|
||||
entry.Only = only
|
||||
entry.Never = nil
|
||||
}
|
||||
if len(never) > 0 {
|
||||
entry.Never = never
|
||||
entry.Only = nil
|
||||
}
|
||||
}
|
||||
|
||||
return g.manifest.Save(g.manifestPath)
|
||||
}
|
||||
Reference in New Issue
Block a user