databricks-cli/cmd/labs/installed.go

58 lines
1.4 KiB
Go
Raw Permalink Normal View History

package labs
import (
"fmt"
"github.com/databricks/cli/cmd/labs/project"
"github.com/databricks/cli/libs/cmdio"
"github.com/spf13/cobra"
)
func newInstalledCommand() *cobra.Command {
return &cobra.Command{
Use: "installed",
Short: "List all installed labs",
Annotations: map[string]string{
"template": cmdio.Heredoc(`
Name Description Version
{{range .Projects}}{{.Name}} {{.Description}} {{.Version}}
{{end}}
`),
},
RunE: func(cmd *cobra.Command, args []string) error {
ctx := cmd.Context()
type installedProject struct {
Name string `json:"name"`
Description string `json:"description"`
Version string `json:"version"`
}
projects, err := project.Installed(ctx)
if err != nil {
return err
}
var info struct {
Projects []installedProject `json:"projects"`
}
for _, v := range projects {
description := v.Description
if len(description) > 50 {
description = description[:50] + "..."
}
version, err := v.InstalledVersion(ctx)
if err != nil {
return fmt.Errorf("%s: %w", v.Name, err)
}
info.Projects = append(info.Projects, installedProject{
Name: v.Name,
Description: description,
Version: version.Version,
})
}
if len(info.Projects) == 0 {
return fmt.Errorf("no projects installed")
}
return cmdio.Render(ctx, info)
},
}
}