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>
35 lines
717 B
Go
35 lines
717 B
Go
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)
|
|
}
|