Switch to CLI flags
This commit is contained in:
parent
a00e3ecea0
commit
3252e0dde7
2 changed files with 35 additions and 7 deletions
|
@ -4,7 +4,7 @@ A JSON schema code generator for Go.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
jsonschemagen <schema> <output> <package>
|
jsonschemagen -s <schema> -o <output>
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,11 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"unicode"
|
"unicode"
|
||||||
|
@ -232,16 +235,41 @@ func loadSchema(filename string) *jsonschema.Schema {
|
||||||
return &schema
|
return &schema
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const usage = `usage: jsonschemagen -s <schema> -o <output> [options...]
|
||||||
|
|
||||||
|
Generate Go types and helpers for the specified JSON schema.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
|
||||||
|
-s <schema> JSON schema filename. Required.
|
||||||
|
-o <output> Output filename for generated Go code. Required.
|
||||||
|
-n <package> Go package name, defaults to the dirname of the output file.
|
||||||
|
`
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if len(os.Args) != 4 {
|
var schemaFilename, outputFilename, pkgName string
|
||||||
log.Fatalf("usage: jsonschemagen <schema> <output> <package>")
|
flag.StringVar(&schemaFilename, "s", "", "schema filename")
|
||||||
|
flag.StringVar(&outputFilename, "o", "", "output filename")
|
||||||
|
flag.StringVar(&pkgName, "n", "", "package name")
|
||||||
|
flag.Usage = func() {
|
||||||
|
fmt.Fprintf(os.Stderr, usage)
|
||||||
|
}
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
if schemaFilename == "" || outputFilename == "" || len(flag.Args()) > 0 {
|
||||||
|
flag.Usage()
|
||||||
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
inputFilename := os.Args[1]
|
if pkgName == "" {
|
||||||
outputFilename := os.Args[2]
|
abs, err := filepath.Abs(outputFilename)
|
||||||
pkgName := os.Args[3]
|
if err != nil {
|
||||||
|
log.Fatalf("failed to get absolute output filename: %v", err)
|
||||||
|
}
|
||||||
|
pkgName = filepath.Base(filepath.Dir(abs))
|
||||||
|
}
|
||||||
|
|
||||||
schema := loadSchema(inputFilename)
|
schema := loadSchema(schemaFilename)
|
||||||
f := jen.NewFile(pkgName)
|
f := jen.NewFile(pkgName)
|
||||||
|
|
||||||
if schema.Ref == "" {
|
if schema.Ref == "" {
|
||||||
|
|
Loading…
Reference in a new issue