Export-ToDockerRegistry.psm1

<#
.Synopsis
   Automatic Publish Tool (APT)
.DESCRIPTION
   Export docker image into docker registry
.EXAMPLE
   Export-ToDockerRegistry components system-api -Deploy
.EXAMPLE
   Export-ToDockerRegistry components system-api -Type sapase -Deploy
 .NOTES
   Author: Imrich Szolik
#>

function Export-ToDockerRegistry
{
    [CmdletBinding()]
    [Alias()]
    Param(
        #Registry root
        [string]
        [Parameter(Position=0, Mandatory=$true, HelpMessage="Main collection")]
        $Collection,

        # Component name
        [string]
        [Parameter(Position=1, Mandatory=$true, HelpMessage="Component name")]
        $Component,
        
        # Component tag
        [string]
        [Parameter(Position=2, Mandatory=$true, HelpMessage="Component tag")]
        $Tag,
        
        # Component type
        [string]
        [Parameter(Mandatory=$false, HelpMessage="Component type")]
        $Type,
        
        # Deploy to repository
          [switch]
          $Deploy,

        [string]
        [Parameter(Mandatory=$false, ValueFromPipelineByPropertyName=$false, HelpMessage="Docker registry")]
        $Registry
    )
    Begin{
         #
         if($null -eq $Registry -or $Registry -eq ''){
            $Registry = "docker-registry.nuaktiv.dev"
         }
         #
         if ($Registry.EndsWith('/')) {
            $repository = "$($Registry)$($Collection)"
         }
         else{
            $repository = "$($Registry)/$($Collection)"
         }
         #
   }
    Process{
      #
      if($Component -ne '' -and $Tag -ne '' -and $Collection -ne '')  {
         #
         if($null -eq $Type -or $Type -eq ''){
            #
            if($Deploy.IsPresent){
               Write-Host "### ADT DEPLOY $($Component):$Tag INTO $repository/$Component ###"
            }
            else{
               Write-Host "### ADT TAG $($Component):$Tag ###"
            }
            #
            docker image tag "$($Collection)-$($Component):latest" "$repository/$($Component):latest"
            docker image tag "$($Collection)-$($Component):latest" "$repository/$($Component):$Tag"
            #
            if($Deploy.IsPresent){
               docker push "$repository/$($Component):latest"
               docker push "$repository/$($Component):$Tag"
            }
         }
         else{
            #
            if($Deploy.IsPresent){
               Write-Host "### ADT DEPLOY $($Component):$Tag-$($Type) INTO $repository/$Component"
            }
            else{
               Write-Host "### ADT TAG $($Component):$Tag-$($Type) ###"
            }
            #
            docker image tag "$($Collection)-$($Component):latest-$($Type)" "$repository/$($Component):latest-$($Type)"
            docker image tag "$($Collection)-$($Component):latest-$($Type)" "$repository/$($Component):$($Tag)-$($Type)"
            #
            if($Deploy.IsPresent){
               docker push "$repository/$($Component):latest-$($Type)"
               docker push "$repository/$($Component):$($Tag)-$($Type)"
            }
         }
      }
    }
    End{
    }
}
Export-ModuleMember -Function Export-ToDockerRegistry
# SIG # Begin signature block
# MIIIEwYJKoZIhvcNAQcCoIIIBDCCCAACAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDKLR4JVQXBEj5c
# bYwO0vHDYPchQ8FS90KvVx+GNcUbo6CCBQ8wggULMIIC86ADAgECAgIApTANBgkq
# hkiG9w0BAQsFADCBoDELMAkGA1UEBhMCU0sxETAPBgNVBAgTCFNsb3Zha2lhMRMw
# EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpMb210ZWMuY29tMSswKQYDVQQD
# EyJMb210ZWMuY29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MScwJQYJKoZIhvcN
# AQkBFhhJbXJpY2guU3pvbGlrQGxvbXRlYy5jb20wHhcNMTkwMzI2MTUwNDQzWhcN
# MzAwMTAxMDAwMDAwWjCBkzELMAkGA1UEBhMCU0sxETAPBgNVBAgTCFNsb3Zha2lh
# MRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpMb210ZWMuY29tMR4wHAYD
# VQQDExVMb210ZWMuY29tIFBvd2Vyc2hlbGwxJzAlBgkqhkiG9w0BCQEWGEltcmlj
# aC5Tem9saWtAbG9tdGVjLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
# ggEBAL4n4nCHbkdrf09IHNFQ2P/z6I43GKScsFJOQHUMkRD3ALoUFL/URC9sW2fY
# rqG5VkFAKhnM0VxeiICR53cAshNShjFf58PhaS973jtCoJcaugIVBVoFIuQ+gnNY
# Jp2VdBbIPKMW4JjjZOxBEkHpMWmfitXKWGKeU68Qcn3oI6PO+YSztfXLe1NU+1GI
# O3fA7E0vHVPUf/qWZXMYU5ElLQVm9AXbfX79mTgl76A57+OC6j+Aehkd2OPfUl4w
# snox3fOyUAUA8iojeWh97PpXd/s+RkuxWdgsC4YSWDUjhZSzBkml9uerYqo9a+XA
# b39dvkpK9TPl3q5HNBQMkCfp8bkCAwEAAaNaMFgwCQYDVR0TBAIwADALBgNVHQ8E
# BAMCB4AwKwYDVR0lBCQwIgYIKwYBBQUHAwMGCisGAQQBgjcCARUGCisGAQQBgjcC
# ARYwEQYJYIZIAYb4QgEBBAQDAgSwMA0GCSqGSIb3DQEBCwUAA4ICAQAJJapv9skY
# jh5HTsJnqDdtqh7YOOXuA8g+DKBj+5gDEZE5V9VhAFVp8UJ9RoITGGIRTVId0lqc
# LJiVSTHx305VW9aID8vo77kfrTyXvPXNIsTtHnPkkwH47+CoiY3IpPQLjUA/Q6Qd
# qwINvvwom7/Wc+OoIqlPdJH5DbBrIy85dr6M/Lm3Rw2BolcTRwXTB3xAhweth78B
# P6pbcAd32FdymkRopLIihuNs7g7ZR/Q/5803G+OiQIMRGyTvaQ+aQjJgFpkzp7NI
# whzougfCOV47Sc89jEpUqw16i2UFfz2ywOlWUyYtue1S1PjM1ljgJfRo+e0wUnFp
# gFQzXGF1bTYVaQ4e3nJleADfvqeXoH2AYeBTbz9BcogkkfURAC3iiob1bNs5jE1C
# brEDCw6m/03k0oOmm3xQksXyAhBYuUkRwu9jd4y3FwZ/syDGLz3b6cY8o1YyINOO
# A3B2r92shNt0rWhJu3v+qcIVmFQ0aKlhNNRoiVlQgJ7NgO0UV+vU2lgiscpUSxEt
# xKN+450r49su06NA6zsyn3CELUmVkPyjx5fyizwt9KxVuYOUSEb32Y7QCffHJ1qt
# F6SuQrKbgb/24y7cCDW6PDVRvPOySUlKu9sPykICDjvzXBvjYEILM7AmtYCIBGQg
# imBsQvTEoXJXiwAOi1XNz3LxcjQHQ/ZM4zGCAlowggJWAgEBMIGnMIGgMQswCQYD
# VQQGEwJTSzERMA8GA1UECBMIU2xvdmFraWExEzARBgNVBAcTCkJyYXRpc2xhdmEx
# EzARBgNVBAoTCkxvbXRlYy5jb20xKzApBgNVBAMTIkxvbXRlYy5jb20gQ2VydGlm
# aWNhdGlvbiBBdXRob3JpdHkxJzAlBgkqhkiG9w0BCQEWGEltcmljaC5Tem9saWtA
# bG9tdGVjLmNvbQICAKUwDQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEK
# MAigAoAAoQKAADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3
# AgELMQ4wDAYKKwYBBAGCNwIBFjAvBgkqhkiG9w0BCQQxIgQgNQ8RXUYzhGxZNoUx
# kqfxHYIBEPzV0nz9I+f21IyURskwDQYJKoZIhvcNAQEBBQAEggEATqbb4IdaqhP1
# 4xsxLGrBwnNMNVwR1oE0amVi+nAjFuvNgmzuOFvfHEEnY/GCxVjTQu7tr4Slu0OJ
# WOj/qEPEjyeRWcBNiNxhF5uXnx8/xejdRPBT/7AdOitNyatyZdtLJPDwXa2Hcixa
# lE6OBNUEqekSplUuIP5jsG6r7u1BQaWtSgpGZYcPdDbwCMfgJ3vUJ700rfe8RrKx
# 79F5HiGf8WbrY9dwI8aVXZhIxiiMNj3lViMSLM0+8R3/qz/CInFRGKp8Lf++p2Kv
# 1D7RpHJB++fg2mO+d/MIY9D+PZk0FFQRZtrx2OtJscm+0RbjYmYU1WtDidUWq2zK
# pycwkb7LTw==
# SIG # End signature block