feat: add step for mandb - user and system (update man entries) (#1319)

This commit is contained in:
Rafael Scalet
2025-09-14 03:08:52 -03:00
committed by GitHub
parent 456d62224e
commit 99d989d486
5 changed files with 72 additions and 0 deletions

View File

@@ -209,6 +209,13 @@
# home_manager_arguments = ["--flake", "file"]
[mandb]
# Enable the mandb step (to update manual entries).
# Mandb is updated in the background by a service on most systems by default.
# (default: false)
# enable = true
[git]
# How many repos to pull at max in parallel
# max_concurrency = 5

View File

@@ -1312,3 +1312,27 @@ _version: 2
zh_TW: "nh 找不到任何已設定的 flake"
zh_CN: "nh 无法找到任何已配置的 flake"
de: "nh kann keine konfigurierten flakes finden"
"System Manuals":
en: "System Manuals"
lt: "Sistemos Vadovai"
es: "Manuales del Sistema"
fr: "Manuels du Système"
zh_CN: "系统手册"
zh_TW: "系統手冊"
de: "Systemhandbücher"
"User Manuals":
en: "User Manuals"
lt: "Vartotojo Vadovai"
es: "Manuales de Usuario"
fr: "Manuels de l'utilisateur"
zh_CN: "用户手册"
zh_TW: "使用者手冊"
de: "Benutzerhandbücher"
"ManDB isn't enabled":
en: "ManDB isn't enabled"
lt: "ManDB nėra įjungtas"
es: "ManDB no está habilitado"
fr: "ManDB n'est pas activé"
zh_CN: "ManDB 未启用"
zh_TW: "ManDB 未啟用"
de: "ManDB ist nicht aktiviert"

View File

@@ -62,6 +62,12 @@ pub struct Containers {
runtime: Option<ContainerRuntime>,
}
#[derive(Deserialize, Default, Debug, Merge)]
#[serde(deny_unknown_fields)]
pub struct Mandb {
enable: Option<bool>,
}
#[derive(Deserialize, Default, Debug, Merge)]
#[serde(deny_unknown_fields)]
pub struct Git {
@@ -414,6 +420,9 @@ pub struct ConfigFile {
#[merge(strategy = crate::utils::merge_strategies::inner_merge_opt)]
linux: Option<Linux>,
#[merge(strategy = crate::utils::merge_strategies::inner_merge_opt)]
mandb: Option<Mandb>,
#[merge(strategy = crate::utils::merge_strategies::inner_merge_opt)]
git: Option<Git>,
@@ -1497,6 +1506,14 @@ impl Config {
.unwrap_or(false)
}
pub fn enable_mandb(&self) -> bool {
self.config_file
.mandb
.as_ref()
.and_then(|mandb| mandb.enable)
.unwrap_or(false)
}
pub fn open_remotes_in_new_terminal(&self) -> bool {
self.config_file
.windows

View File

@@ -94,6 +94,7 @@ pub enum Step {
Lure,
Macports,
Mamba,
Mandb,
Mas,
Maza,
Micro,
@@ -388,6 +389,11 @@ impl Step {
runner.execute(*self, "MacPorts", || macos::run_macports(ctx))?
}
Mamba => runner.execute(*self, "mamba", || generic::run_mamba_update(ctx))?,
Mandb =>
{
#[cfg(target_os = "linux")]
runner.execute(*self, "Manual Entries", || linux::run_mandb(ctx))?
}
Mas =>
{
#[cfg(target_os = "macos")]
@@ -725,6 +731,7 @@ pub(crate) fn default_steps() -> Vec<Step> {
Waydroid,
AutoCpufreq,
CinnamonSpices,
Mandb,
Pkgfile,
]);

View File

@@ -692,6 +692,23 @@ pub fn run_pkgfile(ctx: &ExecutionContext) -> Result<()> {
sudo.execute(ctx, pkgfile)?.arg("--update").status_checked()
}
pub fn run_mandb(ctx: &ExecutionContext) -> Result<()> {
let sudo = ctx.require_sudo()?;
let mandb = require("mandb")?;
if !ctx.config().enable_mandb() {
return Err(SkipStep(t!("ManDB isn't enabled").to_string()).into());
}
print_separator(t!("System Manuals"));
sudo.execute(ctx, &mandb)?.status_checked()?;
print_separator(t!("User Manuals"));
ctx.execute(&mandb).arg("--user-db").status_checked()
}
pub fn run_packer_nu(ctx: &ExecutionContext) -> Result<()> {
let nu = require("nu")?;
let packer_home = HOME_DIR.join(".local/share/nushell/packer");