Containers/New-Container.ps1

function New-Container {
    Param(
        [Parameter(Mandatory=$false)]
        [string] $ContainerName,
        [Parameter(Mandatory=$false)]
        [string] $ImageName,
        [Parameter(Mandatory=$false)]
        [string] $LicenseFile,
        [Parameter(Mandatory=$false)]
        [pscredential] $Credential,
        [Parameter(Mandatory=$false)]
        [string] $Country = "",
        [switch] $alwaysPull,
        [switch] $SetupTestUsers,
        [switch] $SkipTestTool,
        [switch] $includeCSide
    )

    if ($null -eq $ContainerName -or $ContainerName -eq "") {
        $ContainerName = (Get-EnvironmentKeyValue -KeyName 'name')
    }

    if ($null -eq $Credential) {
        $NewCredential = New-CredentialFromEnvironmentJson
        if ($NewCredential -eq $false) {
            $Credential = [PSCredential]::new('admin', (ConvertTo-SecureString 'P@ssword1' -AsPlainText -Force))
            $Password = (ConvertTo-SecureString 'P@ssword1' -AsPlainText -Force)
        }
        else {
            $Credential = $NewCredential
            $Password = (ConvertTo-SecureString (Get-EnvironmentKeyValue -KeyName "password") -AsPlainText -Force)
        }
    } else {
        $Password = $Credential.Password
    }

    if ($null -eq $ImageName -or $ImageName -eq "") {
        $ImageName = (Get-ImageNameForRepo)
    }

    if ($Country -ne "") {
        $ImageName = (($ImageName -replace ".{2}$") + $Country)
    }
    Write-Host "Using Image $ImageName"

    if (!(Test-Path "C:\.backups")) {
        New-Item -Path "C:\.backups" -ItemType Directory | Out-Null
    }

    $platform = Get-AppKeyValue -KeyName 'platform'
    $bakFolder = (Join-Path "C:\.backups" $platform)
    $bakFolder = (Join-Path $bakFolder (Get-NavContainerCountry -containerOrImageName $ContainerName))

    if ($SetupTestUsers.IsPresent) {
        New-NavContainer -containerName $ContainerName -accept_eula -accept_outdated -auth NavUserPassword `
        -Credential $Credential -imageName $ImageName -licenseFile $LicenseFile -updateHosts `
        -useBestContainerOS -includeAL -shortcuts None -includeTestToolkit:(!$SkipTestTool.IsPresent) -includeTestLibrariesOnly:(!$SkipTestTool.IsPresent) `
        -alwaysPull:$alwaysPull -doNotExportObjectsToText -includeCSide:$includeCSide `
        -additionalParameters @("-v C:\.backups:C:\.backups")
        -finalizeDatabasesScriptBlock { 
            Setup-NavContainerTestUsers -containerName $ContainerName -password $Password -credential $Credential
        } -bakFolder ($bakFolder)
    }
    else {
        New-NavContainer -containerName $ContainerName -accept_eula -accept_outdated -auth NavUserPassword `
        -Credential $Credential -imageName $ImageName -licenseFile $LicenseFile -updateHosts `
        -useBestContainerOS -includeAL -shortcuts None -includeTestToolkit:(!$SkipTestTool.IsPresent) -includeTestLibrariesOnly:(!$SkipTestTool.IsPresent) `
        -alwaysPull:$alwaysPull -doNotExportObjectsToText -includeCSide:$includeCSide `
        -bakFolder ($bakFolder)
    }
}
Export-ModuleMember New-Container