1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2024-11-27 01:56:14 +01:00

Working on logic

This commit is contained in:
peteGSX 2023-04-05 15:54:48 +10:00
parent b18df1405c
commit de6e91a778

View File

@ -1,4 +1,4 @@
# <#
# © 2023 Peter Cole # © 2023 Peter Cole
# #
# This file is part of EX-CommandStation # This file is part of EX-CommandStation
@ -15,28 +15,31 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with CommandStation. If not, see <https://www.gnu.org/licenses/>. # along with CommandStation. If not, see <https://www.gnu.org/licenses/>.
# #>
# 32/64 bit Win installer <############################################
# https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Windows_32bit.zip For script errors set ExecutionPolicy:
# https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Windows_64bit.zip Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass
# ############################################>
# For script errors set ExecutionPolicy:
# Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass
<############################################
Optional command line parameters:
$buildDirectory - specify an existing directory rather than generating a new unique one
$version - specify an exact version to download
############################################>
Param( Param(
[Parameter()] [Parameter()]
[String]$buildDirectory [String]$buildDirectory,
[Parameter()]
[String]$version
) )
if (!$PSBoundParameters.ContainsKey('buildDirectory')) { <############################################
# Use the current date/time stamp to create a unique directory if one is not specified. Define global parameters here such as known URLs etc.
$buildDate = Get-Date -Format 'yyyyMMdd-HHmmss' ############################################>
$buildDirectory = $env:TEMP + "\" + $buildDate $installerVersion = "v0.0.1"
}
$gitHubAPITags = "https://api.github.com/repos/DCC-EX/CommandStation-EX/git/refs/tags" $gitHubAPITags = "https://api.github.com/repos/DCC-EX/CommandStation-EX/git/refs/tags"
$gitHubURLPrefix = "https://github.com/DCC-EX/CommandStation-EX/archive/"
if ((Get-WmiObject win32_operatingsystem | Select-Object osarchitecture).osarchitecture -eq "64-bit") { if ((Get-WmiObject win32_operatingsystem | Select-Object osarchitecture).osarchitecture -eq "64-bit") {
$arduinoCLIURL = "https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Windows_64bit.zip" $arduinoCLIURL = "https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Windows_64bit.zip"
$arduinoCLIZip = $env:TEMP + "\" + "arduino-cli_latest_Windows_64bit.zip" $arduinoCLIZip = $env:TEMP + "\" + "arduino-cli_latest_Windows_64bit.zip"
@ -44,25 +47,87 @@ if ((Get-WmiObject win32_operatingsystem | Select-Object osarchitecture).osarchi
$arduinoCLIURL = "https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Windows_32bit.zip" $arduinoCLIURL = "https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Windows_32bit.zip"
$arduinoCLIZip = $env:TEMP + "\" + "arduino-cli_latest_Windows_32bit.zip" $arduinoCLIZip = $env:TEMP + "\" + "arduino-cli_latest_Windows_32bit.zip"
} }
Write-Output "Downloading installer to $arduinoCLIZip"
$ProgressPreference = "SilentlyContinue"
Invoke-WebRequest -Uri $arduinoCLIURL -OutFile $arduinoCLIZip
$arduinoCLIDirectory = $env:TEMP + "\" + "arduino-cli_installer" $arduinoCLIDirectory = $env:TEMP + "\" + "arduino-cli_installer"
$arduinoCLI = $arduinoCLIDirectory + "\arduino-cli.exe"
<############################################
Set default action for progress indicators, warnings, and errors
############################################>
$global:ProgressPreference = "SilentlyContinue"
$global:WarningPreference = "SilentlyContinue"
$global:ErrorActionPreference = "SilentlyContinue"
<############################################
If $buildDirectory not provided, generate a new time/date stamp based directory to use
############################################>
if (!$PSBoundParameters.ContainsKey('buildDirectory')) {
$buildDate = Get-Date -Format 'yyyyMMdd-HHmmss'
$buildDirectory = $env:TEMP + "\" + $buildDate
}
$commandStationDirectory = $buildDirectory + "\CommandStation-EX"
<############################################
Write out intro message and prompt to continue
############################################>
@"
Welcome to the DCC-EX PowerShell installer for EX-CommandStation ($installerVersion)
Current installer options:
- EX-CommandStation will be built in $commandStationDirectory
- Arduino CLI will be in $arduinoCLIDirectory
"@
<############################################
Create build directory if it doesn't exist, or fail
############################################>
if (!(Test-Path -PathType Container -Path $buildDirectory)) {
try {
New-Item -ItemType Directory -Path $buildDirectory | Out-Null
}
catch {
Write-Output "Could not create build directory $buildDirectory"
Exit
}
}
<############################################
See if we have the Arduino CLI already, otherwise download and extract it
############################################>
if (!(Test-Path -PathType Leaf -Path $arduinoCLI)) {
if (!(Test-Path -PathType Container -Path $arduinoCLIDirectory)) {
try {
New-Item -ItemType Directory -Path $arduinoCLIDirectory | Out-Null
}
catch {
Write-Output "Arduino CLI does not exist and cannot create directory $arduinoCLIDirectory"
Exit
}
}
Write-Output "Downloading and extracting Arduino CLI"
try {
Invoke-WebRequest -Uri $arduinoCLIURL -OutFile $arduinoCLIZip
}
catch {
Write-Output "Failed to download Arduino CLI"
Exit
}
try {
Expand-Archive -Path $arduinoCLIZip -DestinationPath $arduinoCLIDirectory -Force Expand-Archive -Path $arduinoCLIZip -DestinationPath $arduinoCLIDirectory -Force
$ProgressPreference = "Continue" }
catch {
Write-Output "Failed to extract Arduino CLI"
}
}
<#
Write-Output "Installing using directory $buildDirectory" Write-Output "Installing using directory $buildDirectory"
$tagList = Invoke-RestMethod -Uri $gitHubAPITags $tagList = Invoke-RestMethod -Uri $gitHubAPITags
# Example zip: https://github.com/DCC-EX/CommandStation-EX/archive/refs/tags/v4.2.36-Devel.zip
foreach ($tag in $tagList) { foreach ($tag in $tagList) {
$version = $tag.ref.split("/")[2] $version = $tag.ref.split("/")[2]
$versionURL = "https://github.com/DCC-EX/CommandStation-EX/archive/" + $tag.ref $versionURL = $gitHubURLPrefix + $tag.ref
Write-Output "$version : $versionURL" Write-Output "$version : $versionURL"
} }
#>