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