/ metadata.go
metadata.go
 1  package main
 2  
 3  import (
 4  	"strings"
 5  )
 6  
 7  // Metadata contains meta data about node,
 8  // extracted from name string.
 9  type Metadata struct {
10  	Name      string
11  	Version   string
12  	OS        string
13  	GoVersion string
14  }
15  
16  // UnknownMetadata represents metadata for failed to parse string.
17  var UnknownMetadata = &Metadata{"Unknown", "Unknown", "Unknown", "Unknown"}
18  
19  // NewMetadata returns new Metadata object parsing string represtnation.
20  func NewMetadata(name string) *Metadata {
21  	fields := strings.Split(name, "/")
22  	if len(fields) != 4 {
23  		return UnknownMetadata
24  	}
25  
26  	return &Metadata{
27  		Name:      fields[0],
28  		Version:   fields[1],
29  		OS:        fields[2],
30  		GoVersion: fields[3],
31  	}
32  }