github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/runners/export/config/config.go (about) 1 package config 2 3 import ( 4 "github.com/ActiveState/cli/internal/captain" 5 "github.com/ActiveState/cli/internal/output" 6 "github.com/ActiveState/cli/internal/primer" 7 ) 8 9 type configurable interface { 10 ConfigPath() string 11 } 12 13 type Config struct { 14 out output.Outputer 15 cfg configurable 16 } 17 18 type ConfigParams struct { 19 Filter Filter 20 } 21 22 type primeable interface { 23 primer.Outputer 24 primer.Configurer 25 } 26 27 func New(prime primeable) *Config { 28 return &Config{prime.Output(), prime.Config()} 29 } 30 31 type valueOutput struct { 32 Value string `json:"value"` 33 } 34 35 func (c *Config) Run(cmd *captain.Command, params *ConfigParams) error { 36 configOutput := map[string]string{ 37 Dir.String(): c.cfg.ConfigPath(), 38 } 39 40 filteredOutput := configOutput 41 if params.Filter.terms != nil { 42 filteredOutput = map[string]string{} 43 for _, term := range params.Filter.terms { 44 if value, ok := configOutput[term.String()]; ok { 45 filteredOutput[term.String()] = value 46 if len(params.Filter.terms) == 1 { 47 c.out.Print(output.Prepare(value, &valueOutput{value})) 48 return nil 49 } 50 } 51 } 52 } 53 54 c.out.Print(output.Prepare(filteredOutput, filteredOutput)) 55 return nil 56 }