mkdev 3.5.0

Save your boilerplate instead of writing it.
// mkdev - Save your boilerplate instead of writing it
// Copyright (C) 2026  James C. Craven <4jamesccraven@gmail.com>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU 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 General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.
//! Functions that are tangential to or mutually exclusive with recipe logic.
mod cfg;
mod i18n;
mod man;

use crate::cli::Cli;
use crate::mkdev_error::Error;

/// Calls every mkdev hook sequentially.
pub fn hooks(args: &Cli) -> Result<(), Error> {
    // locale selection
    i18n::hook();

    // mkdev configuration overrides
    cfg::hook(args);

    // man generation
    // note: always exits program.
    man::hook(args)?;

    Ok(())
}