51 {
52
53
54 const std::string appName("genCLIDDB");
55 po::options_description
desc(appName +
" allowed options");
57 ("help,h", "produce help message")
58 ("package,p", po::value<std::string>(), "package we want to load clids from")
59 ("input,i", po::value<std::string>(), "optional path to input clid db file")
60 ("output,o", po::value<std::string>(), "optional path to resulting clid db file")
61 ("jobopts,j", po::value<std::string>(), "name of optional job options txt file, located at ../share/jobopts")
62 ("verbose,v", po::value<bool>()->implicit_value(true), "verbose output")
63 ;
64 std::string packageName("ALL");
65 std::string inputCLIDDB;
67
68 po::variables_map vm;
69 try {
70 po::store(po::parse_command_line(argc, argv, desc), vm);
71 po::notify(vm);
72 } catch (const std::exception& e) {
74 }
75
76 if (vm.count("help")) {
77 std::cout <<
desc << std::endl;
78 return 0;
79 }
80
81 if (vm.count("package")) {
82 packageName = vm["package"].as<std::string>();
83 } else {
84 return inputError(
"Please specify a package using option --package.\n", desc);
85 }
86
87 if (vm.count("output")) {
89 } else {
91 }
92
93 bool verbose = vm.count(
"verbose") && vm[
"verbose"].as<
bool>();
94
95
96 ISvcLocator* pSvcLoc(nullptr);
97 std::string
jobopts(
"CLIDComps/minimalPrintout.opts");
98 if (vm.count("jobopts")) {
99 jobopts = vm[
"jobopts"].as<std::string>();
100 }
102 std::println (std::cerr, "cannot initialize Gaudi");
103 return 2;
104 }
105
106
107 SmartIF<IMessageSvc>
msgSvc(pSvcLoc);
109
110 MsgStream
log(msgSvc, appName);
112 log.setLevel(MSG::WARNING);
113 }
114
115 SmartIF<IClassManager> pICM(pSvcLoc);
117
118 SmartIF<IClassIDSvc> pClassIDSvc(pSvcLoc->service("ClassIDSvc"));
120
121 SmartIF<IProperty> pCLIDSvcProp(pClassIDSvc);
123
124 log << MSG::INFO <<
"Writing clid.db for package "
125 << vm[
"package"].as<std::string>() <<
" to " << outFileName <<
"." <<
endmsg;
126
127
128 std::string dbfiles("{}");
129 if (vm.count("input")) {
130 log << MSG::INFO <<
"Reading clid.db from " << vm[
"input"].as<std::string>() <<
"." <<
endmsg;
131 dbfiles = "{\"" + vm["input"].as<std::string>() + "\"}";
132 }
134 CHECK_WITH_CONTEXT( pCLIDSvcProp->setProperty(
"OutputFileName", outFileName), appName, 2 );
135
136
138
139
141
142
143 return (pClassIDSvc->finalize()).isSuccess() ? 0 : -1;
144}
IAppMgrUI * initGaudi(const std::string &options, bool verbose, ISvcLocator *&svcLocator)
int inputError(const std::string &errDescr, const po::options_description &optDescr)