]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Add docs release prep script (#41435)
authorMark Otto <markd.otto@gmail.com>
Mon, 5 May 2025 19:07:30 +0000 (12:07 -0700)
committerGitHub <noreply@github.com>
Mon, 5 May 2025 19:07:30 +0000 (12:07 -0700)
* Add docs release prep script

* Fix indentation

* Add argument

* Remote empty site dir, update completion text

build/docs-prep.sh [new file with mode: 0755]

diff --git a/build/docs-prep.sh b/build/docs-prep.sh
new file mode 100755 (executable)
index 0000000..2586ad3
--- /dev/null
@@ -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}"