-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTest-ImportFunctions.ps1
109 lines (88 loc) · 2.22 KB
/
Test-ImportFunctions.ps1
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<#
.SYNOPSIS
This powershell script attempts to dot source all the modules in this repository.
.DESCRIPTION
Returns $True if no error was found
.EXAMPLE
Test-Importfunctions
.INPUTS
None
.REQUIRED FUNCTIONS
None
.LINK
http://www.UcMadScientist.com
https://github.com/Atreidae/UcmPSTools
.ACKNOWLEDGEMENTS
Thanks to Adam the Automater for getting me started on Pipeline automation.
Check out https://adamtheautomator.com/powershell-devops/ for more info!
.NOTES
Version: 1.0
Date: 14/05/2021
.VERSION HISTORY
1.0: Initial Public Release
#>
Param #No parameters
(
[Parameter(ValueFromPipelineByPropertyName=$true, Position=1)] [switch]$Private
)
$Global:LogFileLocation = $PSCommandPath -replace '.ps1','.log'
## Find all of the public functions
$publicFuncFolderPath = Join-Path -Path $PSScriptRoot -ChildPath 'public'
#Check there is actually files here
if ((Test-Path -Path $publicFuncFolderPath) -and ($publicFunctionNames = Get-ChildItem -Path $publicFuncFolderPath -Filter '*.ps1' | Select-Object PsPath))
{
#Run through each file to import
ForEach ($FunctionName in $publicFunctionNames)
{
#Import the fucntion
Try
{
Write-host "Importing $FunctionName"
.$FunctionName.PsPath
}
#Error during import
Catch
{
Write-Error "Error importing $FunctionName"
Return $False
}
}
}
#No files to import
else
{
Write-Warning "No Public Modules to import, try with the Private flag set"
}
#Include importing the private functions
If ($private)
{
## Find all of the private functions
$publicFuncFolderPath = Join-Path -Path $PSScriptRoot -ChildPath 'private'
#Check there is actually files here
if ((Test-Path -Path $publicFuncFolderPath) -and ($publicFunctionNames = Get-ChildItem -Path $publicFuncFolderPath -Filter '*.ps1' | Select-Object PsPath))
{
#Run through each file to import
ForEach ($FunctionName in $publicFunctionNames)
{
#Import the fucntion
Try
{
Write-host "Importing $FunctionName"
.$FunctionName.PsPath
}
#Error during import
Catch
{
Write-Error "Error importing $FunctionName"
Return $False
}
}
}
#No files to import
else
{
Write-Warning "No Private Modules to import"
}
}
#Return true if we didnt catch anything
Return $True