diff --git a/powershell/autorest-configuration.md b/powershell/autorest-configuration.md index 048f6282ca0..2c9dd6aacab 100644 --- a/powershell/autorest-configuration.md +++ b/powershell/autorest-configuration.md @@ -63,6 +63,7 @@ module-folder: $(current-folder)/generated cmdlet-folder: $(module-folder)/cmdlets model-cmdlet-folder: $(module-folder)/model-cmdlets custom-cmdlet-folder: $(current-folder)/custom +utils-cmdlet-folder: $(current-folder)/utils internal-cmdlet-folder: $(current-folder)/internal test-folder: $(current-folder)/test runtime-folder: $(module-folder)/runtime diff --git a/powershell/generators/nuspec.ts b/powershell/generators/nuspec.ts index fb44a1df572..598b8250418 100644 --- a/powershell/generators/nuspec.ts +++ b/powershell/generators/nuspec.ts @@ -41,6 +41,7 @@ export async function generateNuspec(project: Project | NewProject) { + `, undefined, 'source-file-other'); } diff --git a/powershell/internal/project.ts b/powershell/internal/project.ts index 1d0feb10bb0..9afaf33d7e8 100644 --- a/powershell/internal/project.ts +++ b/powershell/internal/project.ts @@ -92,6 +92,7 @@ export class Project extends codeDomProject { public cmdletFolder!: string; public customFolder!: string; + public utilsFolder!: string; public internalFolder!: string; public testFolder!: string; public runtimeFolder!: string; @@ -193,6 +194,7 @@ export class Project extends codeDomProject { this.cmdletFolder = await this.state.getValue('cmdlet-folder'); this.customFolder = await this.state.getValue('custom-cmdlet-folder'); + this.utilsFolder = await this.state.getValue('utils-cmdlet-folder'); this.internalFolder = await this.state.getValue('internal-cmdlet-folder'); this.testFolder = await this.state.getValue('test-folder'); this.runtimeFolder = await this.state.getValue('runtime-folder'); @@ -250,6 +252,7 @@ export class NewProject extends codeDomProject { public cmdletFolder!: string; public customFolder!: string; + public utilsFolder!: string; public internalFolder!: string; public testFolder!: string; public runtimeFolder!: string; @@ -353,6 +356,7 @@ export class NewProject extends codeDomProject { this.cmdletFolder = await this.state.getValue('cmdlet-folder'); this.customFolder = await this.state.getValue('custom-cmdlet-folder'); + this.utilsFolder = await this.state.getValue('utils-cmdlet-folder'); this.internalFolder = await this.state.getValue('internal-cmdlet-folder'); this.testFolder = await this.state.getValue('test-folder'); this.runtimeFolder = await this.state.getValue('runtime-folder'); diff --git a/powershell/plugins/powershell-v2.ts b/powershell/plugins/powershell-v2.ts index 12d8802b7b1..b92c5643a41 100644 --- a/powershell/plugins/powershell-v2.ts +++ b/powershell/plugins/powershell-v2.ts @@ -32,6 +32,9 @@ async function copyRequiredFiles(project: NewProject) { // Runtime files await copyResources(join(resources, 'psruntime'), async (fname, content) => project.state.writeFile(join(project.runtimeFolder, fname), content, undefined, sourceFileCSharp), project.overrides, transformOutput); + // utils cmdlets + await copyResources(join(resources, 'utils'), async (fname, content) => project.state.writeFile(join(project.utilsFolder, fname), content, undefined, sourceFileCSharp), project.overrides, transformOutput); + // Modules files await copyBinaryResources(join(resources, 'modules'), async (fname, content) => project.state.writeFile(join(project.dependencyModuleFolder, fname), content, undefined, 'binary-file')); diff --git a/powershell/resources/utils/Unprotect-SecureString.ps1 b/powershell/resources/utils/Unprotect-SecureString.ps1 new file mode 100644 index 00000000000..cb05b51a622 --- /dev/null +++ b/powershell/resources/utils/Unprotect-SecureString.ps1 @@ -0,0 +1,16 @@ +#This script converts securestring to plaintext + +param( + [Parameter(Mandatory, ValueFromPipeline)] + [System.Security.SecureString] + ${SecureString} +) + +$ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecureString) +try { + $plaintext = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr) +} finally { + [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr) +} + +return $plaintext \ No newline at end of file diff --git a/tests-upgrade/AutoRestUpgradeTest.ps1 b/tests-upgrade/AutoRestUpgradeTest.ps1 index 938758f39bf..66c2e796052 100644 --- a/tests-upgrade/AutoRestUpgradeTest.ps1 +++ b/tests-upgrade/AutoRestUpgradeTest.ps1 @@ -66,6 +66,9 @@ function IsNeedIgnore([string]$inputFileName , [Array]$ignoreArray) { $Ignore =$True break + } elseif ($ignoreDetail.Contains("*.") -and $inputFileName.EndsWith($ignoreDetail.Split(".")[-1])) { + $Ignore =$True + break } } return $Ignore @@ -117,8 +120,8 @@ function CompareGeneratedCode([string]$inputSourcePath,[string]$inputTargetPath, #in m3Path cd $inputSourcePath $initFileList = Get-ChildItem -Recurse -force - $initIgnoreFileList = (($inputSourcePath+'\generated\modules'), ($inputSourcePath+'\.gitignore'),($inputSourcePath+'\tools\Resources\.gitignore')) - $targetIgnoreFileList = (($inputTargetPath+'\generated\modules'), ($inputTargetPath+'\.gitignore'),($inputTargetPath+'\tools\Resources\.gitignore')) + $initIgnoreFileList = (($inputSourcePath+'\generated\modules'), ($inputSourcePath+'\utils'), ($inputSourcePath+'\*.nuspec'), ($inputSourcePath+'\.gitignore'),($inputSourcePath+'\tools\Resources\.gitignore')) + $targetIgnoreFileList = (($inputTargetPath+'\generated\modules'), ($inputTargetPath+'\utils'),($inputTargetPath+'\*.nuspec'),($inputTargetPath+'\.gitignore'),($inputTargetPath+'\tools\Resources\.gitignore')) #foreach initFileList and get the hashcode of them foreach( $initFile in $initFileList) {