00001
00002
00003
00004
00005
00006
00007
00009
00010
00011
00012 #include "art/Framework/Core/EDAnalyzer.h"
00013 #include "art/Framework/Core/ModuleMacros.h"
00014 #include "art/Framework/Principal/Event.h"
00015 #include "art/Framework/Principal/Handle.h"
00016 #include "art/Framework/Principal/Run.h"
00017 #include "art/Framework/Principal/SubRun.h"
00018 #include "canvas/Utilities/InputTag.h"
00019 #include "fhiclcpp/ParameterSet.h"
00020
00021 #include "artdaq-core/Data/PackageBuildInfo.hh"
00022
00023 #include <iostream>
00024
00025 namespace artdaq {
00026 class PrintBuildInfo;
00027 }
00028
00029 class artdaq::PrintBuildInfo : public art::EDAnalyzer {
00030 public:
00031 explicit PrintBuildInfo(fhicl::ParameterSet const & p);
00032 virtual ~PrintBuildInfo();
00033
00034 void analyze(art::Event const & ) override {
00035
00036 }
00037
00038 virtual void beginRun(art::Run const& r);
00039
00040 private:
00041
00042 std::string buildinfo_module_label_;
00043 std::string buildinfo_instance_label_;
00044
00045 };
00046
00047
00048 artdaq::PrintBuildInfo::PrintBuildInfo(fhicl::ParameterSet const & pset)
00049 :
00050 EDAnalyzer(pset),
00051 buildinfo_module_label_(pset.get<std::string>("buildinfo_module_label")),
00052 buildinfo_instance_label_(pset.get<std::string>("buildinfo_instance_label"))
00053 {}
00054
00055 artdaq::PrintBuildInfo::~PrintBuildInfo()
00056 {
00057
00058 }
00059
00060
00061 void artdaq::PrintBuildInfo::beginRun(art::Run const& run)
00062 {
00063
00064 art::Handle<std::vector<artdaq::PackageBuildInfo> > raw;
00065
00066 run.getByLabel(buildinfo_module_label_, buildinfo_instance_label_, raw);
00067
00068 if (raw.isValid()) {
00069
00070 std::cout << "--------------------------------------------------------------" << std::endl;
00071 std::cout.width(20);
00072 std::cout << std::left << "Package" << "|";
00073 std::cout.width(20);
00074 std::cout << std::left << "Version" << "|";
00075 std::cout.width(20);
00076 std::cout << std::left << "Timestamp" << std::endl;
00077
00078 for (auto pkg : *raw ) {
00079 std::cout.width(20);
00080 std::cout << std::left << pkg.getPackageName() << "|";
00081 std::cout.width(20);
00082 std::cout << std::left << pkg.getPackageVersion() << "|";
00083 std::cout.width(20);
00084 std::cout << std::left << pkg.getBuildTimestamp() << std::endl;
00085 }
00086
00087 std::cout << "--------------------------------------------------------------" << std::endl;
00088
00089 } else {
00090
00091 std::cerr << "\n" << std::endl;
00092 std::cerr << "Warning in artdaq::PrintBuildInfo module: Run " << run.run() <<
00093 " appears not to have found product instance \"" << buildinfo_instance_label_ <<
00094 "\" of module \"" << buildinfo_module_label_ << "\"" << std::endl;
00095 std::cerr << "\n" << std::endl;
00096
00097 }
00098
00099 }
00100
00101 DEFINE_ART_MODULE(artdaq::PrintBuildInfo)