Files
dpm-core-ng/src/bundled-modules/info/include/commands.hpp
Christopher M. Punches 1cd79e79f3 Documentation generation produces consumable output in one command
Building the docs target now generates the reference and leaves finished
documents in the build tree's docs directory: pdf/ holds the compiled
PDF, html/ holds the browsable reference when that format is enabled.
Doxygen and LaTeX work under docs/tmp/, which clean removes along with
the rest of the tree.

The reference has a front page and a structure. The markdown documents
in docs/ are part of the input, OVERVIEW.md becomes the landing page,
and the rest follow as chapters ahead of the namespace, class, and file
reference. The module contract, previously a plain comment block
invisible to Doxygen, is a page in its own right.

Struct and enum members throughout the headers carry documentation, on
their own lines above what they describe.
2026-08-15 20:19:26 -04:00

96 lines
2.4 KiB
C++

/**
* @file commands.hpp
* @brief Command handlers for the info module
*
* @copyright Copyright (c) 2026 SILO GROUP LLC
* @author Chris Punches <chris.punches@silogroup.org>
*
* Part of the Dark Horse Linux Package Manager (DPM)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#pragma once
#include <dpm/core.h>
/**
* @enum Command
* @brief Commands supported by the info module
*/
enum Command {
/** Unknown or unsupported command. */
CMD_UNKNOWN,
/** Display help information. */
CMD_HELP,
/** Display library and module versions. */
CMD_VERSION,
/** Display system information. */
CMD_SYSTEM,
/** Display configuration information. */
CMD_CONFIG,
};
/**
* @brief Parses a command string into a Command enum value
*
* @param cmd_str The command string to parse (NULL/empty means help)
* @return The corresponding Command enum value
*/
Command parse_command(const char* cmd_str);
/**
* @brief Displays the info module's help text
*
* @param ctx Host libdpm-core context
* @return 0 on success
*/
int cmd_help(dpm_ctx* ctx);
/**
* @brief Reports the running libdpm-core version and the module version
*
* @param ctx Host libdpm-core context
* @return 0 on success
*/
int cmd_version(dpm_ctx* ctx);
/**
* @brief Reports operating system and architecture information
*
* @param ctx Host libdpm-core context
* @return 0 on success
*/
int cmd_system(dpm_ctx* ctx);
/**
* @brief Reports configuration as resolved by the running context
*
* @param ctx Host libdpm-core context
* @return 0 on success
*/
int cmd_config(dpm_ctx* ctx);
/**
* @brief Reports an unrecognized command
*
* @param ctx Host libdpm-core context
* @param command The unrecognized command string
* @return 1 to indicate failure
*/
int cmd_unknown(dpm_ctx* ctx, const char* command);