int main()

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);
}