diff options
| author | Carver Harrison <[email protected]> | 2016-07-24 14:56:02 -0700 |
|---|---|---|
| committer | Carver Harrison <[email protected]> | 2016-07-24 14:56:02 -0700 |
| commit | 321ddfc66a0a366efa64506c0c33316ca57f251d (patch) | |
| tree | dea2f19fd5a33246e305a3de333a1e29574322b0 /source/packages/Newtonsoft.Json.8.0.2/tools | |
| parent | bf7a488011c09be39bdb4980c2bb020cb1fdb71a (diff) | |
| download | shiftos-c--321ddfc66a0a366efa64506c0c33316ca57f251d.tar.gz shiftos-c--321ddfc66a0a366efa64506c0c33316ca57f251d.tar.bz2 shiftos-c--321ddfc66a0a366efa64506c0c33316ca57f251d.zip | |
HOLY **** THATS A LOT OFF ADDIITIONS
Diffstat (limited to 'source/packages/Newtonsoft.Json.8.0.2/tools')
| -rw-r--r-- | source/packages/Newtonsoft.Json.8.0.2/tools/install.ps1 | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/source/packages/Newtonsoft.Json.8.0.2/tools/install.ps1 b/source/packages/Newtonsoft.Json.8.0.2/tools/install.ps1 new file mode 100644 index 0000000..0cebb5e --- /dev/null +++ b/source/packages/Newtonsoft.Json.8.0.2/tools/install.ps1 @@ -0,0 +1,116 @@ +param($installPath, $toolsPath, $package, $project) + +# open json.net splash page on package install +# don't open if json.net is installed as a dependency + +try +{ + $url = "http://www.newtonsoft.com/json/install?version=" + $package.Version + $dte2 = Get-Interface $dte ([EnvDTE80.DTE2]) + + if ($dte2.ActiveWindow.Caption -eq "Package Manager Console") + { + # user is installing from VS NuGet console + # get reference to the window, the console host and the input history + # show webpage if "install-package newtonsoft.json" was last input + + $consoleWindow = $(Get-VSComponentModel).GetService([NuGetConsole.IPowerConsoleWindow]) + + $props = $consoleWindow.GetType().GetProperties([System.Reflection.BindingFlags]::Instance -bor ` + [System.Reflection.BindingFlags]::NonPublic) + + $prop = $props | ? { $_.Name -eq "ActiveHostInfo" } | select -first 1 + if ($prop -eq $null) { return } + + $hostInfo = $prop.GetValue($consoleWindow) + if ($hostInfo -eq $null) { return } + + $history = $hostInfo.WpfConsole.InputHistory.History + + $lastCommand = $history | select -last 1 + + if ($lastCommand) + { + $lastCommand = $lastCommand.Trim().ToLower() + if ($lastCommand.StartsWith("install-package") -and $lastCommand.Contains("newtonsoft.json")) + { + $dte2.ItemOperations.Navigate($url) | Out-Null + } + } + } + else + { + # user is installing from VS NuGet dialog + # get reference to the window, then smart output console provider + # show webpage if messages in buffered console contains "installing...newtonsoft.json" in last operation + + $instanceField = [NuGet.Dialog.PackageManagerWindow].GetField("CurrentInstance", [System.Reflection.BindingFlags]::Static -bor ` + [System.Reflection.BindingFlags]::NonPublic) + + $consoleField = [NuGet.Dialog.PackageManagerWindow].GetField("_smartOutputConsoleProvider", [System.Reflection.BindingFlags]::Instance -bor ` + [System.Reflection.BindingFlags]::NonPublic) + + if ($instanceField -eq $null -or $consoleField -eq $null) { return } + + $instance = $instanceField.GetValue($null) + + if ($instance -eq $null) { return } + + $consoleProvider = $consoleField.GetValue($instance) + if ($consoleProvider -eq $null) { return } + + $console = $consoleProvider.CreateOutputConsole($false) + + $messagesField = $console.GetType().GetField("_messages", [System.Reflection.BindingFlags]::Instance -bor ` + [System.Reflection.BindingFlags]::NonPublic) + if ($messagesField -eq $null) { return } + + $messages = $messagesField.GetValue($console) + if ($messages -eq $null) { return } + + $operations = $messages -split "==============================" + + $lastOperation = $operations | select -last 1 + + if ($lastOperation) + { + $lastOperation = $lastOperation.ToLower() + + $lines = $lastOperation -split "`r`n" + + $installMatch = $lines | ? { $_.StartsWith("------- installing...newtonsoft.json ") } | select -first 1 + + if ($installMatch) + { + $dte2.ItemOperations.Navigate($url) | Out-Null + } + } + } +} +catch +{ + try + { + $pmPane = $dte2.ToolWindows.OutputWindow.OutputWindowPanes.Item("Package Manager") + + $selection = $pmPane.TextDocument.Selection + $selection.StartOfDocument($false) + $selection.EndOfDocument($true) + + if ($selection.Text.StartsWith("Attempting to gather dependencies information for package 'Newtonsoft.Json." + $package.Version + "'")) + { + # don't show on upgrade + if (!$selection.Text.Contains("Removed package")) + { + $dte2.ItemOperations.Navigate($url) | Out-Null + } + } + } + catch + { + # stop potential errors from bubbling up + # worst case the splash page won't open + } +} + +# still yolo
\ No newline at end of file |
