diff --git a/PSSwagger/PSSwagger.Constants.ps1 b/PSSwagger/PSSwagger.Constants.ps1 index ed6a561..7a70c4c 100644 --- a/PSSwagger/PSSwagger.Constants.ps1 +++ b/PSSwagger/PSSwagger.Constants.ps1 @@ -521,8 +521,7 @@ $TableColumnHeaderStr = @' $DefaultGeneratedFileHeader = @' Code generated by Microsoft (R) PSSwagger {0} -Changes may cause incorrect behavior and will be lost if the code is -regenerated. +Changes may cause incorrect behavior and will be lost if the code is regenerated. '@ $PSCommentFormatString = "<# @@ -533,4 +532,31 @@ $PSCommentFormatString = "<# $XmlCommentFormatString = " -" \ No newline at end of file +" + +$DefaultGeneratedFileHeaderWithoutVersion = @' +Code generated by Microsoft (R) PSSwagger +Changes may cause incorrect behavior and will be lost if the code is regenerated. +'@ + +$MicrosoftApacheLicenseHeader = @' +Copyright (c) Microsoft and contributors. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the ""License""); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +See the License for the specific language governing permissions and +limitations under the License. +'@ + +$MicrosoftMitLicenseHeader = @' +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the MIT License. See License.txt in the project root for license information. +'@ + diff --git a/PSSwagger/PSSwagger.psm1 b/PSSwagger/PSSwagger.psm1 index 6fdc323..b28eb0e 100644 --- a/PSSwagger/PSSwagger.psm1 +++ b/PSSwagger/PSSwagger.psm1 @@ -61,7 +61,15 @@ Microsoft.PowerShell.Utility\Import-LocalizedData LocalizedData -filename PSSwa .PARAMETER Header Text to include as a header comment in the PSSwagger generated files. It also can be a path to a .txt file with the content to be added as header in the PSSwagger generated files. - Specify 'NONE' to suppress the default header. + + Supported predefined license header values: + - NONE: Suppresses the default header. + - MICROSOFT_MIT: Adds predefined Microsoft MIT license text with default PSSwagger code generation header content. + - MICROSOFT_MIT_NO_VERSION: Adds predefined Microsoft MIT license text with default PSSwagger code generation header content without version. + - MICROSOFT_MIT_NO_CODEGEN: Adds predefined Microsoft MIT license text without default PSSwagger code generation header content. + - MICROSOFT_APACHE: Adds predefined Microsoft Apache license text with default PSSwagger code generation header content. + - MICROSOFT_APACHE_NO_VERSION: Adds predefined Microsoft Apache license text with default PSSwagger code generation header content without version. + - MICROSOFT_APACHE_NO_CODEGEN: Adds predefined Microsoft Apache license text without default PSSwagger code generation header content. .PARAMETER NoAssembly Switch to disable saving the precompiled module assembly and instead enable dynamic compilation. @@ -931,6 +939,30 @@ function Get-HeaderContent { $Header = $swaggerDict['Info'].Header $HeaderContent = ($DefaultGeneratedFileHeader -f $MyInvocation.MyCommand.Module.Version) if ($Header) { + switch ($Header) { + 'MICROSOFT_MIT' { + return $MicrosoftMitLicenseHeader + [Environment]::NewLine + [Environment]::NewLine + $HeaderContent + } + 'MICROSOFT_MIT_NO_VERSION' { + return $MicrosoftMitLicenseHeader + [Environment]::NewLine + [Environment]::NewLine + $DefaultGeneratedFileHeaderWithoutVersion + } + 'MICROSOFT_MIT_NO_CODEGEN' { + return $MicrosoftMitLicenseHeader + } + 'MICROSOFT_APACHE' { + return $MicrosoftApacheLicenseHeader + [Environment]::NewLine + [Environment]::NewLine + $HeaderContent + } + 'MICROSOFT_APACHE_NO_VERSION' { + return $MicrosoftApacheLicenseHeader + [Environment]::NewLine + [Environment]::NewLine + $DefaultGeneratedFileHeaderWithoutVersion + } + 'MICROSOFT_APACHE_NO_CODEGEN' { + return $MicrosoftApacheLicenseHeader + } + 'NONE' { + return '' + } + } + $HeaderFilePath = Resolve-Path -Path $Header -ErrorAction Ignore if ($HeaderFilePath) { # Selecting the first path when multiple paths are returned by Resolve-Path cmdlet. @@ -958,9 +990,6 @@ function Get-HeaderContent { Write-Error -Message $message -ErrorId 'HeaderFilePathNotFound' -Category InvalidArgument return } - elseif ($Header -eq 'NONE') { - $HeaderContent = $null - } else { $HeaderContent = $Header } diff --git a/Tests/PSSwagger.Unit.Tests.ps1 b/Tests/PSSwagger.Unit.Tests.ps1 index 5da5fcd..736458a 100644 --- a/Tests/PSSwagger.Unit.Tests.ps1 +++ b/Tests/PSSwagger.Unit.Tests.ps1 @@ -238,6 +238,34 @@ Describe "PSSwagger Unit Tests" -Tag @('BVT', 'DRT', 'UnitTest', 'P0') { It "Get-HeaderContent should return content from the header file" { Get-HeaderContent -SwaggerDict @{Info = @{Header = $ValidHeaderFilePath}} | Should BeExactly $HeaderFileContent } + + It "Get-HeaderContent should return MICROSOFT_MIT header content with '-Header MICROSOFT_MIT'" { + $ExpectedHeaderContent = $MicrosoftMitLicenseHeader + [Environment]::NewLine + [Environment]::NewLine + $DefaultGeneratedFileHeaderString + Get-HeaderContent -SwaggerDict @{Info = @{Header = 'MICROSOFT_MIT'}} | Should BeExactly $ExpectedHeaderContent + } + + It "Get-HeaderContent should return MICROSOFT_MIT_NO_VERSION header content with '-Header MICROSOFT_MIT_NO_VERSION'" { + $ExpectedHeaderContent = $MicrosoftMitLicenseHeader + [Environment]::NewLine + [Environment]::NewLine + $DefaultGeneratedFileHeaderWithoutVersion + Get-HeaderContent -SwaggerDict @{Info = @{Header = 'MICROSOFT_MIT_NO_VERSION'}} | Should BeExactly $ExpectedHeaderContent + } + + It "Get-HeaderContent should return MICROSOFT_MIT_NO_CODEGEN header content with '-Header MICROSOFT_MIT_NO_CODEGEN'" { + Get-HeaderContent -SwaggerDict @{Info = @{Header = 'MICROSOFT_MIT_NO_CODEGEN'}} | Should BeExactly $MicrosoftMitLicenseHeader + } + + It "Get-HeaderContent should return MICROSOFT_APACHE header content with '-Header MICROSOFT_APACHE'" { + $ExpectedHeaderContent = $MicrosoftApacheLicenseHeader + [Environment]::NewLine + [Environment]::NewLine + $DefaultGeneratedFileHeaderString + Get-HeaderContent -SwaggerDict @{Info = @{Header = 'MICROSOFT_APACHE'}} | Should BeExactly $ExpectedHeaderContent + } + + It "Get-HeaderContent should return MICROSOFT_APACHE_NO_VERSION header content with '-Header MICROSOFT_APACHE_NO_VERSION'" { + $ExpectedHeaderContent = $MicrosoftApacheLicenseHeader + [Environment]::NewLine + [Environment]::NewLine + $DefaultGeneratedFileHeaderWithoutVersion + Get-HeaderContent -SwaggerDict @{Info = @{Header = 'MICROSOFT_APACHE_NO_VERSION'}} | Should BeExactly $ExpectedHeaderContent + } + + It "Get-HeaderContent should return MICROSOFT_APACHE_NO_CODEGEN header content with '-Header MICROSOFT_APACHE_NO_CODEGEN'" { + Get-HeaderContent -SwaggerDict @{Info = @{Header = 'MICROSOFT_APACHE_NO_CODEGEN'}} | Should BeExactly $MicrosoftApacheLicenseHeader + } } Context "Get-CSharpModelName Unit Tests" { diff --git a/docs/commands/New-PSSwaggerModule.md b/docs/commands/New-PSSwaggerModule.md index cf6deb6..277547a 100644 --- a/docs/commands/New-PSSwaggerModule.md +++ b/docs/commands/New-PSSwaggerModule.md @@ -142,7 +142,15 @@ Accept wildcard characters: False ### -Header Text to include as a header comment in the PSSwagger generated files. It also can be a path to a .txt file with the content to be added as header in the PSSwagger generated files. -Specify 'NONE' to suppress the default header. + +Supported predefined license header values: +- NONE: Suppresses the default header. +- MICROSOFT_MIT: Adds predefined Microsoft MIT license text with default PSSwagger code generation header content. +- MICROSOFT_MIT_NO_VERSION: Adds predefined Microsoft MIT license text with default PSSwagger code generation header content without version. +- MICROSOFT_MIT_NO_CODEGEN: Adds predefined Microsoft MIT license text without default PSSwagger code generation header content. +- MICROSOFT_APACHE: Adds predefined Microsoft Apache license text with default PSSwagger code generation header content. +- MICROSOFT_APACHE_NO_VERSION: Adds predefined Microsoft Apache license text with default PSSwagger code generation header content without version. +- MICROSOFT_APACHE_NO_CODEGEN: Adds predefined Microsoft Apache license text without default PSSwagger code generation header content. ```yaml Type: String[]