50int main(
int argc,
char* argv[]) {
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")
63 std::string packageName(
"ALL");
64 std::string inputCLIDDB;
65 std::string outFileName;
69 po::store(po::parse_command_line(argc, argv, desc), vm);
71 }
catch (
const std::exception& e) {
75 if (vm.count(
"help")) {
76 std::cout << desc << std::endl;
80 if (vm.count(
"package")) {
81 packageName = vm[
"package"].as<std::string>();
83 return inputError(
"Please specify a package using option --package.\n", desc);
86 if (vm.count(
"output")) {
87 outFileName = vm[
"output"].as<std::string>();
89 outFileName = packageName +
"_clid.db";
92 bool verbose = vm.count(
"verbose") && vm[
"verbose"].as<
bool>();
95 ISvcLocator* pSvcLoc(
nullptr);
96 std::string jobopts(
"CLIDComps/minimalPrintout.opts");
97 if (vm.count(
"jobopts")) {
98 jobopts = vm[
"jobopts"].as<std::string>();
101 std::cerr <<
"cannot initialize Gaudi" << std::endl;
106 SmartIF<IMessageSvc> msgSvc(pSvcLoc);
109 MsgStream log(msgSvc, appName);
111 log.setLevel(MSG::WARNING);
114 SmartIF<IClassManager> pICM(pSvcLoc);
117 SmartIF<IClassIDSvc> pClassIDSvc(pSvcLoc->service(
"ClassIDSvc"));
120 SmartIF<IProperty> pCLIDSvcProp(pClassIDSvc);
123 log << MSG::INFO <<
"Writing clid.db for package "
124 << vm[
"package"].as<std::string>() <<
" to " << outFileName <<
"." <<
endmsg;
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>() +
"\"}";
133 CHECK_WITH_CONTEXT( pCLIDSvcProp->setProperty(
"OutputFileName", outFileName), appName, 2 );
142 return (pClassIDSvc->finalize()).isSuccess() ? 0 : -1;