You've already forked uutils.github.io
mirror of
https://github.com/uutils/uutils.github.io.git
synced 2026-06-10 16:12:28 -07:00
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.
This commit is contained in:
@@ -1,119 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Build manpages for all languages
|
||||
# Usage: build-all-manpages.sh <coreutils-dir> <output-dir> <templates-dir>
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
COREUTILS_DIR="${1:?Usage: $0 <coreutils-dir> <output-dir> <templates-dir>}"
|
||||
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"
|
||||
@@ -1,129 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Build styled HTML manpages from man files
|
||||
# Usage: build-manpages.sh <manpages-dir> <tldr-dir> <output-dir> <templates-dir> [lang] [fallback-tldr-dir]
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
MANPAGES_DIR="${1:?Usage: $0 <manpages-dir> <tldr-dir> <output-dir> <templates-dir> [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<div class=\"tldr-example\"><p class=\"tldr-desc\">$desc</p>"
|
||||
;;
|
||||
'`'*'`')
|
||||
cmd="${line#\`}"
|
||||
cmd="${cmd%\`}"
|
||||
cmd=$(echo "$cmd" | sed 's/&/\&/g; s/</\</g; s/>/\>/g')
|
||||
html="$html<pre><code>$cmd</code></pre></div>"
|
||||
;;
|
||||
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="<div class=\"tldr-section\"><h2>Examples (from tldr)</h2>"
|
||||
tldr_html="$tldr_html$(parse_tldr "$tldr_file")"
|
||||
tldr_html="$tldr_html</div>"
|
||||
elif [ -n "$FALLBACK_TLDR_DIR" ] && [ -f "$fallback_file" ] && [ "$LANG_CODE" != "en" ]; then
|
||||
# Fall back to English
|
||||
tldr_html="<div class=\"tldr-section\"><h2>Examples (from tldr)</h2>"
|
||||
tldr_html="$tldr_html<p class=\"tldr-untranslated\">These examples are not yet translated. <a href=\"https://github.com/tldr-pages/tldr/blob/main/CONTRIBUTING.md#translations\">Help translate them</a>.</p>"
|
||||
tldr_html="$tldr_html$(parse_tldr "$fallback_file")"
|
||||
tldr_html="$tldr_html</div>"
|
||||
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 " <a href=\"${name}.html\" class=\"manpage-link\">${name}</a>"
|
||||
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"
|
||||
@@ -1,53 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{LANG_CODE}}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>uutils coreutils - Manual Pages ({{LANG_NAME}})</title>
|
||||
<style>
|
||||
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; max-width: 1200px; margin: 0 auto; padding: 20px; }
|
||||
h1 { color: #333; }
|
||||
.breadcrumb { margin-bottom: 20px; }
|
||||
.breadcrumb a { color: #007acc; text-decoration: none; }
|
||||
.breadcrumb a:hover { text-decoration: underline; }
|
||||
.manpage-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 15px; margin-top: 30px; }
|
||||
.manpage-link { display: block; padding: 12px; background: #f5f5f5; border: 1px solid #ddd; border-radius: 5px; text-decoration: none; color: #333; text-align: center; font-family: monospace; font-weight: bold; font-size: 1.1em; transition: all 0.3s ease; }
|
||||
.manpage-link:hover { background: #007acc; color: white; border-color: #007acc; transform: translateY(-2px); box-shadow: 0 2px 5px rgba(0,0,0,0.2); }
|
||||
.lang-bar { margin-bottom: 15px; font-size: 0.85em; color: #666; }
|
||||
.lang-bar a { color: #007acc; margin: 0 3px; }
|
||||
.lang-bar .current { font-weight: bold; color: #333; }
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body { background: #1a1a1a; color: #e0e0e0; }
|
||||
h1 { color: #e0e0e0; }
|
||||
.manpage-link { background: #2a2a2a; border-color: #444; color: #e0e0e0; }
|
||||
.manpage-link:hover { background: #007acc; color: white; border-color: #007acc; }
|
||||
.lang-bar { color: #999; }
|
||||
.lang-bar .current { color: #e0e0e0; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="breadcrumb">
|
||||
<a href="/">Home</a> /
|
||||
<a href="/coreutils">Coreutils</a> /
|
||||
<span>Manual Pages ({{LANG_NAME}})</span>
|
||||
</div>
|
||||
<div class="lang-bar">
|
||||
<a href="/coreutils/manpages/">English</a> |
|
||||
<a href="/coreutils/manpages-fr/">Français</a> |
|
||||
<a href="/coreutils/manpages-de/">Deutsch</a> |
|
||||
<a href="/coreutils/manpages-es/">Español</a> |
|
||||
<a href="/coreutils/manpages-it/">Italiano</a> |
|
||||
<a href="/coreutils/manpages-pt/">Português</a> |
|
||||
<a href="/coreutils/manpages-ja/">日本語</a> |
|
||||
<a href="/coreutils/manpages-ko/">한국어</a> |
|
||||
<a href="/coreutils/manpages-ru/">Русский</a> |
|
||||
<a href="/coreutils/manpages-zh/">中文</a> |
|
||||
<a href="/coreutils/manpages-uk/">Українська</a>
|
||||
</div>
|
||||
<h1>Manual Pages ({{LANG_NAME}})</h1>
|
||||
<p>Complete manual pages for all uutils coreutils commands. Click on any command to view its full documentation.</p>
|
||||
<div class="manpage-grid">
|
||||
{{LINKS}}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,75 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{LANG_CODE}}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>{{NAME}}(1) - uutils coreutils ({{LANG_NAME}})</title>
|
||||
<style>
|
||||
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px; line-height: 1.6; color: #333; }
|
||||
h1, h2 { color: #333; border-bottom: 1px solid #ddd; padding-bottom: 8px; }
|
||||
a { color: #007acc; text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
pre, code { background: #f5f5f5; border-radius: 3px; }
|
||||
pre { padding: 12px; overflow-x: auto; border: 1px solid #ddd; }
|
||||
code { padding: 2px 5px; }
|
||||
dl dt { font-weight: bold; margin-top: 10px; }
|
||||
dl dd { margin-left: 20px; }
|
||||
.breadcrumb { margin-bottom: 0; }
|
||||
.breadcrumb a { color: #007acc; }
|
||||
.manpage-content { margin-top: 20px; }
|
||||
.tldr-section { margin-top: 30px; padding: 20px; background: #f0f7ff; border: 1px solid #c0d8f0; border-radius: 8px; }
|
||||
.tldr-section h2 { color: #005a9e; border-bottom: 1px solid #c0d8f0; }
|
||||
.tldr-example { margin-bottom: 15px; }
|
||||
.tldr-desc { margin-bottom: 5px; font-style: italic; color: #555; }
|
||||
.tldr-example pre { background: #1e1e1e; color: #d4d4d4; border: none; }
|
||||
.tldr-untranslated { font-style: italic; color: #888; margin-bottom: 12px; font-size: 0.9em; }
|
||||
.top-bar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; }
|
||||
.top-links { display: flex; gap: 15px; font-size: 0.9em; }
|
||||
.top-links a { color: #007acc; }
|
||||
.lang-bar { margin-bottom: 15px; font-size: 0.85em; color: #666; }
|
||||
.lang-bar a { color: #007acc; margin: 0 3px; }
|
||||
.lang-bar .current { font-weight: bold; color: #333; }
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body { background: #1a1a1a; color: #e0e0e0; }
|
||||
h1, h2 { color: #e0e0e0; border-bottom-color: #444; }
|
||||
pre, code { background: #2a2a2a; }
|
||||
pre { border-color: #444; }
|
||||
.tldr-section { background: #1a2a3a; border-color: #2a4a6a; }
|
||||
.tldr-section h2 { color: #6cb4ee; border-bottom-color: #2a4a6a; }
|
||||
.tldr-desc { color: #aaa; }
|
||||
.lang-bar { color: #999; }
|
||||
.lang-bar .current { color: #e0e0e0; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="top-bar">
|
||||
<div class="breadcrumb">
|
||||
<a href="/">Home</a> /
|
||||
<a href="/coreutils">Coreutils</a> /
|
||||
<a href="/coreutils/{{MANPAGES_PATH}}/">Manual Pages</a> /
|
||||
<span>{{NAME}}(1)</span>
|
||||
</div>
|
||||
<div class="top-links">
|
||||
<a href="https://github.com/uutils/coreutils/tree/main/src/uu/{{NAME}}">Source code</a>
|
||||
<a href="https://github.com/uutils/coreutils/issues/new?title={{NAME}}:%20&labels=bug">Report an issue</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="lang-bar">
|
||||
<a href="/coreutils/manpages/{{NAME}}.html">English</a> |
|
||||
<a href="/coreutils/manpages-fr/{{NAME}}.html">Français</a> |
|
||||
<a href="/coreutils/manpages-de/{{NAME}}.html">Deutsch</a> |
|
||||
<a href="/coreutils/manpages-es/{{NAME}}.html">Español</a> |
|
||||
<a href="/coreutils/manpages-it/{{NAME}}.html">Italiano</a> |
|
||||
<a href="/coreutils/manpages-pt/{{NAME}}.html">Português</a> |
|
||||
<a href="/coreutils/manpages-ja/{{NAME}}.html">日本語</a> |
|
||||
<a href="/coreutils/manpages-ko/{{NAME}}.html">한국어</a> |
|
||||
<a href="/coreutils/manpages-ru/{{NAME}}.html">Русский</a> |
|
||||
<a href="/coreutils/manpages-zh/{{NAME}}.html">中文</a> |
|
||||
<a href="/coreutils/manpages-uk/{{NAME}}.html">Українська</a>
|
||||
</div>
|
||||
<div class="manpage-content">
|
||||
{{CONTENT}}
|
||||
</div>
|
||||
{{TLDR}}
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,147 +0,0 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}
|
||||
{{ page.title }} - {{ config.title }}
|
||||
{% endblock title %}
|
||||
|
||||
{% block main %}
|
||||
<style>
|
||||
.manpage-container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.manpage-header {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.manpage-header h1 {
|
||||
color: #333;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.manpage-description {
|
||||
color: #666;
|
||||
line-height: 1.6;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.manpage-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
|
||||
gap: 15px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.manpage-link {
|
||||
display: block;
|
||||
padding: 12px;
|
||||
background: #f5f5f5;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 5px;
|
||||
text-decoration: none;
|
||||
color: #333;
|
||||
transition: all 0.3s ease;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.manpage-link:hover {
|
||||
background: #007acc;
|
||||
color: white;
|
||||
border-color: #007acc;
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 2px 5px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.manpage-name {
|
||||
font-weight: bold;
|
||||
font-family: monospace;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.breadcrumb {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.breadcrumb a {
|
||||
color: #007acc;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.breadcrumb a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.manpage-header h1 {
|
||||
color: #e0e0e0;
|
||||
}
|
||||
|
||||
.manpage-link {
|
||||
background: #2a2a2a;
|
||||
border-color: #444;
|
||||
color: #e0e0e0;
|
||||
}
|
||||
|
||||
.manpage-link:hover {
|
||||
background: #007acc;
|
||||
color: white;
|
||||
border-color: #007acc;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="manpage-container">
|
||||
<div class="breadcrumb">
|
||||
<a href="/">Home</a> /
|
||||
<a href="/{{ page.extra.project | default(value="coreutils") }}">{{ page.extra.project | default(value="Coreutils") | capitalize }}</a> /
|
||||
<span>Manual Pages</span>
|
||||
</div>
|
||||
|
||||
<div class="manpage-header">
|
||||
<h1>{{ page.title }}</h1>
|
||||
<p class="manpage-description">
|
||||
{{ page.description | default(value="Complete manual pages for all uutils commands. Click on any command below to view its full documentation.") }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="manpage-grid">
|
||||
{% if page.extra.manpages %}
|
||||
{% for manpage in page.extra.manpages %}
|
||||
<a href="{{ manpage.name }}.html" class="manpage-link">
|
||||
<span class="manpage-name">{{ manpage.name }}</span>
|
||||
</a>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<!-- This will be populated dynamically by the build process -->
|
||||
<div id="manpage-list"></div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// If manpages weren't provided in the template data,
|
||||
// try to load them dynamically from the current directory
|
||||
if (!document.querySelector('.manpage-grid a')) {
|
||||
fetch('./manpages.json')
|
||||
.then(response => response.json())
|
||||
.then(manpages => {
|
||||
const grid = document.querySelector('.manpage-grid');
|
||||
const listDiv = document.getElementById('manpage-list');
|
||||
if (listDiv) {
|
||||
listDiv.remove();
|
||||
}
|
||||
|
||||
manpages.forEach(name => {
|
||||
const link = document.createElement('a');
|
||||
link.href = `${name}.html`;
|
||||
link.className = 'manpage-link';
|
||||
link.innerHTML = `<span class="manpage-name">${name}</span>`;
|
||||
grid.appendChild(link);
|
||||
});
|
||||
})
|
||||
.catch(err => console.error('Failed to load manpages list:', err));
|
||||
}
|
||||
</script>
|
||||
{% endblock main %}
|
||||
Reference in New Issue
Block a user