Skip to content

Commit 86fb17e

Browse files
committed
fix: Copy module to a temp directory and use it from there to avoid not being able to delete locked files from repository
1 parent 7addef4 commit 86fb17e

File tree

1 file changed

+23
-12
lines changed

1 file changed

+23
-12
lines changed

_InitializeRepository.ps1

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,19 @@ If you have made changes to any files you may want to commit them before continu
1414

1515
[string] $organizationName = Read-Host -Prompt "Enter your name, or the the name of your organization (e.g. 'My Company'). This will be used in the module manifest and repository license"
1616

17+
Write-Information "Copying template repository module files to a temporary location."
18+
[string] $tempModuleDirectoryPath = CopyTemplateModuleFilesToTempDirectory -templateModuleDirectoryPath $TemplateModuleDirectoryPath
19+
1720
Write-Information "Removing all files from this repository so they can be replaced with template repository files."
18-
RemoveAllRepositoryFilesExceptTemplateModuleFiles -repositoryDirectoryPath $RepositoryDirectoryPath
21+
RemoveAllUnnecessaryRepositoryFiles -repositoryDirectoryPath $RepositoryDirectoryPath
1922

2023
Write-Information "Creating the template repository files."
21-
Import-Module -Name $TemplateModuleDirectoryPath -Force
24+
Import-Module -Name $tempModuleDirectoryPath -Force
2225
New-PowerShellScriptModuleRepository -RepositoryDirectoryPath $RepositoryDirectoryPath -ModuleName $moduleName -OrganizationName $organizationName
23-
Remove-Module -Name ScriptModuleRepositoryTemplate -Force
26+
Remove-Module -Name $TemplateModuleName -Force
2427

25-
Write-Information "Removing the template module files since we are done using it to create the template repository files."
26-
RemoveTemplateModuleFiles -templateModuleDirectoryPath $TemplateModuleDirectoryPath
28+
Write-Information "Removing the temporary template module files since we are done using it to create the template repository files."
29+
RemoveTemporaryModuleDirectory -tempModuleDirectoryPath $tempModuleDirectoryPath
2730

2831
Write-Host -ForegroundColor Green "Repo initialization complete. You can now commit the changes to your repository."
2932
}
@@ -32,16 +35,24 @@ Begin
3235
{
3336
$InformationPreference = 'Continue'
3437
[string] $RepositoryDirectoryPath = Resolve-Path -Path $PSScriptRoot
35-
[string] $TemplateModuleDirectoryPath = "$RepositoryDirectoryPath\src\ScriptModuleRepositoryTemplate"
38+
[string] $TemplateModuleName = 'ScriptModuleRepositoryTemplate'
39+
[string] $TemplateModuleDirectoryPath = "$RepositoryDirectoryPath\src\$TemplateModuleName"
40+
41+
function CopyTemplateModuleFilesToTempDirectory([string] $templateModuleDirectoryPath)
42+
{
43+
[string] $templateModuleName = Split-Path -Path $templateModuleDirectoryPath -Leaf
44+
[string] $tempModuleDirectoryPath = [System.IO.Path]::Combine([System.IO.Path]::GetTempPath(), (New-Guid).Guid, $templateModuleName)
45+
Copy-Item -Path $templateModuleDirectoryPath -Destination $tempModuleDirectoryPath -Recurse -Force
46+
return $tempModuleDirectoryPath
47+
}
3648

37-
function RemoveAllRepositoryFilesExceptTemplateModuleFiles([string] $repositoryDirectoryPath)
49+
function RemoveAllUnnecessaryRepositoryFiles([string] $repositoryDirectoryPath)
3850
{
3951
# Delete all files except the ones we want to keep.
4052
Get-ChildItem -Path $repositoryDirectoryPath -Recurse -File |
4153
Where-Object {
4254
$_.FullName -notlike "$repositoryDirectoryPath\.git\*" -and # Don't delete the .git directory.
43-
$_.FullName -notlike "$repositoryDirectoryPath\_InitializeRepository.ps1" -and # Don't delete this script.
44-
$_.FullName -notlike "$TemplateModuleDirectoryPath\*" # Don't delete the template module files.
55+
$_.FullName -notlike "$repositoryDirectoryPath\_InitializeRepository.ps1" # Don't delete this script.
4556
} |
4657
Remove-Item -Force
4758

@@ -52,11 +63,11 @@ Begin
5263
Remove-Item -Force
5364
}
5465

55-
function RemoveTemplateModuleFiles([string] $templateModuleDirectoryPath)
66+
function RemoveTemporaryModuleDirectory([string] $tempModuleDirectoryPath)
5667
{
57-
if (Test-Path -Path $templateModuleDirectoryPath -PathType Container)
68+
if (Test-Path -Path $tempModuleDirectoryPath -PathType Container)
5869
{
59-
Remove-Item -Path $templateModuleDirectoryPath -Recurse -Force
70+
Remove-Item -Path $tempModuleDirectoryPath -Recurse -Force -ErrorAction SilentlyContinue
6071
}
6172
}
6273
}

0 commit comments

Comments
 (0)