1
0
mirror of https://github.com/tw93/Mole.git synced 2026-03-22 19:40:07 +00:00
Files
Mole/quick-install.ps1

121 lines
3.3 KiB
PowerShell

#!/usr/bin/env pwsh
# Mole Quick Installer for Windows
# One-liner install: iwr -useb https://raw.githubusercontent.com/tw93/Mole/windows/quick-install.ps1 | iex
#Requires -Version 5.1
param(
[string]$InstallDir = "$env:LOCALAPPDATA\Mole"
)
$ErrorActionPreference = "Stop"
Set-StrictMode -Version Latest
# Colors
$ESC = [char]27
$Colors = @{
Green = "$ESC[32m"
Yellow = "$ESC[33m"
Cyan = "$ESC[36m"
Red = "$ESC[31m"
NC = "$ESC[0m"
}
function Write-Step {
param([string]$Message)
Write-Host " $($Colors.Cyan)$($Colors.NC) $Message"
}
function Write-Success {
param([string]$Message)
Write-Host " $($Colors.Green)$($Colors.NC) $Message"
}
function Write-ErrorMsg {
param([string]$Message)
Write-Host " $($Colors.Red)$($Colors.NC) $Message"
}
function Test-SourceInstall {
param([string]$Path)
return (Test-Path (Join-Path $Path ".git"))
}
# Main installation
try {
Write-Host ""
Write-Host " $($Colors.Cyan)Mole Quick Installer$($Colors.NC)"
Write-Host " $($Colors.Yellow)Installing experimental Windows source channel...$($Colors.NC)"
Write-Host ""
# Check prerequisites
Write-Step "Checking prerequisites..."
if (-not (Get-Command git -ErrorAction SilentlyContinue)) {
Write-ErrorMsg "Git is not installed. Please install Git first:"
Write-Host " https://git-scm.com/download/win"
exit 1
}
Write-Success "Git found"
if (Test-Path $InstallDir) {
if (Test-SourceInstall -Path $InstallDir) {
Write-Step "Existing source install found, refreshing..."
Push-Location $InstallDir
try {
git fetch --quiet origin windows 2>&1 | Out-Null
if ($LASTEXITCODE -ne 0) {
Write-ErrorMsg "Failed to fetch latest source"
exit 1
}
git pull --ff-only origin windows 2>&1 | Out-Null
if ($LASTEXITCODE -ne 0) {
Write-ErrorMsg "Failed to fast-forward source install"
exit 1
}
}
finally {
Pop-Location
}
}
else {
Write-ErrorMsg "Install directory already exists and is not a source install: $InstallDir"
Write-Host " Remove it first or reinstall with the latest quick installer."
exit 1
}
}
else {
Write-Step "Cloning Mole source..."
git clone --quiet --depth 1 --branch windows https://github.com/tw93/Mole.git $InstallDir 2>&1 | Out-Null
if (-not (Test-Path (Join-Path $InstallDir "install.ps1"))) {
Write-ErrorMsg "Failed to clone source installer"
exit 1
}
Write-Success "Cloned source to $InstallDir"
}
# Run installer
Write-Step "Running installer..."
Write-Host ""
& (Join-Path $InstallDir "install.ps1") -InstallDir $InstallDir -AddToPath
Write-Host ""
Write-Success "Installation complete!"
Write-Host ""
Write-Host " Run ${Colors.Green}mole$($Colors.NC) to get started"
Write-Host " Run ${Colors.Green}mo update$($Colors.NC) to pull the latest windows source later"
Write-Host ""
} catch {
Write-ErrorMsg "Installation failed: $_"
exit 1
}