/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #ifndef cmQtAutoGenerator_h #define cmQtAutoGenerator_h #include "cmConfigure.h" // IWYU pragma: keep #include "cmQtAutoGen.h" #include #include class cmMakefile; class cmQtAutoGenerator { CM_DISABLE_COPY(cmQtAutoGenerator) public: cmQtAutoGenerator(); virtual ~cmQtAutoGenerator() = default; bool Run(std::string const& infoFile, std::string const& config); std::string const& GetInfoFile() const { return InfoFile; } std::string const& GetInfoDir() const { return InfoDir; } std::string const& GetInfoConfig() const { return InfoConfig; } bool GetVerbose() const { return Verbose; } protected: // -- Central processing virtual bool Process(cmMakefile* makefile) = 0; // -- Log info void LogBold(std::string const& message) const; void LogInfo(cmQtAutoGen::Generator genType, std::string const& message) const; // -- Log warning void LogWarning(cmQtAutoGen::Generator genType, std::string const& message) const; void LogFileWarning(cmQtAutoGen::Generator genType, std::string const& filename, std::string const& message) const; // -- Log error void LogError(cmQtAutoGen::Generator genType, std::string const& message) const; void LogFileError(cmQtAutoGen::Generator genType, std::string const& filename, std::string const& message) const; void LogCommandError(cmQtAutoGen::Generator genType, std::string const& message, std::vector const& command, std::string const& output) const; // -- Utility bool MakeParentDirectory(cmQtAutoGen::Generator genType, std::string const& filename) const; bool FileIsOlderThan(std::string const& buildFile, std::string const& sourceFile, std::string* error = nullptr); bool FileRead(std::string& content, std::string const& filename, std::string* error = nullptr); bool FileWrite(cmQtAutoGen::Generator genType, std::string const& filename, std::string const& content); bool FileDiffers(std::string const& filename, std::string const& content); bool RunCommand(std::vector const& command, std::string& output) const; private: // -- Info settings std::string InfoFile; std::string InfoDir; std::string InfoConfig; // -- Settings bool Verbose; bool ColorOutput; }; #endif