51int main(
int argc,
char* argv[]) {
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")
64 std::string packageName(
"ALL");
65 std::string inputCLIDDB;
66 std::string outFileName;
70 po::store(po::parse_command_line(argc, argv, desc), vm);
72 }
catch (
const std::exception& e) {
76 if (vm.count(
"help")) {
77 std::cout << desc << std::endl;
81 if (vm.count(
"package")) {
82 packageName = vm[
"package"].as<std::string>();
84 return inputError(
"Please specify a package using option --package.\n", desc);
87 if (vm.count(
"output")) {
88 outFileName = vm[
"output"].as<std::string>();
90 outFileName = packageName +
"_clid.db";
93 bool verbose = vm.count(
"verbose") && vm[
"verbose"].as<
bool>();
96 ISvcLocator* pSvcLoc(
nullptr);
97 std::string jobopts(
"CLIDComps/minimalPrintout.opts");
98 if (vm.count(
"jobopts")) {
99 jobopts = vm[
"jobopts"].as<std::string>();
102 std::println (std::cerr,
"cannot initialize Gaudi");
107 SmartIF<IMessageSvc> msgSvc(pSvcLoc);
110 MsgStream log(msgSvc, appName);
112 log.setLevel(MSG::WARNING);
115 SmartIF<IClassManager> pICM(pSvcLoc);
118 SmartIF<IClassIDSvc> pClassIDSvc(pSvcLoc->service(
"ClassIDSvc"));
121 SmartIF<IProperty> pCLIDSvcProp(pClassIDSvc);
124 log << MSG::INFO <<
"Writing clid.db for package "
125 << vm[
"package"].as<std::string>() <<
" to " << outFileName <<
"." <<
endmsg;
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>() +
"\"}";
134 CHECK_WITH_CONTEXT( pCLIDSvcProp->setProperty(
"OutputFileName", outFileName), appName, 2 );
143 return (pClassIDSvc->finalize()).isSuccess() ? 0 : -1;