Files
2026-09-04 09:07:54 -03:00

75 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# new-page.sh
# Scaffold a new Confluence page draft from a template into the local drafts
# folder. The draft is storage-format XHTML, ready to fill and post.
#
# Usage:
# bash scripts/new-page.sh <space> <title> [template]
# space : AVP, BASS, etc. (see confluence-page/references/space-keys.md)
# title : Page title; spaces become + in the storage path
# template : hub | how-to | rfc | postmortem (default: hub)
#
# Writes to:
# ~/Netcracker/Projects/NDO/knowledge/confluence/drafts/<SPACE>/<slug>.xml
#
# Exit: 0 on success, 1 on bad args, 2 on missing template.
set -eu
if [[ $# -lt 2 ]]; then
echo "Usage: $0 <space> <title> [template]" >&2
exit 1
fi
SPACE="$(echo "$1" | tr '[:lower:]' '[:upper:]')"
TITLE="$2"
TEMPLATE="${3:-hub}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
ROOT="$(dirname "$SCRIPT_DIR")"
TEMPLATE_FILE="$ROOT/templates/${TEMPLATE}.md"
if [[ ! -f "$TEMPLATE_FILE" ]]; then
echo "Template not found: $TEMPLATE_FILE" >&2
echo "Available templates:" >&2
ls "$ROOT/templates" 2>/dev/null | sed 's/\.md$//' | sed 's/^/ - /' >&2
exit 2
fi
DRAFT_ROOT="${DRAFT_ROOT:-$HOME/Netcracker/Projects/NDO/knowledge/confluence/drafts}"
DRAFT_DIR="$DRAFT_ROOT/$SPACE"
mkdir -p "$DRAFT_DIR"
SLUG="$(echo "$TITLE" | tr '[:upper:]' '[:lower:]' | tr ' /' '--' | tr -cd 'a-z0-9-_')"
DRAFT_FILE="$DRAFT_DIR/${SLUG}.xml"
{
echo '<?xml version="1.0" encoding="UTF-8"?>'
echo "<page xmlns:ac=\"http://atlassian.com/content\" xmlns:ri=\"http://atlassian.com/resource/identifier\">"
echo " <title>$TITLE</title>"
echo " <space>$SPACE</space>"
echo " <body>"
echo " <h1>$TITLE</h1>"
echo " <p><em>Drafted $(date -u +%Y-%m-%d). Edit the body below this line; the title and space are set above.</em></p>"
echo ""
echo "<!--"
cat "$TEMPLATE_FILE"
echo ""
echo "-->"
echo ""
echo " <p>Body starts here.</p>"
echo ""
echo " </body>"
echo "</page>"
} > "$DRAFT_FILE"
echo "Draft created: $DRAFT_FILE"
echo "Space: $SPACE"
echo "Title: $TITLE"
echo "Template: $TEMPLATE"
echo
echo "Next:"
echo " 1. Fill the body between <body> and </body> using storage XHTML."
echo " 2. Run bash $SCRIPT_DIR/dry-run-publish.sh \"$DRAFT_FILE\""
echo " 3. Post via mcp-atlassian: confluence_create_page_from_file."