Skip to content

Commit

Permalink
jv: support stdin for schema and instances
Browse files Browse the repository at this point in the history
  • Loading branch information
santhosh-tekuri committed Apr 23, 2024
1 parent 8b8cf44 commit a0f8863
Showing 1 changed file with 35 additions and 18 deletions.
53 changes: 35 additions & 18 deletions cmd/jv/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ func main() {
os.Exit(2)
}

stdinDecoder := json.NewDecoder(os.Stdin)
stdinDecoder.UseNumber()

// schema --
if len(flag.Args()) == 0 {
eprintln("missing SCHEMA")
Expand All @@ -85,7 +88,19 @@ func main() {
c.UseLoader(newLoader(*insecure))

// compile
sch, err := c.Compile(schema)
sch, err := func() (*jsonschema.Schema, error) {
if schema == "-" {
var v any
if err := stdinDecoder.Decode(&v); err != nil {
return nil, err
}
if err := c.AddResource("stdin.json", v); err != nil {
return nil, err
}
return c.Compile("stdin.json")
}
return c.Compile(schema)
}()
if err != nil {
fmt.Printf("schema %s: failed\n", schema)
if !*quiet {
Expand All @@ -101,27 +116,29 @@ func main() {
if !*quiet {
fmt.Println()
}
f, err := os.Open(instance)
if err != nil {
fmt.Printf("instance %s: failed\n", instance)
if !*quiet {
fmt.Printf("error opening file %v: %v\n", instance, err)
inst, err := func() (any, error) {
if instance == "-" {
var inst any
err := stdinDecoder.Decode(&inst)
return inst, err
}
allValid = false
continue
}
defer f.Close()

var inst any
if ext := filepath.Ext(instance); ext == ".yaml" || ext == ".yml" {
err = yaml.NewDecoder(f).Decode(&inst)
} else {
inst, err = jsonschema.UnmarshalJSON(f)
}
f, err := os.Open(instance)
if err != nil {
return nil, err
}
defer f.Close()
if ext := filepath.Ext(instance); ext == ".yaml" || ext == ".yml" {
var inst any
err = yaml.NewDecoder(f).Decode(&inst)
return inst, err
} else {
return jsonschema.UnmarshalJSON(f)
}
}()
if err != nil {
fmt.Printf("instance %s: failed\n", instance)
if !*quiet {
fmt.Printf("error parsing file %v: %v\n", instance, err)
fmt.Println(err)
}
allValid = false
continue
Expand Down

0 comments on commit a0f8863

Please sign in to comment.