|
1 | 1 | package dashboard |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "github.com/kyma-project/cli.v3/internal/busola" |
| 5 | + "github.com/kyma-project/cli.v3/internal/clierror" |
4 | 6 | "github.com/kyma-project/cli.v3/internal/cmdcommon" |
5 | 7 | "github.com/spf13/cobra" |
6 | 8 | ) |
7 | 9 |
|
| 10 | +type dashboardConfig struct { |
| 11 | + *cmdcommon.KymaConfig |
| 12 | + port string |
| 13 | + containerName string |
| 14 | + verbose bool |
| 15 | +} |
| 16 | + |
8 | 17 | func NewDashboardCMD(kymaConfig *cmdcommon.KymaConfig) *cobra.Command { |
| 18 | + cfg := dashboardConfig{ |
| 19 | + KymaConfig: kymaConfig, |
| 20 | + } |
| 21 | + |
9 | 22 | cmd := &cobra.Command{ |
10 | 23 | Use: "dashboard <command> [flags]", |
11 | 24 | Short: "Manages Kyma dashboard locally.", |
12 | 25 | Long: `Use this command to manage Kyma dashboard locally in a Docker container.`, |
13 | | - } |
| 26 | + Run: func(_ *cobra.Command, _ []string) { |
| 27 | + clierror.Check(runDashboard(&cfg)) |
| 28 | + }} |
| 29 | + |
| 30 | + cmd.Flags().StringVarP(&cfg.port, "port", "p", "3001", `Specifies the port on which the local dashboard will be exposed.`) |
| 31 | + cmd.Flags().StringVar(&cfg.containerName, "container-name", "kyma-dashboard", `Specifies the name of the local container.`) |
| 32 | + cmd.Flags().BoolVarP(&cfg.verbose, "verbose", "v", true, `Enables verbose output with detailed logs.`) |
14 | 33 |
|
15 | 34 | cmd.AddCommand(NewDashboardStartCMD(kymaConfig)) |
16 | 35 | cmd.AddCommand(NewDashboardStopCMD(kymaConfig)) |
17 | 36 |
|
18 | 37 | return cmd |
19 | 38 | } |
| 39 | + |
| 40 | +func runDashboard(cfg *dashboardConfig) clierror.Error { |
| 41 | + dash, err := busola.New( |
| 42 | + cfg.containerName, |
| 43 | + cfg.port, |
| 44 | + cfg.verbose, |
| 45 | + ) |
| 46 | + |
| 47 | + if err != nil { |
| 48 | + return clierror.Wrap(err, clierror.New("failed to initialize docker client")) |
| 49 | + } |
| 50 | + |
| 51 | + if err = dash.Start(); err != nil { |
| 52 | + return clierror.Wrap(err, clierror.New("failed to start kyma dashboard")) |
| 53 | + } |
| 54 | + |
| 55 | + if err = dash.Open(); err != nil { |
| 56 | + return clierror.Wrap(err, clierror.New("failed to open kyma dashboard")) |
| 57 | + } |
| 58 | + |
| 59 | + if err = dash.Watch(); err != nil { |
| 60 | + return clierror.Wrap(err, clierror.New("failed to watch kyma dashboard")) |
| 61 | + } |
| 62 | + |
| 63 | + return nil |
| 64 | +} |
0 commit comments