From f3ff4f42a3e83fe2043dc253567bf940f1c951ab Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 22 Mar 2026 09:13:11 +0100 Subject: [PATCH] Remove manpage generation in favor of mdbook docs The existing mdbook docs at /coreutils/docs/ already provide utility documentation. Remove the redundant manpage HTML generation scripts and templates. --- scripts/build-all-manpages.sh | 119 --------------------------- scripts/build-manpages.sh | 129 ----------------------------- templates/manpage-index.html | 53 ------------ templates/manpage.html | 75 ----------------- templates/manpages.html | 147 ---------------------------------- 5 files changed, 523 deletions(-) delete mode 100755 scripts/build-all-manpages.sh delete mode 100755 scripts/build-manpages.sh delete mode 100644 templates/manpage-index.html delete mode 100644 templates/manpage.html delete mode 100644 templates/manpages.html diff --git a/scripts/build-all-manpages.sh b/scripts/build-all-manpages.sh deleted file mode 100755 index 7aa4101e8..000000000 --- a/scripts/build-all-manpages.sh +++ /dev/null @@ -1,119 +0,0 @@ -#!/bin/bash -# Build manpages for all languages -# Usage: build-all-manpages.sh - -set -euo pipefail - -COREUTILS_DIR="${1:?Usage: $0 }" -OUTPUT_DIR="${2:?}" -TEMPLATES_DIR="${3:?}" - -SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" - -# Language config: lang-code -> LANG env value -declare -A LANG_MAP=( - [en]="en_US.UTF-8" - [fr]="fr_FR.UTF-8" - [de]="de_DE.UTF-8" - [es]="es_ES.UTF-8" - [it]="it_IT.UTF-8" - [pt]="pt_PT.UTF-8" - [pt-BR]="pt_BR.UTF-8" - [ja]="ja_JP.UTF-8" - [ko]="ko_KR.UTF-8" - [ru]="ru_RU.UTF-8" - [zh]="zh_CN.UTF-8" - [uk]="uk_UA.UTF-8" - [sv]="sv_SE.UTF-8" - [pl]="pl_PL.UTF-8" - [tr]="tr_TR.UTF-8" - [ar]="ar_SA.UTF-8" - [cs]="cs_CZ.UTF-8" - [da]="da_DK.UTF-8" - [id]="id_ID.UTF-8" -) - -# manpage lang code -> tldr lang code (when they differ) -declare -A MANPAGE_TO_TLDR=( - [fr-FR]="fr" - [es-ES]="es" - [zh-Hans]="zh" -) - - -TMPDIR=$(mktemp -d) -trap 'rm -rf "$TMPDIR"' EXIT - -# Download tldr archives -echo "Downloading tldr archives..." -mkdir -p "$TMPDIR/tldr-archives" -curl -sfL "https://github.com/tldr-pages/tldr/releases/download/v2.3/tldr-pages.zip" \ - -o "$TMPDIR/tldr-archives/en.zip" || true -for lang in fr de es it pt pt-BR ja ko ru zh uk sv pl tr ar cs da id; do - curl -sfL "https://github.com/tldr-pages/tldr/releases/download/v2.3/tldr-pages.${lang}.zip" \ - -o "$TMPDIR/tldr-archives/${lang}.zip" || true -done - -# Extract English tldr as fallback for untranslated pages -EN_TLDR_DIR="$TMPDIR/tldr-pages-en" -mkdir -p "$EN_TLDR_DIR" -if [ -f "$TMPDIR/tldr-archives/en.zip" ]; then - unzip -o "$TMPDIR/tldr-archives/en.zip" -d "$TMPDIR/tldr-extract-en" > /dev/null 2>&1 || true - find "$TMPDIR/tldr-extract-en" -name "*.md" -exec cp {} "$EN_TLDR_DIR/" \; 2>/dev/null || true -fi - -# Build uudoc once (if not already built by the docs step) -make -C "$COREUTILS_DIR" build-uudoc 2>&1 | tail -1 - -# Generate and build manpages for each language -for lang in "${!LANG_MAP[@]}"; do - echo "=== Building $lang manpages ===" - - # Determine the tldr/url lang code - tldr_lang="${MANPAGE_TO_TLDR[$lang]:-$lang}" - - # Extract tldr pages for this language - tldr_dir="$TMPDIR/tldr-pages-${lang}" - mkdir -p "$tldr_dir" - if [ "$lang" != "en" ]; then - archive="$TMPDIR/tldr-archives/${tldr_lang}.zip" - if [ -f "$archive" ]; then - extract_dir="$TMPDIR/tldr-extract-${lang}" - unzip -o "$archive" -d "$extract_dir" > /dev/null 2>&1 || true - find "$extract_dir" -name "*.md" -exec cp {} "$tldr_dir/" \; 2>/dev/null || true - fi - else - tldr_dir="$EN_TLDR_DIR" - fi - - # Generate manpages with the right locale (reuse already-built uudoc) - manpages_dir="$TMPDIR/manpages-${lang}" - cd "$COREUTILS_DIR" - if ! LANG="${LANG_MAP[$lang]}" make install-manpages DESTDIR="$manpages_dir" 2>&1; then - echo "WARNING: Failed to generate manpages for $lang, skipping" - continue - fi - cd - > /dev/null - - # Determine output subdirectory - if [ "$lang" = "en" ]; then - out_subdir="$OUTPUT_DIR/en" - else - out_subdir="$OUTPUT_DIR/${tldr_lang}" - fi - - # Skip if no manpages were generated - if ! ls "$manpages_dir"/usr/local/share/man/man*/*.1 > /dev/null 2>&1; then - echo "WARNING: No manpages found for $lang, skipping HTML generation" - continue - fi - - # Build HTML (pass English tldr as fallback for non-English builds) - if [ "$lang" = "en" ]; then - "$SCRIPT_DIR/build-manpages.sh" "$manpages_dir" "$tldr_dir" "$out_subdir" "$TEMPLATES_DIR" "$tldr_lang" - else - "$SCRIPT_DIR/build-manpages.sh" "$manpages_dir" "$tldr_dir" "$out_subdir" "$TEMPLATES_DIR" "$tldr_lang" "$EN_TLDR_DIR" - fi -done - -echo "All manpages built in $OUTPUT_DIR" diff --git a/scripts/build-manpages.sh b/scripts/build-manpages.sh deleted file mode 100755 index ec5d143f1..000000000 --- a/scripts/build-manpages.sh +++ /dev/null @@ -1,129 +0,0 @@ -#!/bin/bash -# Build styled HTML manpages from man files -# Usage: build-manpages.sh [lang] [fallback-tldr-dir] - -set -euo pipefail - -MANPAGES_DIR="${1:?Usage: $0 [lang] [fallback-tldr-dir]}" -TLDR_DIR="${2:?}" -OUTPUT_DIR="${3:?}" -TEMPLATES_DIR="${4:?}" -LANG_CODE="${5:-en}" -FALLBACK_TLDR_DIR="${6:-}" - -mkdir -p "$OUTPUT_DIR" - -MANPAGE_TEMPLATE="$TEMPLATES_DIR/manpage.html" -INDEX_TEMPLATE="$TEMPLATES_DIR/manpage-index.html" - -# Language display names -declare -A LANG_NAMES=( - [en]="English" [fr]="Français" [de]="Deutsch" [es]="Español" - [it]="Italiano" [pt]="Português" [pt-BR]="Português (Brasil)" - [ja]="日本語" [ko]="한국어" [ru]="Русский" [zh]="中文" - [uk]="Українська" [sv]="Svenska" [pl]="Polski" [tr]="Türkçe" - [ar]="العربية" [cs]="Čeština" [da]="Dansk" [id]="Bahasa Indonesia" -) - -LANG_NAME="${LANG_NAMES[$LANG_CODE]:-$LANG_CODE}" - -# Determine manpages base path -if [ "$LANG_CODE" = "en" ]; then - MANPAGES_PATH="manpages" -else - MANPAGES_PATH="manpages-${LANG_CODE}" -fi - -# Helper: parse a tldr markdown file into HTML -parse_tldr() { - local file="$1" - local html="" - while IFS= read -r line; do - case "$line" in - "# "* | "> "* | "---" | "") ;; - "- "*) - desc="${line#- }" - html="$html

$desc

" - ;; - '`'*'`') - cmd="${line#\`}" - cmd="${cmd%\`}" - cmd=$(echo "$cmd" | sed 's/&/\&/g; s//\>/g') - html="$html
$cmd
" - ;; - esac - done < "$file" - echo "$html" -} - -manpage_names="" - -for man in "$MANPAGES_DIR"/usr/local/share/man/man*/*.1; do - [ -f "$man" ] || continue - name=$(basename "$man" .1) - - # Convert manpage, strip man2html header and footer - man_content=$(man2html -r "$man" | sed '1,/^$/d' | sed '/This document was created by/,/<\/BODY>/d; /<\/HTML>/d') - - # Build tldr examples section - tldr_html="" - tldr_file="$TLDR_DIR/${name}.md" - fallback_file="${FALLBACK_TLDR_DIR:+$FALLBACK_TLDR_DIR/${name}.md}" - - if [ -f "$tldr_file" ]; then - # Translated tldr available - tldr_html="

Examples (from tldr)

" - tldr_html="$tldr_html$(parse_tldr "$tldr_file")" - tldr_html="$tldr_html
" - elif [ -n "$FALLBACK_TLDR_DIR" ] && [ -f "$fallback_file" ] && [ "$LANG_CODE" != "en" ]; then - # Fall back to English - tldr_html="

Examples (from tldr)

" - tldr_html="$tldr_html

These examples are not yet translated. Help translate them.

" - tldr_html="$tldr_html$(parse_tldr "$fallback_file")" - tldr_html="$tldr_html
" - fi - - # Apply template: split at placeholders, concatenate with content - content_line=$(grep -n '{{CONTENT}}' "$MANPAGE_TEMPLATE" | cut -d: -f1) - tldr_line=$(grep -n '{{TLDR}}' "$MANPAGE_TEMPLATE" | cut -d: -f1) - - { - head -n $((content_line - 1)) "$MANPAGE_TEMPLATE" \ - | sed "s|{{NAME}}|${name}|g" \ - | sed "s|{{LANG_CODE}}|${LANG_CODE}|g" \ - | sed "s|{{LANG_NAME}}|${LANG_NAME}|g" \ - | sed "s|{{MANPAGES_PATH}}|${MANPAGES_PATH}|g" - echo "$man_content" - sed -n "$((content_line + 1)),$((tldr_line - 1))p" "$MANPAGE_TEMPLATE" \ - | sed "s|{{NAME}}|${name}|g" \ - | sed "s|{{LANG_CODE}}|${LANG_CODE}|g" \ - | sed "s|{{LANG_NAME}}|${LANG_NAME}|g" \ - | sed "s|{{MANPAGES_PATH}}|${MANPAGES_PATH}|g" - echo "$tldr_html" - tail -n +$((tldr_line + 1)) "$MANPAGE_TEMPLATE" \ - | sed "s|{{NAME}}|${name}|g" \ - | sed "s|{{LANG_CODE}}|${LANG_CODE}|g" \ - | sed "s|{{LANG_NAME}}|${LANG_NAME}|g" \ - | sed "s|{{MANPAGES_PATH}}|${MANPAGES_PATH}|g" - } > "$OUTPUT_DIR/${name}.html" - - manpage_names="$manpage_names $name" -done - -# Build index page -content_line=$(grep -n '{{LINKS}}' "$INDEX_TEMPLATE" | cut -d: -f1) -{ - head -n $((content_line - 1)) "$INDEX_TEMPLATE" \ - | sed "s|{{LANG_CODE}}|${LANG_CODE}|g" \ - | sed "s|{{LANG_NAME}}|${LANG_NAME}|g" \ - | sed "s|{{MANPAGES_PATH}}|${MANPAGES_PATH}|g" - for name in $(echo $manpage_names | tr ' ' '\n' | sort); do - echo " ${name}" - done - tail -n +$((content_line + 1)) "$INDEX_TEMPLATE" \ - | sed "s|{{LANG_CODE}}|${LANG_CODE}|g" \ - | sed "s|{{LANG_NAME}}|${LANG_NAME}|g" \ - | sed "s|{{MANPAGES_PATH}}|${MANPAGES_PATH}|g" -} > "$OUTPUT_DIR/index.html" - -echo "Built $(echo $manpage_names | wc -w) manpages ($LANG_NAME) in $OUTPUT_DIR" diff --git a/templates/manpage-index.html b/templates/manpage-index.html deleted file mode 100644 index 0fc20c4e0..000000000 --- a/templates/manpage-index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - uutils coreutils - Manual Pages ({{LANG_NAME}}) - - - - - -

Manual Pages ({{LANG_NAME}})

-

Complete manual pages for all uutils coreutils commands. Click on any command to view its full documentation.

-
- {{LINKS}} -
- - diff --git a/templates/manpage.html b/templates/manpage.html deleted file mode 100644 index edc4ee06b..000000000 --- a/templates/manpage.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - {{NAME}}(1) - uutils coreutils ({{LANG_NAME}}) - - - -
- - -
- -
- {{CONTENT}} -
- {{TLDR}} - - diff --git a/templates/manpages.html b/templates/manpages.html deleted file mode 100644 index b631788bc..000000000 --- a/templates/manpages.html +++ /dev/null @@ -1,147 +0,0 @@ -{% extends "base.html" %} - -{% block title %} -{{ page.title }} - {{ config.title }} -{% endblock title %} - -{% block main %} - - -
- - -
-

{{ page.title }}

-

- {{ page.description | default(value="Complete manual pages for all uutils commands. Click on any command below to view its full documentation.") }} -

-
- -
- {% if page.extra.manpages %} - {% for manpage in page.extra.manpages %} - - {{ manpage.name }} - - {% endfor %} - {% else %} - -
- {% endif %} -
-
- - -{% endblock main %} \ No newline at end of file