package main import ( "flag" "fmt" "os" "text/tabwriter" "mgit.msbls.de/m/ImaGen/internal/backend" "mgit.msbls.de/m/ImaGen/internal/config" ) func runBackends(args []string) error { fs := flag.NewFlagSet("backends", flag.ContinueOnError) var configPath string fs.StringVar(&configPath, "config", "", "config file path (default: ~/.config/imagen.yaml)") if err := fs.Parse(args); err != nil { return err } cfg, cfgErr := config.Load(configPath) if cfgErr != nil && !os.IsNotExist(cfgErr) { return cfgErr } tw := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0) fmt.Fprintln(tw, "INSTANCE\tTYPE\tSTATUS") if cfg != nil { for name, spec := range cfg.Backends { status := "registered" if !backend.Default.Has(spec.Type) { status = fmt.Sprintf("type %q not compiled in", spec.Type) } marker := "" if name == cfg.DefaultBackend { marker = " (default)" } fmt.Fprintf(tw, "%s%s\t%s\t%s\n", name, marker, spec.Type, status) } } if cfg == nil { for _, t := range backend.Default.Types() { fmt.Fprintf(tw, "%s\t%s\t%s\n", t, t, "no config — type registered, no instance defined") } } if err := tw.Flush(); err != nil { return err } fmt.Fprintln(os.Stderr, "registered types:", backend.Default.Types()) return nil }