src/public/Publish-Module.ps1
[CmdletBinding()] param ( [Parameter(Mandatory = $true)] [string] $ModulePath, [Parameter(Mandatory = $true)] [string] $ApiKey ) begin { $ErrorActionPreference = "Stop" if ( -not $PSBoundParameters.ContainsKey( 'ModulePath' ) ) { $Dir = (Get-Item $PSScriptRoot) $DirName = $Dir.Name $DirFullPath = $Dir.FullName $ModulePath = Join-Path $DirFullPath "$DirName.ps1" } if ( -not ( Test-Path $ModulePath ) ) { Write-Error "Module file: '$ModulePath' doesn't exist!" } $ModuleName = [System.IO.Path]::GetFileNameWithoutExtension( $ModulePath ) } process { $modulePublished = $true try { $moduleOnFeed = Find-Module -Repository $PSRepository -Name $ModuleName -ErrorAction Stop } catch { $modulePublished = $false } Import-Module $ModulePath $module = Get-Module $ModuleName if ( -not $modulePublished ) { Write-Verbose "Module doesn't exists on NuGet feed. Publishing..." Publish-Module -Path . -Repository $PSRepository -NuGetApiKey $ApiKey } else { [Version] $currentVersion = $module.Version [Version] $feedVersion = $moduleOnFeed.Version Write-Verbose "Current module version: $currentVersion" Write-Verbose "Published module last version: $feedVersion" $currentVersion = [Version]::new($currentVersion.Major, $currentVersion.Minor, $currentVersion.Build) $feedVersion = [Version]::new($feedVersion.Major, $feedVersion.Minor, $feedVersion.Build) if ( $currentVersion -gt $feedVersion ) { Write-Verbose "Module version is greater than published module's version. Publishing..." Publish-Module -Path . -Repository $PSRepository -NuGetApiKey $ApiKey } } } |