diff --git a/README.md b/README.md new file mode 100644 index 0000000..90a38be --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# mddiff + +mddiff is a tool for comparing the frontmatter of two markdown files and generating a [JSON patch](https://jsonpatch.com/) file. + +## Usage + +``` +Usage: mddiff [OPTIONS] <file> <file2> + +Arguments: + <file> First File + <file2> Second File + +Options: + -p, --pretty Output formatted json patch + -a, --add Only output add operations + -m, --modify Only output modify operations + -d, --delete Only output delete operations + -t, --test <key> <val> Add test case to json patch + -x, --exclude <JSONPATH> Exclude json path from diff + -k, --keys <JSONPATH> Only include the specified json paths in diff +``` \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 44025b6..c774d43 100644 --- a/src/main.rs +++ b/src/main.rs @@ -149,6 +149,24 @@ fn main() { let mut diff = serde_json::to_value(diff).unwrap(); + if let Some(test_cases) = args.get_many::<String>("test") { + // TODO : Multiple test arguments + let test_cases: Vec<_> = test_cases.collect(); + + let path = test_cases.get(0).unwrap(); + let val = test_cases.get(1).unwrap(); + + diff.as_array_mut().unwrap().insert(0, + serde_json::json!( + { + "op": "test", + "path": path, + "value": val + } + ) + ); + } + if let Some(excludes) = args.get_many::<String>("exclude") { let excludes: Vec<String> = excludes.cloned().collect(); diff = exclude_json_paths(&diff, &excludes);