aocpp/lib/src/Startup.cpp

32 lines
652 B
C++
Raw Normal View History

#include <aocpp/Startup.hpp>
#include <cstdlib>
#include <iostream>
2022-11-07 21:00:14 -08:00
#include <optional>
#include <memory>
#include <fstream>
2022-11-13 11:42:40 -08:00
#include <utility>
#define DOCTEST_CONFIG_IMPLEMENT
#include <doctest.h>
namespace aocpp {
2023-01-14 20:00:55 -08:00
auto Startup(int argc, char ** argv) -> std::unique_ptr<std::istream, void(*)(std::istream*)> {
2022-11-24 12:10:08 -08:00
if (std::getenv("DOCTEST")) {
exit(doctest::Context{argc, argv}.run());
}
2022-11-07 21:00:14 -08:00
switch (argc) {
case 2:
2023-01-14 20:00:55 -08:00
return {new std::ifstream{argv[1]}, [](std::istream* p) { delete p; }};
case 1:
2023-01-14 20:00:55 -08:00
return {&std::cin, [](std::istream*){}};
default:
std::cerr << "bad arguments\n";
exit(EXIT_FAILURE);
}
}
}