MCPcopy Index your code
hub / github.com/devspace-sh/devspace / ParseDevSpaceHosts

Function ParseDevSpaceHosts

pkg/devspace/services/ssh/config.go:107–157  ·  view source on GitHub ↗
(path string)

Source from the content-addressed store, hash-verified

105}
106
107func ParseDevSpaceHosts(path string) ([]DevSpaceSSHEntry, error) {
108 var reader io.Reader
109 f, err := os.Open(path)
110 if err != nil {
111 if !os.IsNotExist(err) {
112 return nil, err
113 }
114
115 reader = strings.NewReader("")
116 } else {
117 reader = f
118 defer f.Close()
119 }
120
121 configScanner := scanner.NewScanner(reader)
122 inSection := false
123
124 entries := []DevSpaceSSHEntry{}
125 current := &DevSpaceSSHEntry{}
126 for configScanner.Scan() {
127 text := strings.TrimSpace(configScanner.Text())
128 if strings.HasPrefix(text, MarkerStartPrefix) {
129 inSection = true
130 } else if strings.HasPrefix(text, MarkerEndPrefix) {
131 if current.Host != "" && current.Port > 0 && current.Hostname != "" {
132 entries = append(entries, *current)
133 }
134 current = &DevSpaceSSHEntry{}
135 inSection = false
136 } else if inSection {
137 if strings.HasPrefix(text, "Host ") {
138 current.Host = strings.TrimPrefix(text, "Host ")
139 }
140 if strings.HasPrefix(text, "Port ") {
141 port := strings.TrimPrefix(text, "Port ")
142 intPort, err := strconv.Atoi(port)
143 if err == nil {
144 current.Port = intPort
145 }
146 }
147 if strings.HasPrefix(text, "HostName ") {
148 current.Hostname = strings.TrimPrefix(text, "HostName ")
149 }
150 }
151 }
152 if configScanner.Err() != nil {
153 return nil, errors.Wrap(err, "parse ssh config")
154 }
155
156 return entries, nil
157}
158
159func includeDevSpaceConfig(path string) (string, error) {
160 var reader io.Reader

Callers 2

startSSHFunction · 0.85
NewManagerFunction · 0.85

Calls 3

NewScannerFunction · 0.92
CloseMethod · 0.65
ErrMethod · 0.45

Tested by

no test coverage detected