Inegrate calendi in meeting Schedule
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
3.2 KiB

  1. # set output encoding
  2. $OutputEncoding = [Text.UTF8Encoding]::UTF8
  3. # company name placeholder
  4. $oldCompanyName="AbpCompanyName"
  5. # your company name
  6. $newCompanyName="YourCompanyName"
  7. # project name placeholder
  8. $oldProjectName="MeetingSchedule"
  9. # your project name
  10. $newProjectName="YourProjectName"
  11. # file type
  12. $fileType="FileInfo"
  13. # directory type
  14. $dirType="DirectoryInfo"
  15. # copy
  16. Write-Host 'Start copy folders...'
  17. $newRoot=$newCompanyName+"."+$newProjectName
  18. mkdir $newRoot
  19. Copy-Item -Recurse .\aspnet-core\ .\$newRoot\
  20. Copy-Item -Recurse .\vue\ .\$newRoot\
  21. Copy-Item .gitignore .\$newRoot\
  22. Copy-Item LICENSE .\$newRoot\
  23. Copy-Item README.md .\$newRoot\
  24. # folders to deal with
  25. $slnFolder = (Get-Item -Path "./$newRoot/aspnet-core/" -Verbose).FullName
  26. $vueFolder = (Get-Item -Path "./$newRoot/vue/" -Verbose).FullName
  27. function Rename {
  28. param (
  29. $TargetFolder,
  30. $PlaceHolderCompanyName,
  31. $PlaceHolderProjectName,
  32. $NewCompanyName,
  33. $NewProjectName
  34. )
  35. # file extensions to deal with
  36. $include=@("*.cs","*.cshtml","*.asax","*.ps1","*.ts","*.csproj","*.sln","*.xaml","*.json","*.js","*.xml","*.config","Dockerfile")
  37. $elapsed = [System.Diagnostics.Stopwatch]::StartNew()
  38. Write-Host "[$TargetFolder]Start rename folder..."
  39. # rename folder
  40. Ls $TargetFolder -Recurse | Where { $_.GetType().Name -eq $dirType -and ($_.Name.Contains($PlaceHolderCompanyName) -or $_.Name.Contains($PlaceHolderProjectName)) } | ForEach-Object{
  41. Write-Host 'directory ' $_.FullName
  42. $newDirectoryName=$_.Name.Replace($PlaceHolderCompanyName,$NewCompanyName).Replace($PlaceHolderProjectName,$NewProjectName)
  43. Rename-Item $_.FullName $newDirectoryName
  44. }
  45. Write-Host "[$TargetFolder]End rename folder."
  46. Write-Host '-------------------------------------------------------------'
  47. # replace file content and rename file name
  48. Write-Host "[$TargetFolder]Start replace file content and rename file name..."
  49. Ls $TargetFolder -Include $include -Recurse | Where { $_.GetType().Name -eq $fileType} | ForEach-Object{
  50. $fileText = Get-Content $_ -Raw -Encoding UTF8
  51. if($fileText.Length -gt 0 -and ($fileText.contains($PlaceHolderCompanyName) -or $fileText.contains($PlaceHolderProjectName))){
  52. $fileText.Replace($PlaceHolderCompanyName,$NewCompanyName).Replace($PlaceHolderProjectName,$NewProjectName) | Set-Content $_ -Encoding UTF8
  53. Write-Host 'file(change text) ' $_.FullName
  54. }
  55. If($_.Name.contains($PlaceHolderCompanyName) -or $_.Name.contains($PlaceHolderProjectName)){
  56. $newFileName=$_.Name.Replace($PlaceHolderCompanyName,$NewCompanyName).Replace($PlaceHolderProjectName,$NewProjectName)
  57. Rename-Item $_.FullName $newFileName
  58. Write-Host 'file(change name) ' $_.FullName
  59. }
  60. }
  61. Write-Host "[$TargetFolder]End replace file content and rename file name."
  62. Write-Host '-------------------------------------------------------------'
  63. $elapsed.stop()
  64. write-host "[$TargetFolder]Total Time Cost: $($elapsed.Elapsed.ToString())"
  65. }
  66. Rename -TargetFolder $slnFolder -PlaceHolderCompanyName $oldCompanyName -PlaceHolderProjectName $oldProjectName -NewCompanyName $newCompanyName -NewProjectName $newProjectName
  67. Rename -TargetFolder $vueFolder -PlaceHolderCompanyName $oldCompanyName -PlaceHolderProjectName $oldProjectName -NewCompanyName $newCompanyName -NewProjectName $newProjectName