00001
00002
00003
00004
00005
00006
00007
00009
00010
00011 #include "art/Framework/Core/EDAnalyzer.h"
00012 #include "art/Framework/Core/ModuleMacros.h"
00013 #include "art/Framework/Principal/Event.h"
00014 #include "art/Framework/Principal/Handle.h"
00015 #include "art/Framework/Principal/Run.h"
00016 #include "art/Framework/Principal/SubRun.h"
00017 #include "canvas/Utilities/InputTag.h"
00018 #include "fhiclcpp/ParameterSet.h"
00019
00020 #include "artdaq-core/Data/PackageBuildInfo.hh"
00021
00022 #include <iostream>
00023
00024 namespace artdaq
00025 {
00026 class PrintBuildInfo;
00027 }
00028
00032 class artdaq::PrintBuildInfo : public art::EDAnalyzer
00033 {
00034 public:
00047 explicit PrintBuildInfo(fhicl::ParameterSet const& p);
00048
00052 virtual ~PrintBuildInfo() = default;
00053
00057 void analyze(art::Event const&) override { }
00058
00066 void beginRun(art::Run const& run) override;
00067
00068 private:
00069
00070 std::string buildinfo_module_label_;
00071 std::string buildinfo_instance_label_;
00072 };
00073
00074
00075 artdaq::PrintBuildInfo::PrintBuildInfo(fhicl::ParameterSet const& pset)
00076 :
00077 EDAnalyzer(pset)
00078 , buildinfo_module_label_(pset.get<std::string>("buildinfo_module_label"))
00079 , buildinfo_instance_label_(pset.get<std::string>("buildinfo_instance_label")) {}
00080
00081
00082
00083 void artdaq::PrintBuildInfo::beginRun(art::Run const& run)
00084 {
00085 art::Handle<std::vector<artdaq::PackageBuildInfo>> raw;
00086
00087 run.getByLabel(buildinfo_module_label_, buildinfo_instance_label_, raw);
00088
00089 if (raw.isValid())
00090 {
00091 std::cout << "--------------------------------------------------------------" << std::endl;
00092 std::cout.width(20);
00093 std::cout << std::left << "Package" << "|";
00094 std::cout.width(20);
00095 std::cout << std::left << "Version" << "|";
00096 std::cout.width(20);
00097 std::cout << std::left << "Timestamp" << std::endl;
00098
00099 for (auto pkg : *raw)
00100 {
00101 std::cout.width(20);
00102 std::cout << std::left << pkg.getPackageName() << "|";
00103 std::cout.width(20);
00104 std::cout << std::left << pkg.getPackageVersion() << "|";
00105 std::cout.width(20);
00106 std::cout << std::left << pkg.getBuildTimestamp() << std::endl;
00107 }
00108
00109 std::cout << "--------------------------------------------------------------" << std::endl;
00110 }
00111 else
00112 {
00113 std::cerr << "\n" << std::endl;
00114 std::cerr << "Warning in artdaq::PrintBuildInfo module: Run " << run.run() <<
00115 " appears not to have found product instance \"" << buildinfo_instance_label_ <<
00116 "\" of module \"" << buildinfo_module_label_ << "\"" << std::endl;
00117 std::cerr << "\n" << std::endl;
00118 }
00119 }
00120
00121 DEFINE_ART_MODULE(artdaq::PrintBuildInfo)