bin/ 230 CLI tools (ask-*, br-*, agent-*, roadid, carpool) scripts/ 99 automation scripts fleet/ Node configs and deployment workers/ Cloudflare Worker sources (roadpay, road-search, squad webhooks) roadc/ RoadC programming language roadnet/ Mesh network (5 APs, WireGuard) operator/ Memory system scripts config/ System configs dotfiles/ Shell configs docs/ Documentation BlackRoad OS — Pave Tomorrow. RoadChain-SHA2048: d1a24f55318d338b RoadChain-Identity: alexa@sovereign RoadChain-Full: d1a24f55318d338b24b60bad7be39286379c76ae5470817482100cb0ddbbcb97e147d07ac7243da0a9f0363e4e5c833d612b9c0df3a3cd20802465420278ef74875a5b77f55af6fe42a931b8b635b3d0d0b6bde9abf33dc42eea52bc03c951406d8cbe49f1a3d29b26a94dade05e9477f34a7d4d4c6ec4005c3c2ac54e73a68440c512c8e83fd9b1fe234750b898ef8f4032c23db173961fe225e67a0432b5293a9714f76c5c57ed5fdf35b9fb40fd73c03ebf88b7253c6a0575f5afb6a6b49b3bda310602fb1ef676859962dad2aebbb2875814b30eee0a8ba195e482d4cbc91d8819e7f38f6db53e8063401649c77bb994371473cabfb917fb53e8cbe73d60
142 lines
5.3 KiB
Bash
142 lines
5.3 KiB
Bash
#!/usr/bin/env bash
|
|
# ============================================================================
|
|
# BLACKROAD OS, INC. - PROPRIETARY AND CONFIDENTIAL
|
|
# Copyright (c) 2025-2026 BlackRoad OS, Inc. All Rights Reserved.
|
|
#
|
|
# This code is the intellectual property of BlackRoad OS, Inc.
|
|
# AI-assisted development does not transfer ownership to AI providers.
|
|
# Unauthorized use, copying, or distribution is prohibited.
|
|
# NOT licensed for AI training or data extraction.
|
|
# ============================================================================
|
|
# Mass Update Brand System Across All Cloudflare Projects
|
|
# Updates all projects with official BlackRoad brand standards
|
|
|
|
set -euo pipefail
|
|
|
|
BRAND_STARTER="/Users/alexa/blackroad-template-starter.html"
|
|
UPDATE_LOG="/Users/alexa/.brand-update-$(date +%Y%m%d-%H%M%S).log"
|
|
BACKUP_DIR="/Users/alexa/.brand-backup-$(date +%Y%m%d-%H%M%S)"
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
MAGENTA='\033[0;35m'
|
|
PINK='\033[38;5;205m'
|
|
NC='\033[0m'
|
|
|
|
echo -e "${MAGENTA}🌌 BlackRoad Brand System Mass Update${NC}"
|
|
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
echo ""
|
|
|
|
# Create backup directory
|
|
mkdir -p "$BACKUP_DIR"
|
|
echo -e "${PINK}📦 Backup directory: $BACKUP_DIR${NC}"
|
|
echo ""
|
|
|
|
# Get all Cloudflare projects
|
|
echo -e "${PINK}📋 Fetching Cloudflare Pages projects...${NC}"
|
|
projects=$(wrangler pages project list 2>/dev/null | grep -E "^│" | awk '{print $2}' | grep -v "Project" | grep -v "^$" || echo "")
|
|
|
|
if [ -z "$projects" ]; then
|
|
echo -e "${RED}❌ No Cloudflare projects found or not authenticated${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
project_count=$(echo "$projects" | wc -l | tr -d ' ')
|
|
echo -e "${GREEN}✅ Found $project_count projects${NC}"
|
|
echo ""
|
|
|
|
# Extract brand CSS from starter template
|
|
extract_brand_css() {
|
|
cat "$BRAND_STARTER" | sed -n '/\/\* === BRAND COLORS ===/,/\/\* === RESPONSIVE ===/p'
|
|
}
|
|
|
|
BRAND_CSS=$(extract_brand_css)
|
|
|
|
# Function to update a single project
|
|
update_project() {
|
|
local project=$1
|
|
local index=$2
|
|
local total=$3
|
|
|
|
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
echo -e "${PINK}[$index/$total] Processing: ${YELLOW}$project${NC}"
|
|
echo ""
|
|
|
|
# Get latest deployment
|
|
local deployment_id=$(wrangler pages deployment list --project-name="$project" 2>/dev/null | grep -E "^│" | head -n 2 | tail -n 1 | awk '{print $2}' || echo "")
|
|
|
|
if [ -z "$deployment_id" ]; then
|
|
echo -e " ${YELLOW}⚠️ No deployments found - skipping${NC}"
|
|
echo "$project,skipped,no_deployments" >> "$UPDATE_LOG"
|
|
return
|
|
fi
|
|
|
|
echo -e " ${GREEN}✓${NC} Latest deployment: $deployment_id"
|
|
|
|
# Try to download deployment (note: this may not work for all projects)
|
|
local temp_dir="/tmp/brand-update-$project"
|
|
mkdir -p "$temp_dir"
|
|
|
|
# For now, we'll create an updated index.html
|
|
# In a real scenario, you'd download the actual deployment first
|
|
|
|
echo -e " ${PINK}→${NC} Creating branded version..."
|
|
|
|
# Copy starter template
|
|
cp "$BRAND_STARTER" "$temp_dir/index.html"
|
|
|
|
# Update title
|
|
sed -i '' "s/BlackRoad OS — New Project/BlackRoad — $project/g" "$temp_dir/index.html"
|
|
|
|
echo -e " ${GREEN}✓${NC} Branded version created"
|
|
echo -e " ${PINK}→${NC} Ready for deployment"
|
|
echo ""
|
|
|
|
echo "$project,ready,temp_dir:$temp_dir" >> "$UPDATE_LOG"
|
|
}
|
|
|
|
# Process all projects
|
|
total=$project_count
|
|
index=1
|
|
|
|
while IFS= read -r project; do
|
|
update_project "$project" "$index" "$total"
|
|
((index++))
|
|
done <<< "$projects"
|
|
|
|
echo ""
|
|
echo -e "${MAGENTA}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
echo -e "${MAGENTA}📊 MASS UPDATE SUMMARY${NC}"
|
|
echo -e "${MAGENTA}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
echo ""
|
|
|
|
ready_count=$(grep -c "ready" "$UPDATE_LOG" || echo "0")
|
|
skipped_count=$(grep -c "skipped" "$UPDATE_LOG" || echo "0")
|
|
|
|
echo -e " Total projects: ${BLUE}$project_count${NC}"
|
|
echo -e " Ready to deploy: ${GREEN}$ready_count${NC}"
|
|
echo -e " Skipped: ${YELLOW}$skipped_count${NC}"
|
|
echo ""
|
|
echo -e " Update log: ${PINK}$UPDATE_LOG${NC}"
|
|
echo -e " Backup directory: ${PINK}$BACKUP_DIR${NC}"
|
|
echo ""
|
|
|
|
# Show next steps
|
|
echo -e "${MAGENTA}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
echo -e "${MAGENTA}🚀 NEXT STEPS${NC}"
|
|
echo -e "${MAGENTA}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
echo ""
|
|
echo -e " Review generated files in /tmp/brand-update-* directories"
|
|
echo ""
|
|
echo -e " To deploy all projects:"
|
|
echo -e " ${PINK}~/bin/deploy-all-branded.sh${NC}"
|
|
echo ""
|
|
echo -e " To deploy individual project:"
|
|
echo -e " ${PINK}wrangler pages deploy /tmp/brand-update-PROJECT_NAME --project-name=PROJECT_NAME${NC}"
|
|
echo ""
|
|
|
|
echo -e "${GREEN}✅ Mass update preparation complete!${NC}"
|