func (t ToolchainPath) Complete(match string) []flags.Completion { toolchains, err := toolchain.List() if err != nil { log.Println(err) return nil } var comps []flags.Completion for _, tc := range toolchains { if strings.HasPrefix(tc.Path, match) { comps = append(comps, flags.Completion{Item: tc.Path}) } } return comps }
func (c *ToolchainListToolsCmd) Execute(args []string) error { tcs, err := toolchain.List() if err != nil { log.Fatal(err) } fmtStr := "%-40s %-18s %-15s %-25s\n" fmt.Printf(fmtStr, "TOOLCHAIN", "TOOL", "OP", "SOURCE UNIT TYPES") for _, tc := range tcs { if len(c.Args.Toolchains) > 0 { found := false for _, tc2 := range c.Args.Toolchains { if string(tc2) == tc.Path { found = true break } } if !found { continue } } cfg, err := tc.ReadConfig() if err != nil { log.Fatal(err) } for _, t := range cfg.Tools { if c.Op != "" && c.Op != t.Op { continue } if c.SourceUnitType != "" { found := false for _, u := range t.SourceUnitTypes { if c.SourceUnitType == u { found = true break } } if !found { continue } } fmt.Printf(fmtStr, tc.Path, t.Subcmd, t.Op, strings.Join(t.SourceUnitTypes, " ")) } } return nil }
func (c *ToolchainListCmd) Execute(args []string) error { toolchains, err := toolchain.List() if err != nil { return err } fmtStr := "%-40s %s\n" fmt.Printf(fmtStr, "PATH", "TYPE") for _, t := range toolchains { var exes []string if t.Program != "" { exes = append(exes, "program") } if t.Dockerfile != "" { exes = append(exes, "docker") } fmt.Printf(fmtStr, t.Path, strings.Join(exes, ", ")) } return nil }