co-maps/libs/mwm_diff/mwm_diff_tool/mwm_diff_tool.cpp
2025-11-22 13:58:55 +01:00

46 lines
1.3 KiB
C++

#include "mwm_diff/diff.hpp"
#include "base/cancellable.hpp"
#include <cstring>
#include <iostream>
int main(int argc, char ** argv)
{
auto const ShowUsage = [argv]()
{
std::cout << "Usage: " << argv[0]
<< " make|apply olderMWMPath newerMWMPath diffPath\n"
"make\n"
" Creates the diff between newer and older MWMs at `diffPath`\n"
"apply\n"
" Applies the diff at `diffPath` to the mwm at `olderMWMPath` and stores result at `newerMWMPath`.\n"
"WARNING: THERE IS NO MWM VALIDITY CHECK!\n";
};
if (argc < 5)
{
ShowUsage();
return -1;
}
auto const IsEqualUsage = [argv](char const * s) { return 0 == std::strcmp(argv[1], s); };
char const *olderMWMPath{argv[2]}, *newerMWMPath{argv[3]}, *diffPath{argv[4]};
if (IsEqualUsage("make"))
{
if (generator::mwm_diff::MakeDiff(olderMWMPath, newerMWMPath, diffPath))
return 0;
}
else if (IsEqualUsage("apply"))
{
base::Cancellable cancellable;
auto const res = generator::mwm_diff::ApplyDiff(olderMWMPath, newerMWMPath, diffPath, cancellable);
if (res == generator::mwm_diff::DiffApplicationResult::Ok)
return 0;
}
else
ShowUsage();
return -1; // Failed, Cancelled.
}