From dddd792ffe7b915ce63531998f785396296915b2 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Mon, 5 May 2025 12:07:30 -0700 Subject: [PATCH] Add docs release prep script (#41435) * Add docs release prep script * Fix indentation * Add argument * Remote empty site dir, update completion text --- build/docs-prep.sh | 169 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100755 build/docs-prep.sh diff --git a/build/docs-prep.sh b/build/docs-prep.sh new file mode 100755 index 0000000000..2586ad3437 --- /dev/null +++ b/build/docs-prep.sh @@ -0,0 +1,169 @@ +#!/bin/bash + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[0;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# Default branch suffix +BRANCH_SUFFIX="release" + +# Check if a custom version parameter was provided +if [ $# -eq 1 ]; then + BRANCH_SUFFIX="$1" +fi + +# Branch name to create +NEW_BRANCH="gh-pages-${BRANCH_SUFFIX}" + +# Function to print colored messages +print_success() { + echo -e "${GREEN}✓ $1${NC}" +} + +print_error() { + echo -e "${RED}✗ $1${NC}" + exit 1 +} + +print_info() { + echo -e "${BLUE}ℹ $1${NC}" +} + +print_warning() { + echo -e "${YELLOW}⚠ $1${NC}" +} + +# Function to execute command with error handling +execute() { + print_info "Running: $1" + eval $1 + if [ $? -ne 0 ]; then + print_error "Failed to execute: $1" + else + print_success "Successfully executed: $1" + fi +} + +# Check if /tmp/_site directory exists from a previous run +if [ -d "/tmp/_site" ]; then + print_warning "Found existing /tmp/_site directory. Removing it…" + rm -rf /tmp/_site +fi + +# Main process +print_info "Starting documentation deployment process…" + +# Step 1: Build documentation +print_info "Building documentation with npm run docs…" +npm run docs +if [ $? -ne 0 ]; then + print_error "Documentation build failed!" +fi +print_success "Documentation built successfully" + +# Step 2: Move _site to /tmp/ +print_info "Moving _site to temporary location…" +execute "mv _site /tmp/" + +# Step 3: Switch to gh-pages branch +print_info "Checking out gh-pages branch…" +git checkout gh-pages +if [ $? -ne 0 ]; then + print_error "Failed to checkout gh-pages branch. Make sure it exists." +fi +print_success "Switched to gh-pages branch" + +# Step 4: Create a new branch for the update +print_info "Creating new branch ${NEW_BRANCH}…" +execute "git checkout -b ${NEW_BRANCH}" + +# Step 5: Move root files +print_info "Moving root files from temporary location…" +ROOT_FILES=("404.html" "CNAME" "apple-touch-icon.png" "favicon.ico" "index.html" "robots.txt" "sitemap-0.xml" "sitemap-index.xml" "sw.js") +for file in "${ROOT_FILES[@]}"; do + if [ -f "/tmp/_site/$file" ]; then + execute "mv /tmp/_site/$file ." + else + print_warning "File /tmp/_site/$file not found. Skipping." + fi +done + +# Step 6: Move directories with cleanup +print_info "Moving directories from temporary location…" +DIRS=("about" "components" "docsref" "examples" "getting-started" "migration") +for dir in "${DIRS[@]}"; do + if [ -d "/tmp/_site/$dir" ]; then + if [ -d "$dir" ]; then + execute "rm -rf $dir" + fi + execute "mv /tmp/_site/$dir ." + else + print_warning "Directory /tmp/_site/$dir not found. Skipping." + fi +done + +# Step 7: Handle special doc directories +print_info "Handling special documentation directories…" +SPECIAL_DOCS=("docs/getting-started" "docs/versions") +for dir in "${SPECIAL_DOCS[@]}"; do + if [ -d "/tmp/_site/$dir" ]; then + if [ -d "$dir" ]; then + execute "rm -rf $dir" + fi + # Make sure parent directory exists + parent_dir=$(dirname "$dir") + mkdir -p "$parent_dir" + execute "mv /tmp/_site/$dir $parent_dir/" + else + print_warning "Directory /tmp/_site/$dir not found. Skipping." + fi +done + +# Step 8: Move docs index.html +if [ -f "/tmp/_site/docs/index.html" ]; then + execute "mv /tmp/_site/docs/index.html docs/index.html" +else + print_warning "File /tmp/_site/docs/index.html not found. Skipping." +fi + +# Step 9: Handle docs/5.3 +if [ -d "/tmp/_site/docs/5.3" ]; then + if [ -d "docs/5.3" ]; then + execute "rm -rf docs/5.3" + fi + execute "mv /tmp/_site/docs/5.3 docs/" +else + print_warning "Directory /tmp/_site/docs/5.3 not found. Skipping." +fi + +# Clean up remaining files in /tmp/_site if any +if [ -d "/tmp/_site" ]; then + remaining_files=$(find /tmp/_site -type f | wc -l) + remaining_dirs=$(find /tmp/_site -type d | wc -l) + if [ $remaining_files -gt 0 ] || [ $remaining_dirs -gt 1 ]; then + print_warning "There are still some files or directories in /tmp/_site that weren't moved." + print_warning "You may want to inspect /tmp/_site to see if anything important was missed." + else + print_info "Cleaning up temporary directory…" + rm -rf /tmp/_site + print_success "Temporary directory cleaned up" + fi +fi + +# Step 10: Remove empty site directory if it exists +if [ -d "site" ]; then + print_info "Removing empty site directory…" + execute "rm -rf site" +fi + +print_success "Docs prep complete!" +print_info "Review changes before committing and pushing." +print_info "Next steps:" +print_info " 1. Run a local server to review changes" +print_info " 2. Check browser and web inspector for any errors" +print_info " 3. git add ." +print_info " 4. git commit -m \"Update documentation\"" +print_info " 5. git push origin ${NEW_BRANCH}"