in src/native/tools/dumpdiff/dumpdiff.cpp [28:92]
int main(int argc, char **argv)
{
if (argc < 2)
{
usage();
return 1;
}
if (argc > 2)
{
if (0 != strcmp(argv[2], "--skip_recipes"))
{
usage();
return 1;
}
g_skip_recipes = true;
}
auto path = fs::path(argv[1]);
if (!fs::exists(path))
{
printf("No file found at path: %s\n", path.string().c_str());
return 1;
}
auto reader = archive_diff::io::file::io_device::make_reader(path.string());
std::shared_ptr<archive_diff::diffs::core::archive> archive;
std::string reason;
if (archive_diff::diffs::serialization::standard::deserializer::is_this_format(reader, &reason))
{
archive_diff::diffs::serialization::standard::deserializer deserializer;
try
{
deserializer.read(reader);
archive = deserializer.get_archive();
}
catch (archive_diff::errors::user_exception &e)
{
std::cout << "Expection while loading diff. Code: " << std::to_string(static_cast<uint16_t>(e.get_error()));
std::cout << ", Message: " << e.get_message() << std::endl;
return 1;
}
}
else
{
archive_diff::diffs::serialization::legacy::deserializer deserializer;
try
{
deserializer.read(reader);
archive = deserializer.get_archive();
}
catch (archive_diff::errors::user_exception &e)
{
std::cout << "Expection while loading diff. Code: " << std::to_string(static_cast<uint16_t>(e.get_error()));
std::cout << ", Message: " << e.get_message() << std::endl;
return 1;
}
}
return dump_diff(archive.get(), std::cout);
}