-
-->
+## 0.3.4
+> _17 April 2020_
+
+### Features
+- Format generated Go source code in-process
+
## 0.3.3
> _9 April 2020_
@echo "# generating binapi in docker image ${VPP_IMG}"
$(eval cmds := $(shell go generate -n $(BINAPI_DIR) 2>&1 | tr "\n" ";"))
docker run -t --rm \
- -v "$(shell which gofmt):/usr/local/bin/gofmt:ro" \
-v "$(shell which binapi-generator):/usr/local/bin/binapi-generator:ro" \
-v "$(shell pwd):/govpp" -w /govpp \
-u "$(shell id -u):$(shell id -g)" \
inputFileExt = ".api.json" // file extension of the VPP API files
outputFileExt = ".ba.go" // file extension of the Go generated files
- govppApiImportPath = "git.fd.io/govpp.git/api" // import path of the govpp API package
-
constModuleName = "ModuleName" // module name constant
constAPIVersion = "APIVersion" // API version constant
constVersionCrc = "VersionCrc" // version CRC constant
func generateImports(ctx *context, w io.Writer) {
fmt.Fprintln(w, "import (")
- fmt.Fprintf(w, "\tapi \"%s\"\n", govppApiImportPath)
- fmt.Fprintf(w, "\tbytes \"%s\"\n", "bytes")
- fmt.Fprintf(w, "\tcontext \"%s\"\n", "context")
- fmt.Fprintf(w, "\tio \"%s\"\n", "io")
- fmt.Fprintf(w, "\tstrconv \"%s\"\n", "strconv")
+ fmt.Fprintln(w, ` "bytes"`)
+ fmt.Fprintln(w, ` "context"`)
+ fmt.Fprintln(w, ` "io"`)
+ fmt.Fprintln(w, ` "strconv"`)
+ fmt.Fprintln(w)
+ fmt.Fprintf(w, "\tapi \"%s\"\n", "git.fd.io/govpp.git/api")
fmt.Fprintf(w, "\tstruc \"%s\"\n", "github.com/lunixbochs/struc")
if len(ctx.packageData.Imports) > 0 {
fmt.Fprintln(w)
"encoding/json"
"flag"
"fmt"
+ "go/format"
"io/ioutil"
"os"
- "os/exec"
"path/filepath"
"strings"
}
}
- // generate Go package code
+ // generate Go package
var buf bytes.Buffer
if err := generatePackage(ctx, &buf); err != nil {
- return fmt.Errorf("generating code for package %s failed: %v", ctx.packageName, err)
+ return fmt.Errorf("generating Go package for %s failed: %v", ctx.packageName, err)
+ }
+ // format generated source code
+ gosrc, err := format.Source(buf.Bytes())
+ if err != nil {
+ return fmt.Errorf("formatting source code for package %s failed: %v", ctx.packageName, err)
}
// create output directory
return fmt.Errorf("creating output dir %s failed: %v", packageDir, err)
}
// write generated code to output file
- if err := ioutil.WriteFile(ctx.outputFile, buf.Bytes(), 0666); err != nil {
+ if err := ioutil.WriteFile(ctx.outputFile, gosrc, 0666); err != nil {
return fmt.Errorf("writing to output file %s failed: %v", ctx.outputFile, err)
}
- // go format the output file (fail probably means the output is not compilable)
- cmd := exec.Command("gofmt", "-w", ctx.outputFile)
- if output, err := cmd.CombinedOutput(); err != nil {
- return fmt.Errorf("gofmt failed: %v\n%s", err, string(output))
- }
-
return nil
}
package af_packet
import (
- bytes "bytes"
- context "context"
+ "bytes"
+ "context"
+ "io"
+ "strconv"
+
api "git.fd.io/govpp.git/api"
struc "github.com/lunixbochs/struc"
- io "io"
- strconv "strconv"
ethernet_types "git.fd.io/govpp.git/examples/binapi/ethernet_types"
interface_types "git.fd.io/govpp.git/examples/binapi/interface_types"
package ethernet_types
import (
- bytes "bytes"
- context "context"
+ "bytes"
+ "context"
+ "io"
+ "strconv"
+
api "git.fd.io/govpp.git/api"
struc "github.com/lunixbochs/struc"
- io "io"
- strconv "strconv"
)
const (
package interface_types
import (
- bytes "bytes"
- context "context"
+ "bytes"
+ "context"
+ "io"
+ "strconv"
+
api "git.fd.io/govpp.git/api"
struc "github.com/lunixbochs/struc"
- io "io"
- strconv "strconv"
)
const (
package interfaces
import (
- bytes "bytes"
- context "context"
+ "bytes"
+ "context"
+ "io"
+ "strconv"
+
api "git.fd.io/govpp.git/api"
struc "github.com/lunixbochs/struc"
- io "io"
- strconv "strconv"
ethernet_types "git.fd.io/govpp.git/examples/binapi/ethernet_types"
interface_types "git.fd.io/govpp.git/examples/binapi/interface_types"
package ip
import (
- bytes "bytes"
- context "context"
+ "bytes"
+ "context"
+ "io"
+ "strconv"
+
api "git.fd.io/govpp.git/api"
struc "github.com/lunixbochs/struc"
- io "io"
- strconv "strconv"
ethernet_types "git.fd.io/govpp.git/examples/binapi/ethernet_types"
interface_types "git.fd.io/govpp.git/examples/binapi/interface_types"
package ip_types
import (
- bytes "bytes"
- context "context"
+ "bytes"
+ "context"
+ "io"
+ "strconv"
+
api "git.fd.io/govpp.git/api"
struc "github.com/lunixbochs/struc"
- io "io"
- strconv "strconv"
)
const (
package memclnt
import (
- bytes "bytes"
- context "context"
+ "bytes"
+ "context"
+ "io"
+ "strconv"
+
api "git.fd.io/govpp.git/api"
struc "github.com/lunixbochs/struc"
- io "io"
- strconv "strconv"
)
const (
package memif
import (
- bytes "bytes"
- context "context"
+ "bytes"
+ "context"
+ "io"
+ "strconv"
+
api "git.fd.io/govpp.git/api"
struc "github.com/lunixbochs/struc"
- io "io"
- strconv "strconv"
ethernet_types "git.fd.io/govpp.git/examples/binapi/ethernet_types"
interface_types "git.fd.io/govpp.git/examples/binapi/interface_types"
package vpe
import (
- bytes "bytes"
- context "context"
+ "bytes"
+ "context"
+ "io"
+ "strconv"
+
api "git.fd.io/govpp.git/api"
struc "github.com/lunixbochs/struc"
- io "io"
- strconv "strconv"
vpe_types "git.fd.io/govpp.git/examples/binapi/vpe_types"
)
package vpe_types
import (
- bytes "bytes"
- context "context"
+ "bytes"
+ "context"
+ "io"
+ "strconv"
+
api "git.fd.io/govpp.git/api"
struc "github.com/lunixbochs/struc"
- io "io"
- strconv "strconv"
)
const (