-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPSModuleDevelopment.psm1
More file actions
56 lines (44 loc) · 1.58 KB
/
Copy pathPSModuleDevelopment.psm1
File metadata and controls
56 lines (44 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
$script:PSModuleRoot = $PSScriptRoot
$script:PSModuleVersion = "2.2.5.28"
$script:doDotSource = $false
if (Get-PSFConfigValue -FullName PSModuleDevelopment.Import.DoDotSource) { $script:doDotSource = $true }
#region Helper function
function Import-PSMDFile
{
<#
.SYNOPSIS
Loads files into the module on module import.
.DESCRIPTION
This helper function is used during module initialization.
It should always be dotsourced itself, in order to proper function.
.PARAMETER Path
The path to the file to load
.EXAMPLE
PS C:\> . Import-PSMDFile -File $function.FullName
Imports the file stored in $function according to import policy
#>
[CmdletBinding()]
Param (
[string]
$Path
)
if ($script:doDotSource) { . (Resolve-Path $Path) }
else { $ExecutionContext.InvokeCommand.InvokeScript($false, ([scriptblock]::Create([io.file]::ReadAllText($(Resolve-Path $Path)))), $null, $null) }
}
#endregion Helper function
# Perform Actions before loading the rest of the content
. Import-PSMDFile -Path "$PSModuleRoot\internal\scripts\preload.ps1"
#region Load internal functions
foreach ($function in (Get-ChildItem "$PSModuleRoot\internal\functions" -Recurse -File -Filter "*.ps1"))
{
. Import-PSMDFile -Path $function.FullName
}
#endregion Load internal functions
#region Load functions
foreach ($function in (Get-ChildItem "$PSModuleRoot\functions" -Recurse -File -Filter "*.ps1"))
{
. Import-PSMDFile -Path $function.FullName
}
#endregion Load functions
# Perform Actions after loading the module contents
. Import-PSMDFile -Path "$PSModuleRoot\internal\scripts\postload.ps1"