#pragma once #include #include #include #include "types.h" namespace build { class command_builder { private: indent_t indent_; std::stringstream buffer_; public: command_builder(std::string const & cmd, int indent = 0); template command_builder && operator<<(T const & value) &&; template command_builder & operator<<(T const & value) &; template command_builder & operator<<(std::vector const & value) &; int execute() const; private: template void write(T const & value) { buffer_ << value; } void write(version const & vers); void write(source_file const & file); void write(output_file const & file); }; }