From 28dde64d7eab92f2e67ff5a8e17e250db151e8bd Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 11 Sep 2025 21:42:48 +0200 Subject: [PATCH] github action: add a check that uudoc works --- .github/workflows/documentation.yml | 136 ++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 .github/workflows/documentation.yml diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml new file mode 100644 index 000000000..88f95e728 --- /dev/null +++ b/.github/workflows/documentation.yml @@ -0,0 +1,136 @@ +# spell-checker:ignore dtolnay libsystemd libattr libcap gsub + +name: Check uudoc Documentation Generation + +on: + pull_request: + paths: + - 'src/bin/uudoc.rs' + - 'src/uu/*/locales/en-US.ftl' + - 'Cargo.toml' + - '.github/workflows/documentation.yml' + push: + branches: + - main + paths: + - 'src/bin/uudoc.rs' + - 'src/uu/*/locales/en-US.ftl' + - 'Cargo.toml' + +jobs: + check-doc: + name: Verify uudoc generates correct documentation + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install/setup prerequisites + shell: bash + run: sudo apt-get -y update ; sudo apt-get -y install libselinux1-dev libsystemd-dev libacl1-dev libattr1-dev libcap-dev + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Download tldr + run: curl https://tldr.sh/assets/tldr.zip -o docs/tldr.zip + + - name: Generate documentation + run: cargo run --bin uudoc --all-features + + - name: Get current version from Cargo.toml + id: version + run: | + VERSION=$(awk '/\[workspace\.package\]/{flag=1; next} flag && /version = /{gsub(/.*= "/, ""); gsub(/".*/, ""); print; exit}' Cargo.toml) + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "Detected version: $VERSION" + + - name: Check for --repeated option in uniq.md + run: | + if [ ! -f "docs/src/utils/uniq.md" ]; then + echo "docs/src/utils/uniq.md does not exist" + exit 1 + fi + + if ! grep -q -- "--repeated" docs/src/utils/uniq.md; then + echo "'--repeated' option not found in docs/src/utils/uniq.md" + echo "Content of uniq.md:" + head -50 docs/src/utils/uniq.md + exit 1 + fi + + - name: Check for correct version in ls.md + run: | + VERSION="${{ steps.version.outputs.version }}" + + if [ ! -f "docs/src/utils/ls.md" ]; then + echo "docs/src/utils/ls.md does not exist" + exit 1 + fi + + if ! grep -q "v(uutils coreutils) $VERSION" docs/src/utils/ls.md; then + echo "Version '$VERSION' not found in docs/src/utils/ls.md" + echo "Found version info:" + grep "v(uutils coreutils)" docs/src/utils/ls.md || echo "No version info found" + echo "Full version section:" + grep -A2 -B2 "version" docs/src/utils/ls.md || echo "No version section found" + exit 1 + fi + + - name: Verify usage information is present + run: | + if [ ! -f "docs/src/utils/cat.md" ]; then + echo "docs/src/utils/cat.md does not exist" + exit 1 + fi + + if ! grep -q "cat \[OPTION\].*\[FILE\]" docs/src/utils/cat.md; then + echo "Usage information missing from cat.md" + echo "Content around usage:" + grep -A5 -B5 "cat" docs/src/utils/cat.md | head -20 + exit 1 + fi + + - name: Verify help text is properly resolved + run: | + if [ ! -f "docs/src/utils/cat.md" ]; then + echo "docs/src/utils/cat.md does not exist" + exit 1 + fi + + if grep -q "cat-help-" docs/src/utils/cat.md; then + echo "Found unresolved Fluent keys in cat.md - help text not properly translated" + echo "Unresolved Fluent keys found:" + grep "cat-help-" docs/src/utils/cat.md + exit 1 + fi + + - name: Verify about text is present + run: | + if [ ! -f "docs/src/utils/cat.md" ]; then + echo "docs/src/utils/cat.md does not exist" + exit 1 + fi + + if ! grep -q "Concatenate FILE(s)" docs/src/utils/cat.md; then + echo "About text missing from cat.md" + echo "Content of cat.md:" + head -30 docs/src/utils/cat.md + exit 1 + fi + + - name: Verify tldr examples integration + run: | + if [ ! -f "docs/src/utils/cp.md" ]; then + echo "docs/src/utils/cp.md does not exist" + exit 1 + fi + + if ! grep -q "The examples are provided by" docs/src/utils/cp.md; then + echo "tldr examples integration missing from cp.md" + echo "Expected to find 'The examples are provided by' text" + echo "Content of cp.md:" + tail -20 docs/src/utils/cp.md + exit 1 + fi