in providers/linux/os.go [121:154]
func parseOSRelease(content []byte) (*types.OSInfo, error) {
fields := map[string]string{}
s := bufio.NewScanner(bytes.NewReader(content))
for s.Scan() {
line := bytes.TrimSpace(s.Bytes())
// Skip blank lines and comments.
if len(line) == 0 || bytes.HasPrefix(line, []byte("#")) {
continue
}
parts := bytes.SplitN(s.Bytes(), []byte("="), 2)
if len(parts) != 2 {
continue
}
key := string(bytes.TrimSpace(parts[0]))
val := string(bytes.TrimSpace(parts[1]))
fields[key] = val
// Trim quotes.
val, err := strconv.Unquote(val)
if err == nil {
fields[key] = strings.TrimSpace(val)
}
}
if s.Err() != nil {
return nil, s.Err()
}
return makeOSInfo(fields)
}