feat: initial commit - ServerManager Pro v2.0.0
This commit is contained in:
Executable
+198
@@ -0,0 +1,198 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ServerManager Pro - Production Build for Linux & Windows
|
||||
# Version: 2.0.0
|
||||
|
||||
set -e
|
||||
|
||||
# Colors
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
APP_NAME="ServerManager Pro"
|
||||
VERSION=$(node -p "require('./package.json').version")
|
||||
|
||||
echo -e "${BLUE}=== $APP_NAME - Production Build ===${NC}"
|
||||
echo -e "${GREEN}Version: $VERSION${NC}"
|
||||
echo "======================================"
|
||||
|
||||
print_status() { echo -e "${BLUE}[$(date +%H:%M:%S)]${NC} $1"; }
|
||||
print_success() { echo -e "${GREEN}✅ $1${NC}"; }
|
||||
print_warning() { echo -e "${YELLOW}⚠️ $1${NC}"; }
|
||||
print_error() { echo -e "${RED}❌ $1${NC}"; }
|
||||
|
||||
# Check environment
|
||||
check_environment() {
|
||||
print_status "Checking environment..."
|
||||
|
||||
if [ ! -f "package.json" ]; then
|
||||
print_error "package.json not found. Run from project root."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v node >/dev/null; then
|
||||
print_error "Node.js not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_success "Environment check passed"
|
||||
}
|
||||
|
||||
# Clean builds
|
||||
clean_builds() {
|
||||
print_status "Cleaning previous builds..."
|
||||
rm -rf build dist
|
||||
print_success "Clean completed"
|
||||
}
|
||||
|
||||
# Install dependencies
|
||||
install_deps() {
|
||||
print_status "Installing dependencies..."
|
||||
|
||||
if [ ! -d "node_modules" ]; then
|
||||
npm install
|
||||
else
|
||||
npm install
|
||||
fi
|
||||
|
||||
print_success "Dependencies installed"
|
||||
}
|
||||
|
||||
# Build React app
|
||||
build_react() {
|
||||
print_status "Building React application..."
|
||||
npm run build
|
||||
|
||||
if [ ! -d "build" ]; then
|
||||
print_error "React build failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_success "React app built"
|
||||
}
|
||||
|
||||
# Create icon if missing
|
||||
create_icon() {
|
||||
if [ ! -f "public/icon.png" ]; then
|
||||
print_status "Creating application icon..."
|
||||
|
||||
if command -v convert >/dev/null; then
|
||||
convert -size 512x512 gradient:blue-darkblue -pointsize 100 -fill white -gravity center -annotate +0+0 "SM" public/icon.png
|
||||
print_success "Icon created"
|
||||
else
|
||||
print_warning "ImageMagick not available - using default icon"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Build Linux package
|
||||
build_linux() {
|
||||
print_status "Building Linux package (.deb)..."
|
||||
|
||||
npx electron-builder --linux deb
|
||||
|
||||
if ls dist/*.deb >/dev/null 2>&1; then
|
||||
DEB_FILE=$(ls dist/*.deb | head -1)
|
||||
print_success "Linux package: $(basename $DEB_FILE) ($(du -h $DEB_FILE | cut -f1))"
|
||||
return 0
|
||||
else
|
||||
print_error "Linux package build failed"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Build Windows package
|
||||
build_windows() {
|
||||
print_status "Building Windows package (.exe)..."
|
||||
|
||||
npx electron-builder --win
|
||||
|
||||
if ls dist/*.exe >/dev/null 2>&1; then
|
||||
EXE_FILE=$(ls dist/*.exe | head -1)
|
||||
print_success "Windows package: $(basename $EXE_FILE) ($(du -h $EXE_FILE | cut -f1))"
|
||||
return 0
|
||||
else
|
||||
print_error "Windows package build failed"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Generate report
|
||||
generate_report() {
|
||||
echo ""
|
||||
echo -e "${GREEN}=== BUILD COMPLETE ===${NC}"
|
||||
echo "Version: $VERSION"
|
||||
echo "Build date: $(date)"
|
||||
echo ""
|
||||
|
||||
echo -e "${BLUE}Generated Packages:${NC}"
|
||||
|
||||
# Linux packages
|
||||
if ls dist/*.deb >/dev/null 2>&1; then
|
||||
echo -e " 🐧 Linux (.deb):"
|
||||
ls dist/*.deb | while read file; do
|
||||
echo " 📦 $(basename $file) ($(du -h "$file" | cut -f1))"
|
||||
done
|
||||
else
|
||||
echo -e " 🐧 Linux: ❌ Not built"
|
||||
fi
|
||||
|
||||
# Windows packages
|
||||
if ls dist/*.exe >/dev/null 2>&1; then
|
||||
echo -e " 🪟 Windows (.exe):"
|
||||
ls dist/*.exe | while read file; do
|
||||
echo " 📦 $(basename $file) ($(du -h "$file" | cut -f1))"
|
||||
done
|
||||
else
|
||||
echo -e " 🪟 Windows: ❌ Not built"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}Installation Instructions:${NC}"
|
||||
echo " Linux: sudo dpkg -i dist/*.deb"
|
||||
echo " Windows: Run the .exe file as Administrator"
|
||||
echo ""
|
||||
echo -e "${YELLOW}Next Steps:${NC}"
|
||||
echo " • Test the application on both platforms"
|
||||
echo " • Use IT"
|
||||
}
|
||||
|
||||
# Main build process
|
||||
main() {
|
||||
local platform=${1:-all}
|
||||
|
||||
case $platform in
|
||||
"linux")
|
||||
check_environment
|
||||
clean_builds
|
||||
install_deps
|
||||
create_icon
|
||||
build_react
|
||||
build_linux
|
||||
;;
|
||||
"windows")
|
||||
check_environment
|
||||
clean_builds
|
||||
install_deps
|
||||
create_icon
|
||||
build_react
|
||||
build_windows
|
||||
;;
|
||||
"all"|*)
|
||||
check_environment
|
||||
clean_builds
|
||||
install_deps
|
||||
create_icon
|
||||
build_react
|
||||
build_linux
|
||||
build_windows
|
||||
;;
|
||||
esac
|
||||
|
||||
generate_report
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user