mirror of
https://github.com/elder-plinius/LEAKHUB.git
synced 2026-02-12 16:52:53 +00:00
195 lines
4.4 KiB
Bash
Executable File
195 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# LeakHub Deployment Script
|
|
# This script automates the deployment process for different platforms
|
|
|
|
set -e # Exit on any error
|
|
|
|
echo "🚀 LeakHub Deployment Script"
|
|
echo "=============================="
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Function to print colored output
|
|
print_status() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
print_success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
}
|
|
|
|
print_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
print_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
# Check if Node.js is installed
|
|
check_node() {
|
|
if ! command -v node &> /dev/null; then
|
|
print_error "Node.js is not installed. Please install Node.js 18+ first."
|
|
exit 1
|
|
fi
|
|
|
|
NODE_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
|
|
if [ "$NODE_VERSION" -lt 18 ]; then
|
|
print_error "Node.js version 18+ is required. Current version: $(node --version)"
|
|
exit 1
|
|
fi
|
|
|
|
print_success "Node.js $(node --version) detected"
|
|
}
|
|
|
|
# Install dependencies
|
|
install_deps() {
|
|
print_status "Installing dependencies..."
|
|
npm ci
|
|
print_success "Dependencies installed"
|
|
}
|
|
|
|
# Build the project
|
|
build_project() {
|
|
print_status "Building project for production..."
|
|
npm run build
|
|
print_success "Project built successfully"
|
|
}
|
|
|
|
# Deploy to GitHub Pages
|
|
deploy_github_pages() {
|
|
print_status "Deploying to GitHub Pages..."
|
|
|
|
# Check if git is initialized
|
|
if [ ! -d ".git" ]; then
|
|
print_error "Git repository not found. Please initialize git first."
|
|
exit 1
|
|
fi
|
|
|
|
# Check if remote origin exists
|
|
if ! git remote get-url origin &> /dev/null; then
|
|
print_error "Git remote 'origin' not found. Please add your GitHub repository as origin."
|
|
exit 1
|
|
fi
|
|
|
|
# Add all changes
|
|
git add .
|
|
|
|
# Commit changes
|
|
git commit -m "Deploy LeakHub - $(date)"
|
|
|
|
# Push to main branch
|
|
git push origin main
|
|
|
|
print_success "Deployed to GitHub Pages! Check your repository settings to enable GitHub Pages."
|
|
}
|
|
|
|
# Deploy to Vercel
|
|
deploy_vercel() {
|
|
print_status "Deploying to Vercel..."
|
|
|
|
# Check if Vercel CLI is installed
|
|
if ! command -v vercel &> /dev/null; then
|
|
print_warning "Vercel CLI not found. Installing..."
|
|
npm install -g vercel
|
|
fi
|
|
|
|
# Deploy
|
|
vercel --prod
|
|
|
|
print_success "Deployed to Vercel!"
|
|
}
|
|
|
|
# Deploy to Netlify
|
|
deploy_netlify() {
|
|
print_status "Deploying to Netlify..."
|
|
|
|
# Check if Netlify CLI is installed
|
|
if ! command -v netlify &> /dev/null; then
|
|
print_warning "Netlify CLI not found. Installing..."
|
|
npm install -g netlify-cli
|
|
fi
|
|
|
|
# Deploy
|
|
netlify deploy --prod --dir=dist
|
|
|
|
print_success "Deployed to Netlify!"
|
|
}
|
|
|
|
# Show usage
|
|
show_usage() {
|
|
echo "Usage: $0 [OPTION]"
|
|
echo ""
|
|
echo "Options:"
|
|
echo " github Deploy to GitHub Pages"
|
|
echo " vercel Deploy to Vercel"
|
|
echo " netlify Deploy to Netlify"
|
|
echo " build Build project only"
|
|
echo " install Install dependencies only"
|
|
echo " all Deploy to all platforms"
|
|
echo " help Show this help message"
|
|
echo ""
|
|
echo "Examples:"
|
|
echo " $0 github # Deploy to GitHub Pages"
|
|
echo " $0 vercel # Deploy to Vercel"
|
|
echo " $0 all # Deploy to all platforms"
|
|
}
|
|
|
|
# Main deployment function
|
|
main() {
|
|
case "$1" in
|
|
"github")
|
|
check_node
|
|
install_deps
|
|
build_project
|
|
deploy_github_pages
|
|
;;
|
|
"vercel")
|
|
check_node
|
|
install_deps
|
|
build_project
|
|
deploy_vercel
|
|
;;
|
|
"netlify")
|
|
check_node
|
|
install_deps
|
|
build_project
|
|
deploy_netlify
|
|
;;
|
|
"build")
|
|
check_node
|
|
install_deps
|
|
build_project
|
|
;;
|
|
"install")
|
|
check_node
|
|
install_deps
|
|
;;
|
|
"all")
|
|
check_node
|
|
install_deps
|
|
build_project
|
|
deploy_github_pages
|
|
deploy_vercel
|
|
deploy_netlify
|
|
;;
|
|
"help"|"-h"|"--help")
|
|
show_usage
|
|
;;
|
|
*)
|
|
print_error "Unknown option: $1"
|
|
show_usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Run main function with all arguments
|
|
main "$@"
|