-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathdeploy.ps1
More file actions
140 lines (126 loc) · 5.29 KB
/
deploy.ps1
File metadata and controls
140 lines (126 loc) · 5.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# Keyper Deployment Script for Cloudflare Pages
# Made with ❤️ by Pink Pixel
# PowerShell script for Windows deployment
param(
[string]$Environment = "production",
[switch]$Preview,
[switch]$Help
)
# Colors for output
$ColorReset = "`e[0m"
$ColorRed = "`e[31m"
$ColorGreen = "`e[32m"
$ColorYellow = "`e[33m"
$ColorBlue = "`e[34m"
$ColorMagenta = "`e[35m"
$ColorCyan = "`e[36m"
function Write-Banner {
Write-Host ""
Write-Host "${ColorCyan}╔══════════════════════════════════════════════════════════════╗${ColorReset}"
Write-Host "${ColorCyan}║ ║${ColorReset}"
Write-Host "${ColorCyan}║ ${ColorMagenta}🔐 KEYPER DEPLOYMENT${ColorCyan} ║${ColorReset}"
Write-Host "${ColorCyan}║ ${ColorYellow}Secure Credential Management${ColorCyan} ║${ColorReset}"
Write-Host "${ColorCyan}║ ║${ColorReset}"
Write-Host "${ColorCyan}║ ${ColorGreen}Made with ❤️ by Pink Pixel${ColorCyan} ║${ColorReset}"
Write-Host "${ColorCyan}║ ${ColorBlue}Dream it, Pixel it ✨${ColorCyan} ║${ColorReset}"
Write-Host "${ColorCyan}║ ║${ColorReset}"
Write-Host "${ColorCyan}╚══════════════════════════════════════════════════════════════╝${ColorReset}"
Write-Host ""
}
function Show-Help {
Write-Host "${ColorYellow}Keyper Deployment Script${ColorReset}"
Write-Host ""
Write-Host "${ColorGreen}Usage:${ColorReset}"
Write-Host " .\deploy.ps1 [options]"
Write-Host ""
Write-Host "${ColorGreen}Options:${ColorReset}"
Write-Host " -Environment <env> Target environment (production/preview) [default: production]"
Write-Host " -Preview Deploy to preview environment"
Write-Host " -Help Show this help message"
Write-Host ""
Write-Host "${ColorGreen}Examples:${ColorReset}"
Write-Host " .\deploy.ps1 # Deploy to production"
Write-Host " .\deploy.ps1 -Preview # Deploy to preview"
Write-Host " .\deploy.ps1 -Environment preview"
Write-Host ""
}
if ($Help) {
Write-Banner
Show-Help
exit 0
}
if ($Preview) {
$Environment = "preview"
}
Write-Banner
Write-Host "${ColorBlue}🚀 Starting Keyper deployment...${ColorReset}"
Write-Host "${ColorYellow}Environment: ${Environment}${ColorReset}"
Write-Host ""
# Check if wrangler is installed
Write-Host "${ColorBlue}📦 Checking Wrangler installation...${ColorReset}"
try {
$wranglerVersion = wrangler --version 2>$null
if ($LASTEXITCODE -eq 0) {
Write-Host "${ColorGreen}✅ Wrangler is installed: $wranglerVersion${ColorReset}"
} else {
throw "Wrangler not found"
}
} catch {
Write-Host "${ColorRed}❌ Wrangler is not installed${ColorReset}"
Write-Host "${ColorYellow}Installing Wrangler globally...${ColorReset}"
npm install -g wrangler
if ($LASTEXITCODE -ne 0) {
Write-Host "${ColorRed}❌ Failed to install Wrangler${ColorReset}"
exit 1
}
}
# Check if user is logged in
Write-Host "${ColorBlue}🔐 Checking Cloudflare authentication...${ColorReset}"
$authCheck = wrangler whoami 2>$null
if ($LASTEXITCODE -ne 0) {
Write-Host "${ColorYellow}⚠️ Not logged in to Cloudflare${ColorReset}"
Write-Host "${ColorBlue}🔑 Please log in to Cloudflare...${ColorReset}"
wrangler login
if ($LASTEXITCODE -ne 0) {
Write-Host "${ColorRed}❌ Failed to authenticate with Cloudflare${ColorReset}"
exit 1
}
} else {
Write-Host "${ColorGreen}✅ Authenticated with Cloudflare${ColorReset}"
}
# Install dependencies
Write-Host "${ColorBlue}📦 Installing dependencies...${ColorReset}"
npm install
if ($LASTEXITCODE -ne 0) {
Write-Host "${ColorRed}❌ Failed to install dependencies${ColorReset}"
exit 1
}
# Build the project
Write-Host "${ColorBlue}🔨 Building Keyper...${ColorReset}"
npm run build
if ($LASTEXITCODE -ne 0) {
Write-Host "${ColorRed}❌ Build failed${ColorReset}"
exit 1
}
# Deploy to Cloudflare Pages
Write-Host "${ColorBlue}🚀 Deploying to Cloudflare Pages...${ColorReset}"
if ($Environment -eq "preview") {
wrangler pages deploy dist --project-name keyper-preview
} else {
wrangler pages deploy dist --project-name keyper
}
if ($LASTEXITCODE -eq 0) {
Write-Host ""
Write-Host "${ColorGreen}🎉 Deployment successful!${ColorReset}"
Write-Host "${ColorCyan}✨ Keyper is now live on Cloudflare Pages!${ColorReset}"
Write-Host ""
Write-Host "${ColorYellow}Next steps:${ColorReset}"
Write-Host "1. Configure environment variables in Cloudflare dashboard"
Write-Host "2. Set up custom domain (optional)"
Write-Host "3. Configure Supabase settings"
Write-Host ""
Write-Host "${ColorMagenta}Made with ❤️ by Pink Pixel${ColorReset}"
} else {
Write-Host "${ColorRed}❌ Deployment failed${ColorReset}"
exit 1
}