49 lines
2.4 KiB
PowerShell
49 lines
2.4 KiB
PowerShell
<#
|
|
install.ps1 - first-time bootstrap for the Eve watchers (Goliath + Adam's PC).
|
|
|
|
One-liner (PowerShell):
|
|
irm https://git.armoredarmadillo.com/brockdarnold/eve-watcher/raw/branch/main/install.ps1 | iex
|
|
|
|
Paste it ONCE. It puts the watcher repo in %USERPROFILE%\eve-watcher, forces the
|
|
working tree to match the latest code, and runs update.py - which installs deps +
|
|
Tesseract, starts the watchers, auto-detects the ore-hold readout (no manual snip),
|
|
and registers logon + daily auto-update. You never have to install or update again.
|
|
|
|
Safe to re-run anytime: it force-syncs to the latest code (reset --hard) and never
|
|
touches your gitignored config.ini.
|
|
#>
|
|
$ErrorActionPreference = "Stop"
|
|
$repo = "https://git.armoredarmadillo.com/brockdarnold/eve-watcher.git"
|
|
$dir = Join-Path $env:USERPROFILE "eve-watcher"
|
|
|
|
function Need($cmd, $hint) {
|
|
if (-not (Get-Command $cmd -ErrorAction SilentlyContinue)) { throw "$cmd not found. $hint" }
|
|
}
|
|
function GitMust($desc) { if ($LASTEXITCODE -ne 0) { throw "git $desc failed (exit $LASTEXITCODE)" } }
|
|
|
|
Need git "Install it: winget install --id Git.Git -e (then re-run)"
|
|
Need python "Install Python 3 from https://www.python.org (check 'Add to PATH'), then re-run."
|
|
|
|
# Make $dir a git clone of $repo whose working tree is FORCED to the latest commit.
|
|
# init+fetch+reset is bulletproof: it can't fail on a non-empty folder (old installer)
|
|
# or on Windows CRLF/dirty-tree issues the way `git clone` / `git pull` can.
|
|
if (-not (Test-Path (Join-Path $dir ".git"))) {
|
|
if (Test-Path $dir) { Write-Host "Converting existing folder to a git clone (keeping config.ini)..." }
|
|
else { Write-Host "Creating $dir ..."; New-Item -ItemType Directory -Path $dir -Force | Out-Null }
|
|
git -C $dir init -q; GitMust "init"
|
|
}
|
|
if (-not (git -C $dir remote)) { git -C $dir remote add origin $repo }
|
|
else { git -C $dir remote set-url origin $repo }
|
|
Write-Host "Syncing to latest code..."
|
|
git -C $dir fetch -q origin; GitMust "fetch"
|
|
git -C $dir checkout -q -B main origin/main; GitMust "checkout"
|
|
git -C $dir reset --hard -q origin/main; GitMust "reset" # config.ini is gitignored -> untouched
|
|
|
|
if (-not (Test-Path (Join-Path $dir "update.py"))) { throw "update.py missing after sync - aborting." }
|
|
|
|
Set-Location $dir
|
|
python update.py
|
|
|
|
Write-Host ""
|
|
Write-Host "Installed at $dir. Auto-start + daily auto-update are configured - nothing else to do."
|
|
Write-Host "Make sure your in-game Ore Hold is open so it can auto-calibrate the live % reader."
|