| package main |
| |
| import ( |
| "encoding/json" |
| "flag" |
| "fmt" |
| "io/ioutil" |
| "log" |
| "strings" |
| ) |
| |
| var ( |
| flagName string |
| flagAuthor string |
| flagMain string |
| flagVersion string |
| |
| flagStatusFile string |
| flagOutFile string |
| ) |
| |
| func main() { |
| flag.StringVar(&flagName, "name", "", "plugin name") |
| flag.StringVar(&flagAuthor, "author", "", "plugin author") |
| flag.StringVar(&flagMain, "main", "", "plugin main class") |
| flag.StringVar(&flagVersion, "version", "", "plugin version, if not given, workspace status will be used") |
| flag.StringVar(&flagStatusFile, "status_file", "", "path to workspace status file for version generation") |
| flag.StringVar(&flagOutFile, "out_file", "plugin.yml", "path to output plugin.yml") |
| flag.Parse() |
| |
| if flagVersion == "" { |
| status, err := ioutil.ReadFile(flagStatusFile) |
| if err != nil { |
| log.Fatalf("ReadFile(%q): %v", flagStatusFile, err) |
| } |
| |
| for _, line := range strings.Split(string(status), "\n") { |
| line = strings.TrimSpace(line) |
| parts := strings.Fields(line) |
| if len(parts) != 2 { |
| continue |
| } |
| if parts[0] == "STABLE_GIT_VERSION" { |
| flagVersion = fmt.Sprintf("hscloud-git-%s", parts[1]) |
| } |
| } |
| } |
| |
| if flagVersion == "" { |
| log.Fatalf("could not determine version from status") |
| } |
| |
| // a yaml is a json, a json is a yaml |
| yml := struct { |
| Name string `json:"name"` |
| Version string `json:"version"` |
| Author string `json:"author"` |
| Main string `json:"main"` |
| APIVersion string `json:"api-version"` |
| }{ |
| Name: flagName, |
| Version: flagVersion, |
| Author: flagAuthor, |
| Main: flagMain, |
| APIVersion: "1.15", |
| } |
| |
| out, err := json.Marshal(&yml) |
| if err != nil { |
| log.Fatalf("marshal: %v", err) |
| } |
| err = ioutil.WriteFile(flagOutFile, out, 0644) |
| if err != nil { |
| log.Fatalf("WriteFile(%q): %v", out, err) |
| } |
| } |