Skip to content

An unofficial Go port of the NGINX config/JSON converter crossplane

License

Notifications You must be signed in to change notification settings

HEFUHUI/go-crossplane

 
 

Repository files navigation

go-crossplane

An unofficial Go port of the NGINX config/JSON converter crossplane.

修复build后输入到文件为字符串的问题

Parse

This is an example that takes a path to an NGINX config file, converts it to JSON, and prints the result to stdout.

package main

import (
	"encoding/json"
	"fmt"
	"os"

	"github.com/HEFUHUI/go-crossplane"
)

func main() {
	path := os.Args[1]

	payload, err := crossplane.Parse(path, &crossplane.ParseOptions{})
	if err != nil {
		panic(err)
	}

	b, err := json.Marshal(payload)
	if err != nil {
		panic(err)
	}

	fmt.Println(string(b))
}

Build

This is an example that takes a path to a JSON file, converts it to an NGINX config, and prints the result to stdout.

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"os"

	"github.com/HEFUHUI/go-crossplanee"
)

func main() {
	path := os.Args[1]

	file, err := os.Open(path)
	if err != nil {
		panic(err)
	}

	content, err := ioutil.ReadAll(file)
	if err != nil {
		panic(err)
	}

	var payload crossplane.Payload
	if err = json.Unmarshal(content, &payload); err != nil {
		panic(err)
	}

	var buf bytes.Buffer
	if err = crossplane.Build(&buf, payload.Config[0], &crossplane.BuildOptions{}); err != nil {
		panic(err)
	}

	fmt.Println(buf.String())
}

About

An unofficial Go port of the NGINX config/JSON converter crossplane

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%