mirror of https://gerrit.hackerspace.pl/hscloud
77 lines
1.8 KiB
Go
77 lines
1.8 KiB
Go
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)
|
|
}
|
|
}
|