#pragma once #include #include #include #include #include class SystemHelper { public: static std::string get_command_output(const char *cmd) { std::array buffer; std::string result; std::unique_ptr pipe(popen(cmd, "r"), pclose); if (!pipe) { throw std::runtime_error("popen() failed!"); } // Read the output a chunk at a time until the stream ends while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) { result += buffer.data(); } return result; } // Read an entire file into a string. Throws std::runtime_error on failure. static std::string read_file_to_string(const std::string &path) { std::ifstream in(path, std::ios::in | std::ios::binary); if (!in) { throw std::runtime_error("Failed to open file: " + path); } std::ostringstream ss; ss << in.rdbuf(); return ss.str(); } };