build-scripts/elliebot/ellie-menu.ps1

191 lines
6.8 KiB
PowerShell
Raw Normal View History

2024-08-19 19:43:36 -07:00
param (
[switch]$testing,
[switch]$release,
[switch]$output_test,
[switch]$build,
[switch]$help
)
$script_version = "1.0.0-public"
Write-Output ""
Write-Host "███████╗██╗ ██╗ ██╗███████╗██████╗ ██████╗ ████████╗" -ForegroundColor DarkCyan
Write-Host "██╔════╝██║ ██║ ██║██╔════╝██╔══██╗██╔═══██╗╚══██╔══╝" -ForegroundColor DarkCyan
Write-Host "█████╗ ██║ ██║ ██║█████╗ ██████╔╝██║ ██║ ██║ " -ForegroundColor DarkCyan
Write-Host "██╔══╝ ██║ ██║ ██║██╔══╝ ██╔══██╗██║ ██║ ██║ " -ForegroundColor DarkCyan
Write-Host "███████╗███████╗███████╗██║███████╗██████╔╝╚██████╔╝ ██║ " -ForegroundColor DarkCyan
Write-Host "╚══════╝╚══════╝╚══════╝╚═╝╚══════╝╚═════╝ ╚═════╝ ╚═╝ " -ForegroundColor DarkCyan
Write-Output ""
# If you remove this copyright header I will bonk
Write-Output "Copyright © 2024 Toastie_t0ast & EllieBotDevs"
Write-Output ""
Write-Host "Current script version is v$script_version" -ForegroundColor DarkCyan
Write-Output ""
if ($release) {
if ($args.Length -eq 0) {
Write-Host "Please provide a version string." -ForegroundColor Red
Write-Output ""
Write-Host "Script failed." -ForegroundColor Red
Write-Host "Please read the Error above for more information" -ForegroundColor Gray
Write-Output ""
}
else {
$version = $args[0]
Write-Output ""
Write-Host "Publishing EllieBot v$version" -Foregroundcolor Green
Write-Output ""
Write-Output ""
dotnet publish -c Release -r linux-x64 --self-contained -o elliebot-linux-x64 src/EllieBot/EllieBot.csproj
Write-Output ""
dotnet publish -c Release -r linux-arm64 --self-contained -o elliebot-linux-arm64 src/EllieBot/EllieBot.csproj
Write-Output ""
dotnet publish -c Release -r win-x64 --self-contained -o elliebot-windows-x64 src/EllieBot/EllieBot.csproj
Write-Output ""
dotnet publish -c Release -r win-arm64 --self-contained -o elliebot-windows-arm64 src/EllieBot/EllieBot.csproj
Write-Output ""
dotnet publish -c Release -r osx-x64 --self-contained -o elliebot-osx-x64 src/EllieBot/EllieBot.csproj
Write-Output ""
dotnet publish -c Release -r osx-arm64 --self-contained -o elliebot-osx-arm64 src/EllieBot/EllieBot.csproj
Write-Output ""
Write-Output "Preparing the Windows installer build."
Write-Output ""
dotnet clean
dotnet restore -f --no-cache -v n
dotnet publish -c Release --self-contained --runtime win-x64 /p:Version="$version" src/EllieBot
Write-Output ""
Write-Output "Setting environemt variable"
Write-Output ""
$env:ELLIEBOT_INSTALL_VERSION = $version
Write-Output ""
Write-Output "Compiling installer file"
Write-Output ""
iscc.exe /O+ .\exe_builder.iss
Write-Output ""
Write-Output "Compressing windows build files"
Write-Output ""
Compress-Archive -Path elliebot-windows-x64/ "$version-windows-x64-build.zip"
Compress-Archive -Path elliebot-windows-arm64/ "$version-windows-arm64-build.zip"
Write-Output ""
Write-Output "Moving the installer file to the directory this script is in"
Write-Output ""
Move-Item ellie-installers/$version/ellie-setup-$version.exe ellie-setup-$version.exe
Write-Output ""
Write-Output "Script finished successfully"
Write-Output ""
Write-Output "If you wish to build the linux or MacOS builds please run"
Write-Output "package.sh in wsl if you are on Windows or in bash (or whatever terminal you use) on linux"
2024-08-19 19:43:36 -07:00
Write-Output ""
Write-Output "If you have any suggestions on how to make this script better please make a suggestion"
Write-Output "in our discord @ https://discord.gg/etQdZxSyEH and in the 📚・suggestions channel"
Write-Output ""
}
}
if ($testing) {
if ($args.Length -eq 0) {
Write-Host "Please provide a version string." -ForegroundColor Red
Write-Output ""
Write-Host "Script failed." -ForegroundColor Red
Write-Host "Please read the Error above for more information" -ForegroundColor Gray
Write-Output ""
}
else {
$version = $args[0]
Write-Output ""
Write-Output "Running tests for EllieBot v$version"
Write-Output ""
dotnet test
Write-Output ""
Write-Output "Script finished successfully"
Write-Output ""
Write-Output "If you have any suggestions on how to make this script better please make a suggestion"
Write-Output "in our discord @ https://discord.gg/etQdZxSyEH and in the 📚・suggestions channel"
Write-Output ""
}
}
if ($output_test) {
Write-Output ""
Write-Output "Compiling a test build of EllieBot"
Write-Output ""
dotnet publish -c Release -o output/ src/EllieBot/
Write-Output ""
Write-Output "copying creds_example.yml to creds.yml"
Write-Output ""
Set-Location output
Copy-Item creds_example.yml creds.yml
Set-Location ..
Write-Output ""
Write-Output "Script finished successfully"
Write-Output ""
Write-Output "If you have any suggestions on how to make this script better please make a suggestion"
Write-Output "in our discord @ https://discord.gg/etQdZxSyEH and in the 📚・suggestions channel"
Write-Output ""
}
if ($build) {
Write-Output ""
Write-Output "Restoring EllieBot"
Write-Output ""
dotnet restore
Write-Output ""
Write-Output "Building EllieBot"
Write-Output ""
dotnet build --no-restore -c Release
Write-Output ""
Write-Output "Script finished successfully"
Write-Output ""
Write-Output "If you have any suggestions on how to make this script better please make a suggestion"
Write-Output "in our discord @ https://discord.gg/etQdZxSyEH and in the 📚・suggestions channel"
Write-Output ""
}
if ($help) {
Write-Output ""
Write-Output "Here is a list of switches for this script."
Write-Output ""
Write-Host "Release parameter" -ForegroundColor Green
Write-Output "-release"
Write-Output ""
Write-Host "Testing parameter" -ForegroundColor Blue
Write-Output "-testing"
Write-Output ""
Write-Host "Output test parameter" -ForegroundColor Yellow
Write-Output "-output_test"
Write-Output ""
Write-Host "Build parameter" -ForegroundColor DarkCyan
Write-Output "-build"
Write-Output ""
Write-Host "Here is an example" -ForegroundColor Gray
Write-Host "build.ps1 -build" -ForegroundColor Gray
Write-Output ""
}