#!/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//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//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."