diff --git a/build.ps1 b/build.ps1 index ddc5e2a..2b5669f 100644 --- a/build.ps1 +++ b/build.ps1 @@ -1,6 +1,6 @@ $BuildPSModule = @{ Name = 'PSModuleUtils' - Version = '1.6.1' + Version = '1.7.0-preview1' Description = 'A module with helper functions to build and publish PowerShell modules to the PSGallery.' Tags = ('PSEdition_Desktop', 'PSEdition_Core', 'Windows') } diff --git a/src/public/Build-PSModule.ps1 b/src/public/Build-PSModule.ps1 index d0ba34e..9cb753a 100644 --- a/src/public/Build-PSModule.ps1 +++ b/src/public/Build-PSModule.ps1 @@ -21,6 +21,9 @@ The description of the module. .PARAMETER Tags The tags for the module. +.PARAMETER LicenseUri +The URL for the repo's license. + .PARAMETER SourceDirectory The source directory of the module. Should be a nested directory that doesn't contain and build scripts. @@ -50,6 +53,7 @@ function Build-PSModule { [String]$Version = '0.0.1', [String]$Description = 'A PowerShell module.', [String[]]$Tags = @('PSEdition_Desktop', 'PSEdition_Core', 'Windows'), + [String]$LicenseUri = 'https://opensource.org/licenses/MIT', [String]$SourceDirectory = "$PWD/src", [String]$OutputDirectory = "$PWD/out", [Switch]$FixScriptAnalyzer @@ -62,6 +66,7 @@ function Build-PSModule { Version = $Version Description = $Description Tags = $Tags + LicenseUri = $LicenseUri SourceDirectory = $SourceDirectory OutputDirectory = $OutputDirectory FixScriptAnalyzer = $FixScriptAnalyzer @@ -102,6 +107,15 @@ function Build-PSModule { $moduleContent += $functionContent } + $srcModuleContent = Get-Content -Path "$SourceDirectory\$Name.psm1" -Raw + $startIndex = $srcModuleContent.IndexOf('Get-ChildItem') + $subString = $srcModuleContent.Substring($startIndex) + $braceIndex = $subString.IndexOf('}') + $moduleScriptContent = $subString.Substring($braceIndex + 1) + if ($moduleScriptContent) { + $moduleContent += $moduleScriptContent + } + $moduleContent | Set-Content -Path "$ModuleOutputDirectory/$name.psm1" -Force $null = New-Item -Path "$ModuleOutputDirectory/private" -ItemType Directory -Force Get-ChildItem -Path "$SourceDirectory/private" -Exclude '*.Tests.ps1' | @@ -124,7 +138,7 @@ function Build-PSModule { else { ( New-Guid ).Guid } - $requiredModulesStatement = Get-Content -Path "$SourceDirectory\$Name.psm1" | + $requiredModulesStatement = $srcModuleContent.Split("`n") | Where-Object -FilterScript { $_ -match '#Requires' } $requiredModules = (($requiredModulesStatement -split '-Modules ')[1] -split ',').Trim() | ForEach-Object { @@ -137,21 +151,21 @@ function Build-PSModule { } $moduleVersion, $modulePrerelease = $Version -split '-', 2 $newModuleManifest = @{ - Path = $manifestPath - Author = (( & git log --format='%aN' -- . | Sort-Object -Unique ) -join ', ') - CompanyName = $companyName - Copyright = "(c) $( Get-Date -Format yyyy ) $companyName. All rights reserved." - RootModule = "$Name.psm1" - ModuleVersion = $moduleVersion - Guid = $guid - Description = $Description - PowerShellVersion = 5.1 - FunctionsToExport = $functionNames + Path = $manifestPath + Author = (( & git log --format='%aN' -- . | Sort-Object -Unique ) -join ', ') + CompanyName = $companyName + Copyright = "(c) $( Get-Date -Format yyyy ) $companyName. All rights reserved." + RootModule = "$Name.psm1" + ModuleVersion = $moduleVersion + Guid = $guid + Description = $Description + PowerShellVersion = 5.1 + FunctionsToExport = $functionNames CompatiblePSEditions = ('Desktop', 'Core') - Tags = $Tags - ProjectUri = $repoUrl - LicenseUri = 'https://opensource.org/licenses/MIT' - ReleaseNotes = ( git log -1 --pretty=%B )[0] + Tags = $Tags + ProjectUri = $repoUrl + LicenseUri = $LicenseUri + ReleaseNotes = ( git log -1 --pretty=%B )[0] } if ($requiredModules) { $newModuleManifest['RequiredModules'] = $requiredModules