Browse Source

change to go-template

DenMaSeno 9 years ago
parent
commit
3f8712d2ad

+ 1 - 1
Dockerfile

@@ -5,7 +5,7 @@ RUN apt-get update && apt-get install -y telnet vim
 RUN groupadd -r jboss -g 1001 && useradd -u 1001 -r -g jboss -m -d /opt/jboss -s /sbin/nologin -c "JBoss user" jboss && \
     chmod 755 /opt/jboss
 
-ADD frepl /usr/bin/frepl
+ADD gotmpl /usr/bin/gotmpl
 
 # Set the working directory to jboss' user home directory
 WORKDIR /opt/jboss

+ 4 - 0
build.sh

@@ -1,2 +1,6 @@
 #!/bin/bash
+go get code.senomas.com/go/util
+go get code.senomas.com/go/log
+go get gopkg.in/yaml.v2
+go build gotmpl.go
 docker build --tag=code.senomas.com:5000/jboss-as:7.2.0.Final .

BIN
frepl


BIN
gotmpl


+ 116 - 0
gotmpl.go

@@ -0,0 +1,116 @@
+package main
+
+import (
+	"bytes"
+	"encoding/json"
+	"fmt"
+	"html"
+	"html/template"
+	"io/ioutil"
+	"os"
+	"strings"
+
+	"gopkg.in/yaml.v2"
+
+	"code.senomas.com/go/util"
+)
+
+// Variables struct
+type Variables struct {
+	Env map[string]string
+}
+
+func parseYAML(text string) map[string]interface{} {
+	val := make(map[string]interface{})
+	err := yaml.Unmarshal([]byte(text), &val)
+	util.Check("Invalid yaml [%s] %v", text, err)
+	return val
+}
+
+func parseJSON(text string) map[string]interface{} {
+	val := make(map[string]interface{})
+	err := json.Unmarshal([]byte(text), &val)
+	util.Check("Invalid json [%s] %v", text, err)
+	return val
+}
+
+func value(vs ...interface{}) interface{} {
+	for _, v := range vs {
+		if v != nil {
+			return v
+		}
+	}
+	return nil
+}
+
+func cat(spacer string, va ...interface{}) string {
+	var bb bytes.Buffer
+	for k, v := range va {
+		if k > 0 {
+			bb.WriteString(spacer)
+		}
+		fmt.Fprintf(&bb, "%v", v)
+	}
+	return bb.String()
+}
+
+func split(v string, sep string) []string {
+	return strings.Split(v, sep)
+}
+
+func ift(test bool, vt, vf interface{}) interface{} {
+	if test {
+		return vt
+	}
+	return vf
+}
+
+func get(v map[string]interface{}, key string) interface{} {
+	return v[key]
+}
+
+func getMap(v map[string]interface{}, keys ...string) interface{} {
+	var ok bool
+	for _, kk := range keys {
+		v, ok = v[kk].(map[string]interface{})
+		if !ok {
+			return nil
+		}
+	}
+	return v
+}
+
+func main() {
+	funcMap := template.FuncMap{
+		"parseYAML": parseYAML,
+		"parseJSON": parseJSON,
+		"value":     value,
+		"cat":       cat,
+		"ift":       ift,
+		"split":     split,
+		"get":       get,
+		"getMap":    getMap,
+	}
+
+	var text []byte
+	var err error
+
+	text, err = ioutil.ReadFile(os.Args[1])
+	util.Check("Error open file %s %v", os.Args[1], err)
+
+	tmpl, err := template.New("config").Option("missingkey=zero").Funcs(funcMap).Parse(string(text))
+	util.Check("Error %v", err)
+
+	env := make(map[string]string)
+
+	for _, v := range os.Environ() {
+		splits := strings.Split(v, "=")
+		env[splits[0]] = strings.Join(splits[1:], "=")
+	}
+
+	var bb bytes.Buffer
+	err = tmpl.Execute(&bb, &Variables{env})
+	util.Check("Execute error %v", err)
+	fmt.Println(html.UnescapeString(bb.String()))
+}
+

+ 0 - 7
jboss-as-7.2.0.Final/bin/D__LHBU2_jboss-as-7.2.0.Final_standalone_log_server.log

@@ -1,7 +0,0 @@
-00:41:38,107 INFO  [org.jboss.modules] (main) JBoss Modules version 1.2.0.CR1
-00:41:38,310 INFO  [org.jboss.msc] (main) JBoss MSC version 1.0.4.GA
-00:41:38,397 INFO  [org.jboss.as] (MSC service thread 1-7) JBAS015899: JBoss AS 7.2.0.Final "Janus" starting
-00:41:40,292 INFO  [org.xnio] (MSC service thread 1-3) XNIO Version 3.0.7.GA
-00:41:40,295 INFO  [org.jboss.as.server] (Controller Boot Thread) JBAS015888: Creating http management service using socket-binding (management-http)
-00:41:40,306 INFO  [org.xnio.nio] (MSC service thread 1-3) XNIO NIO Implementation Version 3.0.7.GA
-00:41:40,327 INFO  [org.jboss.remoting] (MSC service thread 1-3) JBoss Remoting version 3.2.14.GA

+ 6 - 4
jboss-as-7.2.0.Final/bin/standalone.sh

@@ -4,11 +4,13 @@
 # Usage : standalone.bat --debug
 #         standalone.bat --debug 9797
 
-frepl JBOSS-ENV /opt/jboss/jboss-as-7.2.0.Final/standalone/configuration/standalone.xml.template > /opt/jboss/jboss-as-7.2.0.Final/standalone/configuration/standalone.xml
+if [ ! -z "$JBOSS_WAIT" ] ; then
+  sleep $JBOSS_WAIT
+fi
 
-if [ -z "$DEV_MODE" ] ; then
-  echo .
-else
+gotmpl /opt/jboss/jboss-as-7.2.0.Final/standalone/configuration/standalone.xml.template > /opt/jboss/jboss-as-7.2.0.Final/standalone/configuration/standalone.xml
+
+if [ ! -z "$DEV_MODE" ] ; then
   echo ###### standalone.xml ######
   cat /opt/jboss/jboss-as-7.2.0.Final/standalone/configuration/standalone.xml
   echo ############################