Line |
Branch |
Exec |
Source |
1 |
|
|
#include <cstdlib> |
2 |
|
|
#include <getopt.h> |
3 |
|
|
#include <iostream> |
4 |
|
|
|
5 |
|
|
#include "simulation.hpp" |
6 |
|
|
|
7 |
|
✗ |
int main(int argc, char *argv[]) { |
8 |
|
✗ |
std::string outputPath = ""; // Will be handled by Output if empty string given |
9 |
|
✗ |
std::string configFile = "config.yaml"; |
10 |
|
✗ |
std::string outputFormat = "H5MD"; |
11 |
|
✗ |
int autosaveMinutes = 30; |
12 |
|
✗ |
bool graphics = false; |
13 |
|
✗ |
bool dryrun = false; |
14 |
|
|
|
15 |
|
|
// Read arguments |
16 |
|
✗ |
int opt; |
17 |
|
✗ |
while (1) { |
18 |
|
✗ |
static struct option long_options[] = { |
19 |
|
|
{"config", required_argument, NULL, 'c'}, |
20 |
|
|
{"output-path", required_argument, NULL, 'p'}, |
21 |
|
|
{"output-format", required_argument, NULL, 'f'}, |
22 |
|
|
{"autosave", required_argument, NULL, 's'}, |
23 |
|
|
{"graphics", no_argument, NULL, 'g'}, |
24 |
|
|
{"dry-run", no_argument, NULL, 'd'}, |
25 |
|
|
{"help", no_argument, NULL, 'h'}, |
26 |
|
|
{"version", no_argument, NULL, 'v'}, |
27 |
|
|
{NULL, 0, NULL, 0}, |
28 |
|
|
}; |
29 |
|
✗ |
int option_index = 0; |
30 |
|
✗ |
opt = getopt_long(argc, argv, "c:p:f:s:gdhv", long_options, &option_index); |
31 |
|
✗ |
if (opt == -1) { |
32 |
|
|
break; |
33 |
|
|
} |
34 |
|
|
|
35 |
|
✗ |
switch (opt) { |
36 |
|
✗ |
case 'c': // --config |
37 |
|
✗ |
configFile = optarg; |
38 |
|
|
break; |
39 |
|
✗ |
case 'p': // --output-path |
40 |
|
✗ |
outputPath = optarg; |
41 |
|
|
break; |
42 |
|
✗ |
case 'f': // --output-format |
43 |
|
✗ |
outputFormat = optarg; |
44 |
|
|
break; |
45 |
|
✗ |
case 's': // --output-format |
46 |
|
✗ |
autosaveMinutes = std::stoi(optarg); |
47 |
|
✗ |
break; |
48 |
|
|
case 'g': // --graphics |
49 |
|
|
graphics = true; |
50 |
|
|
break; |
51 |
|
✗ |
case 'd': // --dry-run |
52 |
|
✗ |
dryrun = true; |
53 |
|
✗ |
std::clog << "WARNING: This will be a dry-run. Nothing will actually be simulated!" |
54 |
|
✗ |
<< std::endl; |
55 |
|
|
break; |
56 |
|
✗ |
case 'h': // --help |
57 |
|
✗ |
std::cout << "Usage:" |
58 |
|
|
"\n-c/--config <config file>" |
59 |
|
|
"\n\tsee config.template.yaml for reference" |
60 |
|
|
"\n\tdefault: config.yaml" |
61 |
|
|
"\n-p/--output-path <output path>" |
62 |
|
|
"\n\tdefault: results/<timestamp> (YYYY_MM_DD-hh-mm-ss)" |
63 |
|
|
"\n-f/--output-format {ASCII|H5MD}" |
64 |
|
|
"\n\tdefault: H5MD" |
65 |
|
|
"\n-g<framerate>/--graphics=<framerate>" |
66 |
|
|
"\n\t(only available when built with graphics support)" |
67 |
|
|
"\n\tdefault mode: no graphics" |
68 |
|
|
"\n\tdefault framerate: 60" |
69 |
|
|
"\n-d/--dry-run" |
70 |
|
|
"\n-v/--version" |
71 |
|
✗ |
"\n-h/--help" |
72 |
|
✗ |
<< std::endl; |
73 |
|
✗ |
return EXIT_SUCCESS; |
74 |
|
✗ |
case 'v': // --version |
75 |
|
✗ |
std::cout << programInfo(); |
76 |
|
✗ |
std::cout << std::endl; |
77 |
|
|
return EXIT_SUCCESS; |
78 |
|
✗ |
default: |
79 |
|
✗ |
std::clog << "ERROR: Invalid options given. Call program with -h for help." << std::endl; |
80 |
|
|
return EXIT_FAILURE; |
81 |
|
|
} |
82 |
|
|
} |
83 |
|
|
|
84 |
|
✗ |
Simulation simulation(outputPath, outputFormat, autosaveMinutes, graphics); |
85 |
|
✗ |
int exitCode = simulation(configFile, dryrun); |
86 |
|
✗ |
return exitCode; |
87 |
|
|
} |
88 |
|
|
|