mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 16:51:07 -05:00
- Add complete backend/ directory with full Django application - Add frontend/ directory with Vite + TypeScript setup ready for Next.js - Add comprehensive shared/ directory with: - Complete documentation and memory-bank archives - Media files and avatars (letters, park/ride images) - Deployment scripts and automation tools - Shared types and utilities - Add architecture/ directory with migration guides - Configure pnpm workspace for monorepo development - Update .gitignore to exclude .django_tailwind_cli/ build artifacts - Preserve all historical documentation in shared/docs/memory-bank/ - Set up proper structure for full-stack development with shared resources
146 lines
4.7 KiB
Bash
Executable File
146 lines
4.7 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# GitHub Authentication Diagnosis Script
|
|
# Validates the specific authentication issues identified
|
|
#
|
|
|
|
set -e
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
log_info() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
log_success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} ✅ $1"
|
|
}
|
|
|
|
log_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} ⚠️ $1"
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "${RED}[ERROR]${NC} ❌ $1"
|
|
}
|
|
|
|
echo "🔍 GitHub Authentication Diagnosis"
|
|
echo "=================================="
|
|
echo ""
|
|
|
|
# Test 1: Check if GITHUB_TOKEN is available
|
|
log_info "Test 1: Checking GitHub token availability"
|
|
if [[ -n "${GITHUB_TOKEN:-}" ]]; then
|
|
log_success "GITHUB_TOKEN is available in environment"
|
|
echo "Token length: ${#GITHUB_TOKEN} characters"
|
|
else
|
|
log_error "GITHUB_TOKEN is not available in environment"
|
|
|
|
# Check for token file
|
|
if [[ -f ".github-pat" ]]; then
|
|
log_info "Found .github-pat file, attempting to load..."
|
|
if GITHUB_TOKEN=$(cat .github-pat 2>/dev/null | tr -d '\n\r') && [[ -n "$GITHUB_TOKEN" ]]; then
|
|
log_success "Loaded GitHub token from .github-pat file"
|
|
export GITHUB_TOKEN
|
|
else
|
|
log_error "Failed to load token from .github-pat file"
|
|
fi
|
|
else
|
|
log_error "No .github-pat file found"
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Test 2: Validate git credential helper format
|
|
log_info "Test 2: Testing git credential formats"
|
|
|
|
if [[ -n "${GITHUB_TOKEN:-}" ]]; then
|
|
# Test current (incorrect) format
|
|
log_info "Current format: https://\$GITHUB_TOKEN@github.com"
|
|
echo "https://$GITHUB_TOKEN@github.com" > /tmp/test-credentials-bad
|
|
log_warning "This format is MISSING username component - will fail"
|
|
|
|
# Test correct format
|
|
log_info "Correct format: https://oauth2:\$GITHUB_TOKEN@github.com"
|
|
echo "https://oauth2:$GITHUB_TOKEN@github.com" > /tmp/test-credentials-good
|
|
log_success "This format includes oauth2 username - should work"
|
|
|
|
# Test alternative format
|
|
log_info "Alternative format: https://pacnpal:\$GITHUB_TOKEN@github.com"
|
|
echo "https://pacnpal:$GITHUB_TOKEN@github.com" > /tmp/test-credentials-alt
|
|
log_success "This format uses actual username - should work"
|
|
|
|
rm -f /tmp/test-credentials-*
|
|
else
|
|
log_error "Cannot test credential formats without GITHUB_TOKEN"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Test 3: Test repository URL formats
|
|
log_info "Test 3: Testing repository URL formats"
|
|
|
|
REPO_URL="https://github.com/pacnpal/thrillwiki_django_no_react.git"
|
|
log_info "Current repo URL: $REPO_URL"
|
|
log_warning "This is plain HTTPS - requires separate authentication"
|
|
|
|
if [[ -n "${GITHUB_TOKEN:-}" ]]; then
|
|
AUTH_URL="https://oauth2:${GITHUB_TOKEN}@github.com/pacnpal/thrillwiki_django_no_react.git"
|
|
log_info "Authenticated repo URL: https://oauth2:*****@github.com/..."
|
|
log_success "This URL embeds credentials - should work without git config"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Test 4: Simulate the exact deployment scenario
|
|
log_info "Test 4: Simulating deployment git credential configuration"
|
|
|
|
if [[ -n "${GITHUB_TOKEN:-}" ]]; then
|
|
# Simulate current (broken) approach
|
|
log_info "Current approach (lines 1276 in remote-deploy.sh):"
|
|
echo " git config --global credential.helper store"
|
|
echo " echo 'https://\$GITHUB_TOKEN@github.com' > ~/.git-credentials"
|
|
log_error "This will fail because git expects format: https://user:token@host"
|
|
|
|
echo ""
|
|
|
|
# Show correct approach
|
|
log_info "Correct approach should be:"
|
|
echo " git config --global credential.helper store"
|
|
echo " echo 'https://oauth2:\$GITHUB_TOKEN@github.com' > ~/.git-credentials"
|
|
log_success "This includes the required username component"
|
|
else
|
|
log_error "Cannot simulate without GITHUB_TOKEN"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Test 5: Check deployment script logic flow
|
|
log_info "Test 5: Analyzing deployment script logic"
|
|
|
|
log_info "Issue found in scripts/vm/remote-deploy.sh:"
|
|
echo " Line 1276: echo 'https://\$GITHUB_TOKEN@github.com' > ~/.git-credentials"
|
|
log_error "Missing username in credential format"
|
|
|
|
echo ""
|
|
echo " Line 1330: git clone --branch '\$repo_branch' '\$repo_url' '\$project_repo_path'"
|
|
log_error "Uses plain HTTPS URL instead of authenticated URL"
|
|
|
|
echo ""
|
|
log_info "Recommended fixes:"
|
|
echo " 1. Fix credential format to include username"
|
|
echo " 2. Use authenticated URL for git clone as fallback"
|
|
echo " 3. Add better error handling and retry logic"
|
|
|
|
echo ""
|
|
echo "🎯 DIAGNOSIS COMPLETE"
|
|
echo "====================="
|
|
log_error "PRIMARY ISSUE: Git credential helper format missing username component"
|
|
log_error "SECONDARY ISSUE: Plain HTTPS URL used without embedded authentication"
|
|
log_success "Both issues are fixable with credential format and URL updates" |