Line data Source code
1 : #include "logging/Logging.hpp"
2 :
3 : #include "conffwk/Configuration.hpp"
4 :
5 : #include "confmodel/DaqApplication.hpp"
6 : #include "confmodel/RCApplication.hpp"
7 : #include "confmodel/DaqModule.hpp"
8 : #include "confmodel/ResourceSet.hpp"
9 : #include "confmodel/Segment.hpp"
10 : #include "confmodel/Session.hpp"
11 :
12 : #include "appmodel/SmartDaqApplication.hpp"
13 :
14 : #include <iostream>
15 : #include <string>
16 :
17 : using namespace dunedaq;
18 :
19 :
20 0 : void print_segment_application_commandline(
21 : const dunedaq::confmodel::Segment* segment,
22 : const dunedaq::confmodel::Session* session,
23 : conffwk::Configuration* db) {
24 :
25 0 : auto const* controller = segment->get_controller();
26 :
27 0 : std::cout << "\n" << controller->UID() << "\n";
28 0 : for (auto const& CLA: controller->construct_commandline_parameters(*db, session))
29 0 : std::cout << "CLA: " << CLA << "\n";
30 :
31 0 : for (auto const& app: segment->get_applications()) {
32 0 : std::cout << "\n" << app->UID() << "\n";
33 0 : std::vector<std::string> CLAs;
34 0 : if (app->castable("SmartDaqApplication")) {
35 0 : auto const* sdapp = db->get<dunedaq::appmodel::SmartDaqApplication>(app->UID());
36 0 : CLAs = sdapp->construct_commandline_parameters(*db, session);
37 0 : } else if (app->castable("DaqApplication")) {
38 0 : auto const* dapp = db->get<dunedaq::appmodel::SmartDaqApplication>(app->UID());
39 0 : CLAs = dapp->construct_commandline_parameters(*db, session);
40 : } else {
41 0 : CLAs = app->get_commandline_parameters();
42 : }
43 :
44 0 : for (auto const& CLA: CLAs)
45 0 : std::cout << "CLA: " << CLA << "\n";
46 0 : }
47 :
48 0 : for (auto const& segment: segment->get_segments())
49 0 : print_segment_application_commandline(segment, session, db);
50 :
51 0 : }
52 :
53 :
54 0 : int main(int argc, char* argv[]) {
55 :
56 0 : if (argc < 3) {
57 0 : std::cout << "Usage: " << argv[0] << " session database-file\n";
58 0 : return 0;
59 : }
60 :
61 0 : std::string sessionName(argv[1]);
62 0 : dunedaq::logging::Logging::setup(sessionName, "get_apps_arguments");
63 :
64 0 : std::string confimpl = "oksconflibs:" + std::string(argv[2]);
65 0 : auto confdb = new conffwk::Configuration(confimpl);
66 :
67 0 : auto session = confdb->get<confmodel::Session>(sessionName);
68 0 : if (session==nullptr) {
69 0 : std::cerr << "Session " << sessionName << " not found in database\n";
70 0 : return -1;
71 : }
72 :
73 0 : print_segment_application_commandline(session->get_segment(), session, confdb);
74 0 : }
|