Module/Stig.SkippedRule/Stig.SkippedRule.psm1

#region Header
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
using module .\..\Common\Common.psm1
#endregion
#region Class
<#
    .SYNOPSIS
        This class describes a SkippedRule

    .DESCRIPTION
        The SkippedRule class describes a SkippedRule, the rule id of a specific Stig rule that should be excluded from the Stigs that need to be
        processed. The SkippedRule class instance will move the specific Stig rule into a SkippedRule section of the StigData output Xml so that
        it is documented as having been skipped.

    .EXAMPLE
        $skippedRule = [SkippedRule]::new('V-1090')

    .NOTES
        This class requires PowerShell v5 or above.
#>

Class SkippedRule
{
    #region Properties
    <#
        .DESCRIPTION
            The Id of an individual Stig Rule
    #>

    [string] $StigRuleId
    #endregion Properties
    #region Constructor
    <#
        .SYNOPSIS
            Parameterless constructor

        .DESCRIPTION
            A parameterless constructor for SkippedRule. To be used only for
            build/unit testing purposes as Pester currently requires it in order to test
            static methods on powershell classes
    #>

    SkippedRule()
    {
        Write-Warning "This constructor is for build testing only."
    }

    <#
        .SYNOPSIS
            Constructor

        .DESCRIPTION
            A constructor for SkippedRule. Returns a ready to use instance
            of SkippedRule.

        .PARAMETER StigRuleId
            The Id of an individual Stig Rule
    #>

    SkippedRule([string] $StigRuleId)
    {
        $this.StigRuleId = $StigRuleId
    }
    #endregion
    #region Static Methods
    <#
        .SYNOPSIS
            Converts a provided string array of Stig rule ids into a SkippedRule array

        .DESCRIPTION
            This method returns an SkippedRule array based on the string array provided
            as the parameter.

        .PARAMETER SkippedRules
            A string array of Stig rule ids

            [string[]] $SkippedRuleArray =
                @(
                "V-1114",
                "V-1115",
                "V-3472.a",
                "V-4108",
                "V-4113",
                "V-8322.b",
                "V-26482",
                "V-26579",
                "V-26580",
                "V-26581"
                )
    #>

    static [SkippedRule[]] ConvertFrom ([string[]] $SkippedRules)
    {
        [System.Collections.ArrayList] $skips = @()

        foreach ($skip in $SkippedRules)
        {
            $rule = [SkippedRule]::new($skip.Trim())
            $skips.Add($rule)
        }

        return $skips
    }
    #endregion
}
#endregion
#region Footer
Foreach ($supportFile in (Get-ChildItem -Path $PSScriptRoot -Exclude $MyInvocation.MyCommand.Name))
{
    Write-Verbose "Loading $($supportFile.FullName)"
    . $supportFile.FullName
}
Export-ModuleMember -Function '*' -Variable '*'
#endregion