Skip to content
This repository was archived by the owner on Sep 27, 2019. It is now read-only.

Commit a9946e5

Browse files
authored
Add NoVersionFolder switch parameter on New-PSSwaggerModule cmdlet to not create the version folder. (#355)
Resolves #353
1 parent 248d5c2 commit a9946e5

File tree

4 files changed

+61
-8
lines changed

4 files changed

+61
-8
lines changed

PSSwagger/PSSwagger.psm1

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ Microsoft.PowerShell.Utility\Import-LocalizedData LocalizedData -filename PSSwa
7272
.PARAMETER Version
7373
Version of the generated PowerShell module.
7474
75+
.PARAMETER NoVersionFolder
76+
Switch to not create the version folder under the generated module folder.
77+
7578
.PARAMETER DefaultCommandPrefix
7679
Prefix value to be prepended to cmdlet noun or to cmdlet name without verb.
7780
@@ -163,6 +166,10 @@ function New-PSSwaggerModule
163166
[Version]
164167
$Version = '0.0.1',
165168

169+
[Parameter(Mandatory = $false)]
170+
[switch]
171+
$NoVersionFolder,
172+
166173
[Parameter(Mandatory = $false)]
167174
[string]
168175
$DefaultCommandPrefix,
@@ -449,7 +456,7 @@ function New-PSSwaggerModule
449456

450457
$nameSpace = $swaggerDict['info'].NameSpace
451458
$models = $swaggerDict['info'].Models
452-
if($PSVersionTable.PSVersion -lt '5.0.0') {
459+
if($NoVersionFolder -or $PSVersionTable.PSVersion -lt '5.0.0') {
453460
if (-not $outputDirectory.EndsWith($Name, [System.StringComparison]::OrdinalIgnoreCase)) {
454461
$outputDirectory = Join-Path -Path $outputDirectory -ChildPath $Name
455462
$SymbolPath = Join-Path -Path $SymbolPath -ChildPath $Name

Tests/PSSwaggerScenario.Tests.ps1

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1141,4 +1141,32 @@ Describe "Output type scenario tests" -Tag @('OutputType','ScenarioTest') {
11411141
$CommandInfo = Get-Command -Name Get-IotHubResourceEventHubConsumerGroup -Module $ModuleName
11421142
$CommandInfo.OutputType.Type.ToString() | Should BeExactly 'System.String'
11431143
}
1144-
}
1144+
}
1145+
1146+
Describe 'New-PSSwaggerModule cmdlet parameter tests' -Tag @('CmdletParameterTest','ScenarioTest') {
1147+
BeforeAll {
1148+
$ModuleName = 'Generated.Module.NoVersionFolder'
1149+
$SwaggerSpecPath = Join-Path -Path $PSScriptRoot -ChildPath 'Data' | Join-Path -ChildPath 'AzureExtensions' | Join-Path -ChildPath 'AzureExtensionsSpec.json'
1150+
$GeneratedPath = Join-Path -Path $PSScriptRoot -ChildPath 'Generated'
1151+
$GeneratedModuleBase = Join-Path -Path $GeneratedPath -ChildPath $ModuleName
1152+
if (Test-Path -Path $GeneratedModuleBase -PathType Container) {
1153+
Remove-Item -Path $GeneratedModuleBase -Recurse -Force
1154+
}
1155+
}
1156+
1157+
It 'Test NoVersionFolder switch parameter' {
1158+
$params = @{
1159+
SpecificationPath = $SwaggerSpecPath
1160+
Name = $ModuleName
1161+
UseAzureCsharpGenerator = $true
1162+
Path = $GeneratedPath
1163+
NoVersionFolder = $true
1164+
ConfirmBootstrap = $true
1165+
Verbose = $true
1166+
}
1167+
Invoke-NewPSSwaggerModuleCommand -NewPSSwaggerModuleParameters $params
1168+
1169+
$ModuleInfo = Import-Module $GeneratedModuleBase -Force -PassThru
1170+
$ModuleInfo.ModuleBase | Should Be $GeneratedModuleBase
1171+
}
1172+
}

Tests/TestUtilities.psm1

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ function Invoke-NewPSSwaggerModuleCommand {
7878
$NewPSSwaggerModuleParameters['NoAssembly'] = $false
7979
$NewPSSwaggerModuleParameters['ConfirmBootstrap'] = $true
8080
}
81+
elseif (-not $NewPSSwaggerModuleParameters.ContainsKey('AssemblyFileName')) {
82+
$NewPSSwaggerModuleParameters['NoAssembly'] = $true
83+
}
8184

8285
if ((Get-Variable -Name PSEdition -ErrorAction Ignore) -and ('Core' -eq $PSEdition)) {
8386
if ($IncludeAssembly) {

docs/commands/New-PSSwaggerModule.md

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,30 +14,30 @@ PowerShell command to generate the PowerShell commands for a given RESTful Web S
1414
### SpecificationPath (Default)
1515
```
1616
New-PSSwaggerModule -SpecificationPath <String> -Path <String> -Name <String> [-Version <Version>]
17-
[-DefaultCommandPrefix <String>] [-Header <String[]>] [-UseAzureCsharpGenerator] [-NoAssembly]
18-
[-PowerShellCorePath <String>] [-IncludeCoreFxAssembly] [-InstallToolsForAllUsers] [-TestBuild]
17+
[-NoVersionFolder] [-DefaultCommandPrefix <String>] [-Header <String[]>] [-UseAzureCsharpGenerator]
18+
[-NoAssembly] [-PowerShellCorePath <String>] [-IncludeCoreFxAssembly] [-InstallToolsForAllUsers] [-TestBuild]
1919
[-SymbolPath <String>] [-ConfirmBootstrap]
2020
```
2121

2222
### SdkAssemblyWithSpecificationPath
2323
```
2424
New-PSSwaggerModule -SpecificationPath <String> -Path <String> -AssemblyFileName <String>
25-
[-ClientTypeName <String>] [-ModelsName <String>] -Name <String> [-Version <Version>]
25+
[-ClientTypeName <String>] [-ModelsName <String>] -Name <String> [-Version <Version>] [-NoVersionFolder]
2626
[-DefaultCommandPrefix <String>] [-Header <String[]>] [-UseAzureCsharpGenerator]
2727
```
2828

2929
### SdkAssemblyWithSpecificationUri
3030
```
3131
New-PSSwaggerModule -SpecificationUri <Uri> -Path <String> -AssemblyFileName <String>
32-
[-ClientTypeName <String>] [-ModelsName <String>] -Name <String> [-Version <Version>]
32+
[-ClientTypeName <String>] [-ModelsName <String>] -Name <String> [-Version <Version>] [-NoVersionFolder]
3333
[-DefaultCommandPrefix <String>] [-Header <String[]>] [-UseAzureCsharpGenerator]
3434
```
3535

3636
### SpecificationUri
3737
```
3838
New-PSSwaggerModule -SpecificationUri <Uri> -Path <String> -Name <String> [-Version <Version>]
39-
[-DefaultCommandPrefix <String>] [-Header <String[]>] [-UseAzureCsharpGenerator] [-NoAssembly]
40-
[-PowerShellCorePath <String>] [-IncludeCoreFxAssembly] [-InstallToolsForAllUsers] [-TestBuild]
39+
[-NoVersionFolder] [-DefaultCommandPrefix <String>] [-Header <String[]>] [-UseAzureCsharpGenerator]
40+
[-NoAssembly] [-PowerShellCorePath <String>] [-IncludeCoreFxAssembly] [-InstallToolsForAllUsers] [-TestBuild]
4141
[-SymbolPath <String>] [-ConfirmBootstrap]
4242
```
4343

@@ -191,6 +191,21 @@ Accept pipeline input: False
191191
Accept wildcard characters: False
192192
```
193193
194+
### -NoVersionFolder
195+
Switch to not create the version folder under the generated module folder.
196+
197+
```yaml
198+
Type: SwitchParameter
199+
Parameter Sets: (All)
200+
Aliases:
201+
202+
Required: False
203+
Position: Named
204+
Default value: False
205+
Accept pipeline input: False
206+
Accept wildcard characters: False
207+
```
208+
194209
### -DefaultCommandPrefix
195210
Prefix value to be prepended to cmdlet noun or to cmdlet name without verb.
196211

0 commit comments

Comments
 (0)