RunUI executes the functionality "devspace ui"
(f factory.Factory)
| 72 | |
| 73 | // RunUI executes the functionality "devspace ui" |
| 74 | func (cmd *UICmd) RunUI(f factory.Factory) error { |
| 75 | // Set config root |
| 76 | cmd.log = f.GetLog() |
| 77 | configOptions := cmd.ToConfigOptions() |
| 78 | configLoader, err := f.NewConfigLoader(cmd.ConfigPath) |
| 79 | if err != nil { |
| 80 | return err |
| 81 | } |
| 82 | configExists, err := configLoader.SetDevSpaceRoot(cmd.log) |
| 83 | if err != nil { |
| 84 | return err |
| 85 | } |
| 86 | |
| 87 | // Search for an already existing server |
| 88 | if !cmd.ForceServer && !cmd.Dev && cmd.Host == "localhost" { |
| 89 | checkPort := server.DefaultPort |
| 90 | if cmd.Port != 0 { |
| 91 | checkPort = cmd.Port |
| 92 | } |
| 93 | |
| 94 | for i := 0; i < 20; i++ { |
| 95 | available, _ := port.IsAvailable(fmt.Sprintf(":%d", checkPort)) |
| 96 | if !available { |
| 97 | if i+1 == 20 { |
| 98 | return errors.Wrap(err, "check for open port") |
| 99 | } |
| 100 | |
| 101 | domain := fmt.Sprintf("http://%s:%d", cmd.Host, checkPort) |
| 102 | |
| 103 | // Check if DevSpace server |
| 104 | response, err := http.Get(domain + "/api/version") |
| 105 | if err != nil { |
| 106 | checkPort++ |
| 107 | continue |
| 108 | } |
| 109 | |
| 110 | defer response.Body.Close() |
| 111 | contents, err := io.ReadAll(response.Body) |
| 112 | if err != nil { |
| 113 | checkPort++ |
| 114 | continue |
| 115 | } |
| 116 | |
| 117 | serverVersion := &server.UIServerVersion{} |
| 118 | err = json.Unmarshal(contents, serverVersion) |
| 119 | if err != nil { |
| 120 | checkPort++ |
| 121 | continue |
| 122 | } |
| 123 | |
| 124 | if serverVersion.DevSpace { |
| 125 | cmd.log.Infof("Found running UI server at %s", domain) |
| 126 | _ = open.Start(domain) |
| 127 | return nil |
| 128 | } |
| 129 | |
| 130 | checkPort++ |
| 131 | continue |
no test coverage detected