31 lines
1.2 KiB
C++
31 lines
1.2 KiB
C++
#include "simulation.hpp"
|
|
|
|
#include <algorithm>
|
|
#include <iostream>
|
|
#include <stdexcept>
|
|
|
|
int main(int argc, char* argv[]) {
|
|
const std::string selected = argc > 1 ? argv[1] : "all";
|
|
if (argc > 2 || selected == "--help" || selected == "-h" ||
|
|
(selected != "all" && std::find(ota::scenarios().begin(), ota::scenarios().end(),
|
|
selected) == ota::scenarios().end())) {
|
|
std::ostream& output = (argc == 2 && (selected == "--help" || selected == "-h"))
|
|
? std::cout : std::cerr;
|
|
output << "Usage: ab-simulate [all";
|
|
for (const auto& scenario : ota::scenarios()) output << '|' << scenario;
|
|
output << "]\n";
|
|
return &output == &std::cout ? 0 : 2;
|
|
}
|
|
try {
|
|
for (const auto& scenario : ota::scenarios()) {
|
|
if (selected != "all" && selected != scenario) continue;
|
|
std::cout << "\n=== " << scenario << " ===\n";
|
|
ota::TemporaryDirectory directory;
|
|
ota::run_scenario(scenario, directory.path(), &std::cout);
|
|
}
|
|
} catch (const std::exception& error) {
|
|
std::cerr << "Simulation failed: " << error.what() << '\n';
|
|
return 1;
|
|
}
|
|
}
|