111 lines
2.8 KiB
PowerShell
111 lines
2.8 KiB
PowerShell
#!/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"
|