blob: 1174f8f58d92d2373b329ec058ab67e7d0cdedaf [file] [log] [blame]
Sergiusz Bazanski32f8a582020-05-18 00:27:23 +02001package main
2
3import (
4 "encoding/json"
5 "flag"
6 "fmt"
7 "io/ioutil"
8 "log"
9 "strings"
10)
11
12var (
13 flagName string
14 flagAuthor string
15 flagMain string
16 flagVersion string
17
18 flagStatusFile string
19 flagOutFile string
20)
21
22func main() {
23 flag.StringVar(&flagName, "name", "", "plugin name")
24 flag.StringVar(&flagAuthor, "author", "", "plugin author")
25 flag.StringVar(&flagMain, "main", "", "plugin main class")
26 flag.StringVar(&flagVersion, "version", "", "plugin version, if not given, workspace status will be used")
27 flag.StringVar(&flagStatusFile, "status_file", "", "path to workspace status file for version generation")
28 flag.StringVar(&flagOutFile, "out_file", "plugin.yml", "path to output plugin.yml")
29 flag.Parse()
30
31 if flagVersion == "" {
32 status, err := ioutil.ReadFile(flagStatusFile)
33 if err != nil {
34 log.Fatalf("ReadFile(%q): %v", flagStatusFile, err)
35 }
36
37 for _, line := range strings.Split(string(status), "\n") {
38 line = strings.TrimSpace(line)
39 parts := strings.Fields(line)
40 if len(parts) != 2 {
41 continue
42 }
43 if parts[0] == "STABLE_GIT_VERSION" {
44 flagVersion = fmt.Sprintf("hscloud-git-%s", parts[1])
45 }
46 }
47 }
48
49 if flagVersion == "" {
50 log.Fatalf("could not determine version from status")
51 }
52
53 // a yaml is a json, a json is a yaml
54 yml := struct {
55 Name string `json:"name"`
56 Version string `json:"version"`
57 Author string `json:"author"`
58 Main string `json:"main"`
59 APIVersion string `json:"api-version"`
60 }{
61 Name: flagName,
62 Version: flagVersion,
63 Author: flagAuthor,
64 Main: flagMain,
65 APIVersion: "1.15",
66 }
67
68 out, err := json.Marshal(&yml)
69 if err != nil {
70 log.Fatalf("marshal: %v", err)
71 }
72 err = ioutil.WriteFile(flagOutFile, out, 0644)
73 if err != nil {
74 log.Fatalf("WriteFile(%q): %v", out, err)
75 }
76}