# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

$pkgname = "Apache.NMS.ActiveMQ"
$pkgver = "2.1.1"
$frameworks = "netstandard2.0"

write-progress "Creating package directory." "Initializing..."
if (!(test-path package)) {
    mkdir package
}
else {
    # Clean package content if exists
    Remove-Item package\* -Recurse
}

if (test-path build) {
    Push-Location build

    $pkgdir = "..\package"

    write-progress "Packaging Application files." "Scanning..."
    $zipfile = "$pkgdir\$pkgname-$pkgver-bin.zip"

    $directory = "$pkgname-$pkgver-bin"
    mkdir $directory

    Copy-Item ..\LICENSE.txt -Destination $directory
    Copy-Item ..\NOTICE.txt -Destination $directory
    
    # clean up temp
    Remove-Item temp -Recurse -ErrorAction Ignore

    foreach ($framework in $frameworks) {
        Copy-Item $framework -Destination temp\$framework -Recurse

        # clean up third party binaries
        Get-ChildItem temp -File -Exclude "*Apache.NMS*" -Recurse | Remove-Item -Recurse

        Copy-Item -Path "temp\$framework" -Destination $directory -Recurse
    }

    Compress-Archive -Path $directory -Update -DestinationPath $zipfile

    Remove-Item $directory -Recurse -ErrorAction Ignore
    
    $nupkg = "$pkgname.$pkgver.nupkg"
    $nupkgdestination = "$pkgdir\$nupkg"
    Copy-Item -Path $nupkg -Destination $nupkgdestination

    $snupkg = "$pkgname.$pkgver.snupkg"
    $snupkgdestination = "$pkgdir\$snupkg"
    Copy-Item -Path $snupkg -Destination $snupkgdestination

    # clean up temp
    Remove-Item temp -Recurse -ErrorAction Inquire

    Pop-Location
}

write-progress "Packaging Source code files." "Scanning..."
$pkgdir = "package"
$zipfile = "$pkgdir\$pkgname-$pkgver-src.zip"

$directory = "$pkgname-$pkgver-src"
mkdir $directory

# clean temp dir if exists
Remove-Item temp -Recurse -ErrorAction Ignore

# copy files to temp dir
Copy-Item src -Destination "$directory\src" -Recurse
Copy-Item test -Destination "$directory\test" -Recurse

# clean up debug artifacts if there are any
Get-ChildItem $directory -Include bin, obj -Recurse | Remove-Item -Recurse

Copy-Item .\LICENSE.txt -Destination $directory
Copy-Item .\NOTICE.txt -Destination $directory
Copy-Item .\keyfile -Destination $directory -Recurse
Copy-Item .\nms-openwire.sln -Destination $directory
Copy-Item .\package.ps1 -Destination $directory

Compress-Archive -Path $directory -DestinationPath $zipfile

Remove-Item $directory -Recurse -ErrorAction Ignore

write-progress "Packaging Docs"
$zipfile = "$pkgdir\$pkgname-$pkgver-docs.zip"
$directory = "$pkgname-$pkgver-docs"
mkdir $directory

Copy-Item -Path .\docs\_site\* -Destination $directory -Recurse
Copy-Item .\LICENSE.txt -Destination $directory
Copy-Item .\NOTICE.txt -Destination $directory

Compress-Archive -Path $directory -DestinationPath $zipfile

Remove-Item $directory -Recurse -ErrorAction Ignore

write-progress -Completed "Packaging" "Complete."