blob: 1174f8f58d92d2373b329ec058ab67e7d0cdedaf [file] [log] [blame]
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)
}
}