blob: 62308b323b535a4656230e4640f615631aa578c9 [file] [log] [blame]
#!/usr/bin/env bash
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# Generates documentation for DataFusion examples using the Rust-based
# documentation generator and verifies that the committed README.md
# is up to date.
#
# The README is generated from documentation comments in:
# datafusion-examples/examples/<group>/main.rs
#
# This script is intended to be run in CI to ensure that example
# documentation stays in sync with the code.
#
# To update the README locally, run this script and replace README.md
# with the generated output.
set -euo pipefail
ROOT_DIR="$(git rev-parse --show-toplevel)"
# Load centralized tool versions
source "${ROOT_DIR}/ci/scripts/utils/tool_versions.sh"
EXAMPLES_DIR="$ROOT_DIR/datafusion-examples"
README="$EXAMPLES_DIR/README.md"
README_NEW="$EXAMPLES_DIR/README-NEW.md"
echo "▶ Generating examples README (Rust generator)…"
cargo run --quiet \
--manifest-path "$EXAMPLES_DIR/Cargo.toml" \
--bin examples-docs \
> "$README_NEW"
echo "▶ Formatting generated README with prettier ${PRETTIER_VERSION}…"
npx "prettier@${PRETTIER_VERSION}" \
--parser markdown \
--write "$README_NEW"
echo "▶ Comparing generated README with committed version…"
if ! diff -u "$README" "$README_NEW" > /tmp/examples-readme.diff; then
echo ""
echo "❌ Examples README is out of date."
echo ""
echo "The examples documentation is generated automatically from:"
echo " - datafusion-examples/examples/<group>/main.rs"
echo ""
echo "To update the README locally, run:"
echo ""
echo " cargo run --bin examples-docs \\"
echo " | npx prettier@${PRETTIER_VERSION} --parser markdown --write \\"
echo " > datafusion-examples/README.md"
echo ""
echo "Diff:"
echo "------------------------------------------------------------"
cat /tmp/examples-readme.diff
echo "------------------------------------------------------------"
exit 1
fi
echo "✅ Examples README is up-to-date."