]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/scripts/addPoshVcpkgToPowershellProfile.ps1
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / tools / vcpkg / scripts / addPoshVcpkgToPowershellProfile.ps1
diff --git a/ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/scripts/addPoshVcpkgToPowershellProfile.ps1 b/ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/scripts/addPoshVcpkgToPowershellProfile.ps1
new file mode 100644 (file)
index 0000000..185f658
--- /dev/null
@@ -0,0 +1,56 @@
+[CmdletBinding()]
+param()
+
+function findExistingImportModuleDirectives([Parameter(Mandatory=$true)][string]$path)
+{
+    if (!(Test-Path $path))
+    {
+        return
+    }
+
+    $fileContents = Get-Content $path
+    $fileContents -match 'Import-Module.+?(?=posh-vcpkg)'
+    return
+}
+
+$scriptsDir = split-path -parent $script:MyInvocation.MyCommand.Definition
+
+$profileEntry = "Import-Module '$scriptsDir\posh-vcpkg'"
+$profilePath = $PROFILE # Implicit PowerShell variable
+$profileDir = Split-Path $profilePath -Parent
+if (!(Test-Path $profileDir))
+{
+    New-Item -ItemType Directory -Path $profileDir | Out-Null
+}
+
+Write-Host "`nAdding the following line to ${profilePath}:"
+Write-Host "    $profileEntry"
+
+# @() Needed to force Array in PowerShell 2.0
+[Array]$existingImports = @(findExistingImportModuleDirectives $profilePath)
+if ($existingImports.Count -gt 0)
+{
+    $existingImportsOut = $existingImports -join "`n    "
+    Write-Host "`nposh-vcpkg is already imported to your PowerShell profile. The following entries were found:"
+    Write-Host "    $existingImportsOut"
+    Write-Host "`nPlease make sure you have started a new PowerShell window for the changes to take effect."
+    return
+}
+
+# Modifying the profile will invalidate any signatures.
+# Posh-git does the following check, so we should too.
+# https://github.com/dahlbyk/posh-git/blob/master/src/Utils.ps1
+# If the profile script exists and is signed, then we should not modify it
+if (Test-Path $profilePath)
+{
+    $sig = Get-AuthenticodeSignature $profilePath
+    if ($null -ne $sig.SignerCertificate)
+    {
+        Write-Warning "Skipping add of posh-vcpkg import to profile; '$profilePath' appears to be signed."
+        Write-Warning "Please manually add the line '$profileEntry' to your profile and resign it."
+        return
+    }
+}
+
+Add-Content $profilePath -Value "`n$profileEntry" -Encoding UTF8
+Write-Host "`nSuccessfully added posh-vcpkg to your PowerShell profile. Please start a new PowerShell window for the changes to take effect."