Add support for -h and --verbose

This commit is contained in:
Simon Quigley 2024-12-15 02:11:15 -06:00
parent 1696f669af
commit 6988b0d082

View File

@ -57,12 +57,16 @@ static const std::string REAL_LINTIAN_DIR = BASE_OUTPUT_DIR + "/lintian";
static std::string urgency_level_override = "low"; static std::string urgency_level_override = "low";
static int worker_count = 5; static int worker_count = 5;
// Global verbosity flag
static bool verbose = false;
static std::ofstream log_file_stream; static std::ofstream log_file_stream;
// Logging functions
static void log_all(const std::string &msg, bool is_error=false) { static void log_all(const std::string &msg, bool is_error=false) {
if (is_error) { if (is_error) {
std::cerr << msg; std::cerr << msg;
} else { } else if (verbose) {
std::cout << msg; std::cout << msg;
} }
if (log_file_stream.is_open()) { if (log_file_stream.is_open()) {
@ -83,6 +87,18 @@ static void log_error(const std::string &msg) {
log_all("[ERROR] " + msg + "\n", true); log_all("[ERROR] " + msg + "\n", true);
} }
static void print_help(const std::string &prog_name) {
std::cout << "Usage: " << prog_name << " [OPTIONS] <config_path>\n"
<< "Options:\n"
<< " --skip-dput Skip uploading changes with dput.\n"
<< " --skip-cleanup Skip cleaning up the output directory after execution.\n"
<< " --urgency-level=LEVEL Set the urgency level (default: low).\n"
<< " --workers=N Set the number of worker threads (default: 5).\n"
<< " --verbose, -v Enable verbose logging.\n"
<< " --help, -h Display this help message.\n";
}
// Adjusted run_command_silent_on_success with conditional logging
static void run_command_silent_on_success(const std::vector<std::string> &cmd, const std::optional<fs::path> &cwd = std::nullopt) { static void run_command_silent_on_success(const std::vector<std::string> &cmd, const std::optional<fs::path> &cwd = std::nullopt) {
log_info("Running command: " + std::accumulate(cmd.begin(), cmd.end(), std::string(), log_info("Running command: " + std::accumulate(cmd.begin(), cmd.end(), std::string(),
[](const std::string &a, const std::string &b) -> std::string { return a + (a.empty() ? "" : " ") + b; })); [](const std::string &a, const std::string &b) -> std::string { return a + (a.empty() ? "" : " ") + b; }));
@ -314,6 +330,27 @@ static std::vector<std::string> get_exclusions(const fs::path &packaging) {
} }
int main(int argc, char** argv) { int main(int argc, char** argv) {
// Parse command-line arguments
std::string prog_name = fs::path(argv[0]).filename().string();
for(int i=1; i<argc; i++) {
std::string arg=argv[i];
if(arg == "--help" || arg == "-h") {
print_help(prog_name);
return 0;
}
if(arg == "--verbose" || arg == "-v") {
verbose = true;
// Remove the verbose flag from argc and argv for further processing
// Shift the arguments left
for(int j=i; j<argc-1; j++) {
argv[j] = argv[j+1];
}
argc--;
i--;
continue;
}
}
log_info("Script started."); log_info("Script started.");
fs::create_directories(LOG_DIR); fs::create_directories(LOG_DIR);
log_info("Ensured log directory exists: " + LOG_DIR); log_info("Ensured log directory exists: " + LOG_DIR);
@ -367,6 +404,7 @@ int main(int argc, char** argv) {
if(config_path.empty()) { if(config_path.empty()) {
log_error("No config file specified."); log_error("No config file specified.");
print_help(prog_name);
return 1; return 1;
} }