/** * @file infoFuncs.hpp * @brief Header file for the info module support functions * * Defines functions and enumerations for the info module which provides * information about the DPM system, including version, system details, * and configuration information. * * @copyright Copyright (c) 2025 SILO GROUP LLC * @author Chris Punches * * Part of the Dark Horse Linux Package Manager (DPM) */ #pragma once #include #include #include #include #include /** * @enum Command * @brief Enumeration of supported commands for the info module */ enum Command { CMD_UNKNOWN, /**< Unknown or unsupported command */ CMD_HELP, /**< Display help information */ CMD_VERSION, /**< Display version information */ CMD_SYSTEM, /**< Display system information */ CMD_CONFIG /**< Display configuration information */ }; /** * @brief Detects the system architecture * * Uses the uname system call to determine the current system architecture. * * @return String representation of the system architecture */ std::string detect_architecture(); /** * @brief Detects the operating system information * * Uses the uname system call to determine the OS, and on Linux systems, * attempts to get distribution information from /etc/os-release. * * @return Detailed string of the operating system */ std::string detect_os(); /** * @brief Handler for the help command * * Displays information about available commands in the info module. * * @param argc Number of arguments * @param argv Array of arguments * @return 0 on success, non-zero on failure */ int cmd_help(int argc, char** argv); /** * @brief Handler for the version command * * Displays DPM version information, build date, and build time. * * @param argc Number of arguments * @param argv Array of arguments * @return 0 on success, non-zero on failure */ int cmd_version(int argc, char** argv); /** * @brief Handler for the system command * * Displays information about the system on which DPM is running, * including OS details and architecture. * * @param argc Number of arguments * @param argv Array of arguments * @return 0 on success, non-zero on failure */ int cmd_system(int argc, char** argv); /** * @brief Handler for the config command * * Displays configuration information about the DPM system. * * @param argc Number of arguments * @param argv Array of arguments * @return 0 on success, non-zero on failure */ int cmd_config(int argc, char** argv); /** * @brief Handler for unknown commands * * Displays an error message for unrecognized commands. * * @param command The unrecognized command string * @param argc Number of arguments * @param argv Array of arguments * @return 1 to indicate failure */ int cmd_unknown(const char* command, int argc, char** argv); /** * @brief Parses a command string into a Command enum value * * Converts a command string to the appropriate Command enum value * for internal routing. * * @param cmd_str The command string to parse * @return The corresponding Command enum value */ Command parse_command(const char* cmd_str);