package jiff;
import java.util.List;
import java.io.File;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) throws Exception {
JsonDiff diff = new JsonDiff();
String file1 = null;
String file2 = null;
for (String arg : args) {
if ("-a0".equals(arg)) {
diff.setOption(JsonDiff.Option.ARRAY_ORDER_INSIGNIFICANT);
} else if ("-a1".equals(arg)) {
diff.setOption(JsonDiff.Option.ARRAY_ORDER_SIGNIFICANT);
} else if ("-p0".equals(arg)) {
diff.setOption(JsonDiff.Option.RETURN_LEAVES_ONLY);
} else if ("-p1".equals(arg)) {
diff.setOption(JsonDiff.Option.RETURN_PARENT_DIFFS);
} else if (file1 == null) {
file1 = arg;
} else if (file2 == null) {
file2 = arg;
} else {
throw new RuntimeException("Invalid option:" + arg);
}
}
if (file1 != null && file2 != null) {
ObjectMapper mapper = new ObjectMapper();
JsonNode node1 = mapper.readTree(new File(file1));
JsonNode node2 = mapper.readTree(new File(file2));
List<JsonDelta> list = diff.computeDiff(node1, node2);
for (JsonDelta x : list) {
System.out.println(x);
}
} else {
printHelp();
}
}
private static void printHelp() {
System.out.println("jiff [options] file1 file2\n"
+ "\n"
+ "Options:\n"
+ " -a1 : Array ordering significant\n"
+ " -a0 : Array ordering not significant (default)\n"
+ " -p1 : Return deltas for parents\n"
+ " -p0 : Return deltas for leaves only (default)");
}
}