databricks-cli/libs/dyn
Andrew Nester f0e2981596
Added JSON input validation for CLI commands (#1771)
## Changes
Added JSON input validation for CLI commands. Now when invalid JSON
passed as a payload to CLI commands, CLI performs input normalisation
and detects if there are any mismatches such as incorrect types, unknown
fields and etc.

This diagnostic information is printed in standard error output and does
not block command execution, so the change is backward compatible.

Fixes #1769 #1764 #1625 #1560


## Tests
Added unit tests

```
andrew.nester@HFW9Y94129 ~ % databricks jobs create --json '{"seeti}'
Error: error decoding JSON at (inline):1:2: unexpected EOF


andrew.nester@HFW9Y94129 ~ % databricks jobs create --json '{"seeti": true}'
Warning: unknown field: seeti
  in (inline):1:9

Error: Job settings must be specified.
```

---------

Co-authored-by: Pieter Noordhuis <pieter.noordhuis@databricks.com>
2024-10-11 14:39:53 +00:00
..
convert Added JSON input validation for CLI commands (#1771) 2024-10-11 14:39:53 +00:00
dynassert Define `dyn.Mapping` to represent maps (#1301) 2024-03-25 11:01:09 +00:00
dynvar iter 2024-09-16 03:50:40 +02:00
jsonloader Added JSON input validation for CLI commands (#1771) 2024-10-11 14:39:53 +00:00
merge Add `dyn.Time` to box a timestamp with its original string value (#1732) 2024-08-29 13:02:34 +00:00
yamlloader Add `dyn.Time` to box a timestamp with its original string value (#1732) 2024-08-29 13:02:34 +00:00
yamlsaver Fixed generated YAML missing 'default' for empty values (#1765) 2024-09-11 09:49:58 +00:00
kind.go Add `dyn.Time` to box a timestamp with its original string value (#1732) 2024-08-29 13:02:34 +00:00
kind_test.go Define `dyn.Mapping` to represent maps (#1301) 2024-03-25 11:01:09 +00:00
location.go Retain location annotation when expanding globs for pipeline libraries (#1274) 2024-03-11 21:59:36 +00:00
location_test.go Define `dyn.Mapping` to represent maps (#1301) 2024-03-25 11:01:09 +00:00
mapping.go Use dynamic walking to validate unique resource keys (#1614) 2024-07-29 13:04:02 +00:00
mapping_test.go Define `dyn.Mapping` to represent maps (#1301) 2024-03-25 11:01:09 +00:00
path.go Make `Append` function to `dyn.Path` return independent slice (#1295) 2024-03-19 09:49:26 +00:00
path_string.go Rename libs/config -> libs/dyn (#1086) 2023-12-22 13:20:45 +00:00
path_string_test.go Define `dyn.Mapping` to represent maps (#1301) 2024-03-25 11:01:09 +00:00
path_test.go Define `dyn.Mapping` to represent maps (#1301) 2024-03-25 11:01:09 +00:00
pattern.go Track multiple locations associated with a `dyn.Value` (#1510) 2024-07-16 11:27:27 +00:00
pattern_test.go Define `dyn.Mapping` to represent maps (#1301) 2024-03-25 11:01:09 +00:00
time.go Add `dyn.Time` to box a timestamp with its original string value (#1732) 2024-08-29 13:02:34 +00:00
time_test.go Add `dyn.Time` to box a timestamp with its original string value (#1732) 2024-08-29 13:02:34 +00:00
value.go Add `dyn.Time` to box a timestamp with its original string value (#1732) 2024-08-29 13:02:34 +00:00
value_test.go Track multiple locations associated with a `dyn.Value` (#1510) 2024-07-16 11:27:27 +00:00
value_underlying.go Add `dyn.Time` to box a timestamp with its original string value (#1732) 2024-08-29 13:02:34 +00:00
value_underlying_test.go Add `dyn.Time` to box a timestamp with its original string value (#1732) 2024-08-29 13:02:34 +00:00
visit.go Pass copy of `dyn.Path` to callback function (#1747) 2024-09-05 11:05:16 +00:00
visit_get.go Add `dyn.MapByPattern` to map a function to values with matching paths (#1266) 2024-03-08 14:33:01 +00:00
visit_get_test.go Define `dyn.Mapping` to represent maps (#1301) 2024-03-25 11:01:09 +00:00
visit_map.go Pass copy of `dyn.Path` to callback function (#1747) 2024-09-05 11:05:16 +00:00
visit_map_test.go Ignore `dyn.NilValue` when traversing value from `dyn.Map` (#1547) 2024-07-01 13:00:31 +00:00
visit_set.go Define `dyn.Mapping` to represent maps (#1301) 2024-03-25 11:01:09 +00:00
visit_set_test.go Define `dyn.Mapping` to represent maps (#1301) 2024-03-25 11:01:09 +00:00
visit_test.go Pass copy of `dyn.Path` to callback function (#1747) 2024-09-05 11:05:16 +00:00
walk.go Use `dyn.InvalidValue` to indicate absence (#1507) 2024-06-19 15:24:57 +00:00
walk_test.go Use `dyn.InvalidValue` to indicate absence (#1507) 2024-06-19 15:24:57 +00:00