DSCResources/SYN_SynergyDE32/SYN_SynergyDE32.psm1

DATA localizedData
{
    #culture en-US
    ConvertFrom-StringData @'
    InstallerFileNotFound = The installer file was not found at '{0}'
'@


}

# Import the common Synergy functions
Import-Module -Name ( Join-Path `
    -Path(Split-Path -Path $PSSCriptRoot -Parent) `
    -ChildPath '\SynergyInstallCommon\SynergyInstallCommon.psm1')

function Get-TargetResource
{
    [CmdletBinding()]
    [OutputType([System.Collections.Hashtable])]
    param
    ()
    @(
        Intaller file location = $Installerfile
        Desired install state = $Ensure
        Install core components = $CoreComponents
        Install Profressional Series Development = $ProfessionalSeriesDevelopmentEnvironment
        Install Connectivity Series = $ConnectivitySeries
        Install xfSeries = $xfSeries
        Install Report Writer = $ReportWriter
        Install Examples = $Examples
        Install Files for Shared Installation = $FilesForSharedInstallation
    )
}
    
function Set-TargetResource
{
    [CmdletBinding()]
    param
    (
        # Should Connectivity Series be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $ConnectivitySeries = 'Present',

        # Should Core Components be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $CoreComponents = 'Present',

        # Should the product be installed or uninstalled
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $Ensure = 'Present',

        # Should examples be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $Examples = 'Absent',

        # Should files for shared installation be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $FilesForSharedInstallation = 'Absent',

        # Installation asset location
        [Parameter(Mandatory = $true)]
        [String]
        $InstallerFile,

        # Should Professional Series Development Environment be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $ProfessionalSeriesDevelopmentEnvironment = 'Absent',

        # Should Professional Series Workbench be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $ProfessionalSeriesWorkbench = 'Present',

        # Should Report Writer be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $ReportWriter = 'Absent',

        # Should xfSeries be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $xfSeries = 'Present'
    )

    $argString = "/qb "
    if ($CoreComponents -eq "Present")
    {
        $argString += "CC"
    }
    if ($ConnectivitySeries -eq "Present")
    {
        $argString += ",CN"
    }
    if ($xfSeries -eq "Present")
    {
        $argString += ",XS"
    }
    if ($ProfessionalSeriesDevelopmentEnvironment -eq "Present")
    {
        $argString += ",PS"
    }
    if ($FilesForSharedInstallation -eq "Present")
    {
        $argString += ",SC"
    }
    if ($Examples -eq "Present")
    {
        $argString += ",EG"
    }
    if ($ReportWriter -eq "Present")
    {
        $argString += ",RW"
    }
    $argString += " "
    Install-Synergy-Product -Name "SDE64" -Path $InstallerFile -ProductId EA306101-652D-48C6-866E-A19B694F1BB8 -Arguments $argString
}

function Test-TargetResource
{
    [CmdletBinding()]
    [OutputType([System.Boolean])]
    param
    (
        # Should Connectivity Series be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $ConnectivitySeries = 'Present',

        # Should Core Components be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $CoreComponents = 'Present',

        # Should the product be installed or uninstalled
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $Ensure = 'Present',

        # Should examples be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $Examples = 'Absent',

        # Should files for shared installation be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $FilesForSharedInstallation = 'Absent',

        # Installation asset location
        [Parameter(Mandatory = $true)]
        [String]
        $InstallerFile,

        # Should Professional Series Development Environment be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $ProfessionalSeriesDevelopmentEnvironment = 'Absent',

        # Should Professional Series Workbench be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $ProfessionalSeriesWorkbench = 'Present',

        # Should Report Writer be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $ReportWriter = 'Absent',

        # Should xfSeries be installed
        [Parameter()]
        [ValidateSet('Present', 'Absent')]
        [String]
        $xfSeries = 'Present'
    )

    if (-NOT (Test-Path $InstallerFile))
    {
        Throw($localizedData.InstallerFileNotFound -f $InstallerFile)
    }
}

Export-ModuleMember -Function *-TargetResource