private/New-ModuleV3.Helper.ps1
function Get-ModulePath{ [CmdletBinding()] param( [Parameter()][string]$Name, [Parameter()][string]$RootPath ) # | path/name | null | Name | # | --------- | ----- | ----------- | # | null | Error | ./Name | # | Path | '.' | Path/Name | if ([string]::IsNullOrWhiteSpace($Path) -and [string]::IsNullOrWhiteSpace($Name)) { write-Error "Path and Name cannot be null or empty at the same time." return $null } #check if path is null $path = [string]::IsNullOrWhiteSpace($Path) ? (Get-Location | Convert-Path) : $Path $ret = $path | Join-Path -ChildPath $Name return $ret } function Get-ModuleName{ [CmdletBinding()] param( [Parameter()][string]$Path ) # null if path is null if([string]::IsNullOrWhiteSpace($Path)){ return $null } $name = $Path | Split-Path -LeafBase return $name } function Get-TestModulePath{ [CmdletBinding()] param( [Parameter()][string]$Path ) $moduleName = Get-ModuleName -Path $Path $testModulePath = $path | Join-Path -ChildPath ($moduleName + "Test") return $testModulePath } function Get-TestModuleName { [CmdletBinding()] param ( [parameter(Mandatory)] [string] $Path ) $testPath = Get-TestModulePath -Path $Path $name = Get-ModuleName -Path $testPath return $name } function New-Folder{ [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory,ValueFromPipeline)][string]$Path ) process { try { #test if path exists if($Path | Test-Path){ Write-Error "Path already exists." return $null } else { if ($PSCmdlet.ShouldProcess($Path, "New-Item -ItemType Directory")) { $null = New-Item -ItemType Directory -Path $Path } # Converting to Provider path return $Path | Convert-Path } } catch { Write-Error -Message "Failed to add path." return $null } } } |