diff options
author | marcinzelent <zelent.marcin@protonmail.com> | 2017-11-23 10:16:47 +0100 |
---|---|---|
committer | marcinzelent <zelent.marcin@protonmail.com> | 2017-11-23 10:16:47 +0100 |
commit | 956d0c668bf20cb461c2c48ce388087bc6618886 (patch) | |
tree | f3eea2ad9ecf1dae73e1a20e3bd16cfde0e1ce45 /packages/Newtonsoft.Json.6.0.4/tools | |
parent | 462aed0ddd5dd5cca7fb51175cc0829650e4916c (diff) |
Changed configs.
Diffstat (limited to 'packages/Newtonsoft.Json.6.0.4/tools')
-rw-r--r-- | packages/Newtonsoft.Json.6.0.4/tools/install.ps1 | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/packages/Newtonsoft.Json.6.0.4/tools/install.ps1 b/packages/Newtonsoft.Json.6.0.4/tools/install.ps1 new file mode 100644 index 0000000..de74a5b --- /dev/null +++ b/packages/Newtonsoft.Json.6.0.4/tools/install.ps1 @@ -0,0 +1,93 @@ +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://james.newtonking.com/json"
+ $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
+{
+ # stop potential errors from bubbling up
+ # worst case the splash page won't open
+}
+
+# yolo
\ No newline at end of file |