12int main(
int argc,
char const *argv[])
15 CLI::App app{
"tapipe"};
18 std::string input_file_path;
19 app.add_option(
"-i", input_file_path,
"Input TPStream file path")->required();
20 std::string output_file_path;
21 app.add_option(
"-o", output_file_path,
"Output TPStream file path")->required();
23 app.add_flag(
"-v", verbose);
24 CLI11_PARSE(app, argc, argv);
26 fmt::print(
"TPStream file: {}\n", input_file_path);
29 std::unique_ptr<hdf5libs::HDF5RawDataFile> input_file, output_file;
32 input_file = std::make_unique<hdf5libs::HDF5RawDataFile>(input_file_path);
33 }
catch(
const hdf5libs::FileOpenFailed& e) {
34 fmt::print(
"ERROR: failed to open input file '{}'\n", input_file_path);
35 std::cerr << e.what() <<
'\n';
39 if (!input_file->is_timeslice_type()) {
40 fmt::print(
"ERROR: input file '{}' not of type 'TimeSlice'\n", input_file_path);
45 auto file_index = input_file->get_attribute<
size_t>(
"file_index");
47 auto application_name = input_file->get_attribute<std::string>(
"application_name");
49 fmt::print(
"Run Number: {}\nFile Index: {}\nApp name: '{}'\n", run_number, file_index, application_name);
52 output_file = std::make_unique<hdf5libs::HDF5RawDataFile>(
55 input_file->get_attribute<
size_t>(
"file_index"),
56 input_file->get_attribute<std::string>(
"application_name"),
57 input_file->get_file_layout().get_file_layout_params(),
58 input_file->get_srcid_geoid_map()
61 }
catch(
const hdf5libs::FileOpenFailed& e) {
62 std::cout <<
"ERROR: failed to open output file" << std::endl;
63 std::cerr << e.what() <<
'\n';
67 auto records = input_file->get_all_record_ids();
69 for(
const auto& rid : records ) {
70 auto tsl = input_file->get_timeslice(rid);
71 output_file->write(tsl);