111 lines
2.8 KiB
PowerShell
Raw Normal View History

2025-05-14 11:26:23 +08:00
#!/usr/bin/env pwsh
$global:DOCKER_IMAGE_LOWEST_VERSION = "1.0"
$global:DOCKER_IMAGE_VERSION = ""
$global:DOCKER_IMAGE = "bekencorp/armino-idk"
function Check-DockerInstalled {
$dockerExecutablePath = Get-Command docker -ErrorAction SilentlyContinue
if (!($dockerExecutablePath)) {
Write-Host "You don't have docker installed in your path.`nPlease find our quick start to build using docker client."
exit 1
}
}
function Check-DockerRunning {
try {
$dockerInfo = docker ps
if (!($?)) {
Write-Host "Docker not started, please read the user manual to start Docker."
exit 1
}
} catch {
Write-Host "docker running error"
exit 1
}
}
function Compare-Versions {
param (
[string]$version1,
[string]$version2
)
$ver1Main, $ver1Sub = $version1 -split '\.'
$ver2Main, $ver2Sub = $version2 -split '\.'
$ver1Main = [int]$ver1Main
$ver1Sub = [int]$ver1Sub
$ver2Main = [int]$ver2Main
$ver2Sub = [int]$ver2Sub
if ($ver1Main -gt $ver2Main) {
return 1
} elseif ($ver1Main -lt $ver2Main) {
return -1
} else {
if ($ver1Sub -gt $ver2Sub) {
return 1
} elseif ($ver1Sub -lt $ver2Sub) {
return -1
} else {
return 0
}
}
}
function Get-MaxVersion {
param (
[string[]]$versions
)
if ($versions.Length -eq 0) {
return $null
}
$maxVersion = $versions[0]
for ($i = 1; $i -lt $versions.Length; $i++) {
$currentVersion = $versions[$i]
$comparisonResult = Compare-Versions -version1 $maxVersion -version2 $currentVersion
if ($comparisonResult -lt 0) {
$maxVersion = $currentVersion
}
}
return $maxVersion
}
function Check-ImageExist {
$images_info = docker images --format "{{.Repository}} {{.Tag}}" | Select-String $DOCKER_IMAGE | ForEach-Object { $_.Line.Split(" ")[1] }
if (-not $images_info) {
Write-Host "Docker build image does not exist, please read the user manual to install image."
exit 1
}
$max_version = Get-MaxVersion -versions $images_info
$result = Compare-Versions -version1 $max_version -version2 $DOCKER_IMAGE_LOWEST_VERSION
if ($result -ge 0) {
$global:DOCKER_IMAGE_VERSION = $max_version
} else {
Write-Host "Docker image version is outdated. The minimum version is $DOCKER_IMAGE_LOWEST_VERSION"
exit 1
}
}
function Run-DockerBuild {
$args_array = $args -split " "
docker run --rm -v ${PWD}:/armino -w /armino ${DOCKER_IMAGE}:${DOCKER_IMAGE_VERSION} $args_array
}
function main {
Check-DockerInstalled
Check-DockerRunning
Check-ImageExist
Run-DockerBuild "$args"
}
main "$args"