personal/q3k: add minecraft plugins
Also drive-by modify WORKSPACE to add required deps.
Also drive-by update deps in WORKSPACE.
Also drive-by remove old stackb/proto library from WORKSPACE (only used
in cccampix, which is dead, and stackb/proto should be replaceable by
the main grpc lib by this point).
Change-Id: I7ac7fe2237e859dc1c45bf41a016174ed8e9ee71
diff --git a/personal/q3k/minecraft/plugin/genpluginyml.go b/personal/q3k/minecraft/plugin/genpluginyml.go
new file mode 100644
index 0000000..1174f8f
--- /dev/null
+++ b/personal/q3k/minecraft/plugin/genpluginyml.go
@@ -0,0 +1,76 @@
+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)
+ }
+}