DSCResources/cGitRepository/cGitRepository.psm1
function Get-TargetResource { [CmdletBinding()] [OutputType([System.Collections.Hashtable])] param ( [parameter(Mandatory = $true)] [System.String] $BaseDirectory, [parameter(Mandatory = $true)] [System.String] $Repository, [parameter(Mandatory = $true)] [ValidateSet('Present','Absent')] [System.String] $Ensure ) $RepositoryName = $Repository.Split('\')[-1] if (Test-Path -Path "$($BaseDirectory)\$($RepositoryName)\.git") { $Ensure = 'Present' } else { $Ensure = 'Absent' } Return @{ 'BaseDirectory' = $BaseDirectory 'Repository' = $Repository 'Ensure' = $Ensure } } Export-ModuleMember -Function Get-TargetResource -Verbose:$false function Set-TargetResource { [CmdletBinding()] param ( [parameter(Mandatory = $true)] [System.String] $BaseDirectory, [parameter(Mandatory = $true)] [System.String] $Repository, [parameter(Mandatory = $true)] [ValidateSet("Present","Absent")] [System.String] $Ensure ) $ErrorActionPreference = 'Stop' $StartingDir = (pwd).Path Try { Set-Location -Path $BaseDirectory $EAPHolder = $ErrorActionPreference $ErrorActionPreference = 'SilentlyContinue' git clone $Repository --recursive $ErrorActionPreference = [System.Management.Automation.ActionPreference]$EAPHolder } Catch { throw } Finally { Set-Location -Path $StartingDir } } Export-ModuleMember -Function Set-TargetResource -Verbose:$false function Test-TargetResource { [CmdletBinding()] [OutputType([System.Boolean])] param ( [parameter(Mandatory = $true)] [System.String] $BaseDirectory, [parameter(Mandatory = $true)] [System.String] $Repository, [parameter(Mandatory = $true)] [ValidateSet("Present","Absent")] [System.String] $Ensure ) $Status = Get-TargetResource -BaseDirectory $BaseDirectory -Repository $Repository -Ensure $Ensure Return ($Ensure -eq $Status.Ensure) -as [bool] } Export-ModuleMember -Function Test-TargetResource -Verbose:$false |