166 lines
5.3 KiB
Bash
Executable File
166 lines
5.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Upload documentation to DokuWiki
|
|
# Usage: ./upload-to-dokuwiki.sh
|
|
|
|
DOKUWIKI_BASE="http://atlantis.vish.local:8399"
|
|
REPO_ROOT="/home/homelab/organized/repos/homelab"
|
|
|
|
echo "🚀 Starting DokuWiki documentation upload..."
|
|
|
|
# Function to convert basic Markdown to DokuWiki syntax
|
|
convert_md_to_dokuwiki() {
|
|
local input_file="$1"
|
|
local temp_file=$(mktemp)
|
|
|
|
# Basic conversions
|
|
sed -e 's/^# \(.*\)/====== \1 ======/g' \
|
|
-e 's/^## \(.*\)/===== \1 =====/g' \
|
|
-e 's/^### \(.*\)/==== \1 ====/g' \
|
|
-e 's/^#### \(.*\)/=== \1 ===/g' \
|
|
-e 's/^##### \(.*\)/== \1 ==/g' \
|
|
-e 's/\*\*\([^*]*\)\*\*/\*\*\1\*\*/g' \
|
|
-e 's/\*\([^*]*\)\*/\/\/\1\/\//g' \
|
|
-e 's/`\([^`]*\)`/%%\1%%/g' \
|
|
-e 's/^- \(.*\)/ \* \1/g' \
|
|
-e 's/^\([0-9]\+\)\. \(.*\)/ - \2/g' \
|
|
-e 's/- \[x\] \(.*\)/ \* ✅ \1/g' \
|
|
-e 's/- \[ \] \(.*\)/ \* ☐ \1/g' \
|
|
"$input_file" > "$temp_file"
|
|
|
|
echo "$temp_file"
|
|
}
|
|
|
|
# Function to create DokuWiki page
|
|
create_dokuwiki_page() {
|
|
local page_id="$1"
|
|
local content_file="$2"
|
|
local summary="$3"
|
|
|
|
echo "📄 Creating page: $page_id"
|
|
|
|
# Try to create the page using curl
|
|
curl -s -X POST "$DOKUWIKI_BASE/doku.php" \
|
|
-d "id=$page_id" \
|
|
-d "do=save" \
|
|
-d "summary=$summary" \
|
|
-d "minor=1" \
|
|
--data-urlencode "wikitext@$content_file" \
|
|
> /dev/null
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ Successfully created: $page_id"
|
|
echo "🌐 View at: $DOKUWIKI_BASE/doku.php?id=$page_id"
|
|
return 0
|
|
else
|
|
echo "❌ Failed to create: $page_id"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Create main index page
|
|
echo ""
|
|
echo "📋 Creating main homelab index page..."
|
|
cat > /tmp/homelab_index.txt << 'EOF'
|
|
====== Homelab Documentation ======
|
|
|
|
//This documentation is automatically mirrored from the homelab Git repository//
|
|
|
|
===== Quick Navigation =====
|
|
|
|
* [[homelab:readme|Main README]] - Repository overview and quick start
|
|
* [[homelab:docs:index|Documentation Index]] - Complete navigation guide
|
|
* [[homelab:docs:admin:gitops_comprehensive_guide|GitOps Deployment Guide]] - Complete deployment procedures
|
|
* [[homelab:documentation_audit_report|Documentation Audit Report]] - Recent improvements
|
|
* [[homelab:operational_status|Operational Status]] - Current system status
|
|
* [[homelab:monitoring_architecture|Monitoring Architecture]] - Monitoring setup
|
|
|
|
===== Infrastructure =====
|
|
|
|
* [[homelab:docs:infrastructure:health_report|Infrastructure Health Report]] - System health status
|
|
* [[homelab:gitops_deployment_guide|GitOps Deployment Guide]] - Deployment procedures
|
|
|
|
===== Operations =====
|
|
|
|
* [[homelab:docs:runbooks:add_new_service|Add New Service]] - Service deployment runbook
|
|
|
|
===== About =====
|
|
|
|
This DokuWiki instance mirrors the documentation from the homelab Git repository at https://git.vish.gg/Vish/homelab
|
|
|
|
**Last Updated:** $(date)
|
|
**Source Repository:** https://git.vish.gg/Vish/homelab
|
|
**GitOps Status:** ✅ 18 active stacks, 50+ containers
|
|
EOF
|
|
|
|
create_dokuwiki_page "homelab:start" "/tmp/homelab_index.txt" "Created homelab documentation index"
|
|
|
|
# Convert and upload key documentation files
|
|
declare -A docs_map=(
|
|
["$REPO_ROOT/README.md"]="homelab:readme"
|
|
["$REPO_ROOT/docs/INDEX.md"]="homelab:docs:index"
|
|
["$REPO_ROOT/docs/admin/GITOPS_COMPREHENSIVE_GUIDE.md"]="homelab:docs:admin:gitops_comprehensive_guide"
|
|
["$REPO_ROOT/DOCUMENTATION_AUDIT_REPORT.md"]="homelab:documentation_audit_report"
|
|
["$REPO_ROOT/docs/infrastructure/INFRASTRUCTURE_HEALTH_REPORT.md"]="homelab:docs:infrastructure:health_report"
|
|
["$REPO_ROOT/docs/runbooks/add-new-service.md"]="homelab:docs:runbooks:add_new_service"
|
|
["$REPO_ROOT/GITOPS_DEPLOYMENT_GUIDE.md"]="homelab:gitops_deployment_guide"
|
|
["$REPO_ROOT/OPERATIONAL_STATUS.md"]="homelab:operational_status"
|
|
["$REPO_ROOT/MONITORING_ARCHITECTURE.md"]="homelab:monitoring_architecture"
|
|
)
|
|
|
|
successful=0
|
|
total=0
|
|
|
|
for file_path in "${!docs_map[@]}"; do
|
|
page_id="${docs_map[$file_path]}"
|
|
total=$((total + 1))
|
|
|
|
if [ -f "$file_path" ]; then
|
|
echo ""
|
|
echo "📄 Converting: $(basename "$file_path")"
|
|
|
|
# Convert Markdown to DokuWiki
|
|
converted_file=$(convert_md_to_dokuwiki "$file_path")
|
|
|
|
# Add header with source info
|
|
temp_with_header=$(mktemp)
|
|
cat > "$temp_with_header" << EOF
|
|
====== $(basename "$file_path") ======
|
|
|
|
//This page is automatically mirrored from the homelab Git repository//
|
|
//Last updated: $(date)//
|
|
//Source: $file_path//
|
|
|
|
EOF
|
|
cat "$converted_file" >> "$temp_with_header"
|
|
|
|
# Upload to DokuWiki
|
|
if create_dokuwiki_page "$page_id" "$temp_with_header" "Updated from repository"; then
|
|
successful=$((successful + 1))
|
|
fi
|
|
|
|
# Cleanup
|
|
rm -f "$converted_file" "$temp_with_header"
|
|
else
|
|
echo "⚠️ File not found: $file_path"
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo "🎯 Upload Summary:"
|
|
echo "✅ Successful: $successful/$total"
|
|
echo "❌ Failed: $((total - successful))/$total"
|
|
|
|
if [ $successful -gt 0 ]; then
|
|
echo ""
|
|
echo "🌐 DokuWiki documentation available at:"
|
|
echo " $DOKUWIKI_BASE/doku.php?id=homelab:start"
|
|
echo " $DOKUWIKI_BASE/doku.php?id=homelab:readme"
|
|
echo " $DOKUWIKI_BASE/doku.php?id=homelab:docs:index"
|
|
fi
|
|
|
|
# Cleanup
|
|
rm -f /tmp/homelab_index.txt
|
|
|
|
echo ""
|
|
echo "✅ DokuWiki upload completed!"
|