From 16c30e9803004038316e0e373465829da1e6d98c Mon Sep 17 00:00:00 2001 From: Kevin Zhang Date: Thu, 25 Nov 2021 15:47:11 -0600 Subject: [PATCH 1/3] Refactor Shell Command --- .../SharedCommands/ShellCommand.cs | 13 --- Plugins/Flow.Launcher.Plugin.Shell/Main.cs | 90 +++++++++++-------- 2 files changed, 51 insertions(+), 52 deletions(-) diff --git a/Flow.Launcher.Plugin/SharedCommands/ShellCommand.cs b/Flow.Launcher.Plugin/SharedCommands/ShellCommand.cs index c5d43a3d9..8a8c5793d 100644 --- a/Flow.Launcher.Plugin/SharedCommands/ShellCommand.cs +++ b/Flow.Launcher.Plugin/SharedCommands/ShellCommand.cs @@ -59,18 +59,5 @@ namespace Flow.Launcher.Plugin.SharedCommands GetWindowText(hwnd, sb, sb.Capacity); return sb.ToString(); } - - public static ProcessStartInfo SetProcessStartInfo(this string fileName, string workingDirectory = "", string arguments = "", string verb = "") - { - var info = new ProcessStartInfo - { - FileName = fileName, - WorkingDirectory = workingDirectory, - Arguments = arguments, - Verb = verb - }; - - return info; - } } } diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Main.cs b/Plugins/Flow.Launcher.Plugin.Shell/Main.cs index f9fc239a5..9af5bfec8 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.Shell/Main.cs @@ -193,51 +193,63 @@ namespace Flow.Launcher.Plugin.Shell var workingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); var runAsAdministratorArg = !runAsAdministrator && !_settings.RunAsAdministrator ? "" : "runas"; - ProcessStartInfo info; - if (_settings.Shell == Shell.Cmd) + ProcessStartInfo info = new() { - var arguments = _settings.LeaveShellOpen ? $"/k \"{command}\"" : $"/c \"{command}\" & pause"; - - info = ShellCommand.SetProcessStartInfo("cmd.exe", workingDirectory, arguments, runAsAdministratorArg); - } - else if (_settings.Shell == Shell.Powershell) + Verb = runAsAdministratorArg, + WorkingDirectory = workingDirectory, + }; + switch (_settings.Shell) { - string arguments; - if (_settings.LeaveShellOpen) - { - arguments = $"-NoExit \"{command}\""; - } - else - { - arguments = $"\"{command} ; Read-Host -Prompt \\\"Press Enter to continue\\\"\""; - } - - info = ShellCommand.SetProcessStartInfo("powershell.exe", workingDirectory, arguments, runAsAdministratorArg); - } - else if (_settings.Shell == Shell.RunCommand) - { - var parts = command.Split(new[] { ' ' }, 2); - if (parts.Length == 2) - { - var filename = parts[0]; - if (ExistInPath(filename)) + case Shell.Cmd: { - var arguments = parts[1]; - info = ShellCommand.SetProcessStartInfo(filename, workingDirectory, arguments, runAsAdministratorArg); + info.FileName = "cmd.exe"; + info.ArgumentList.Add(_settings.LeaveShellOpen ? "/k" : "/c"); + info.ArgumentList.Add(command); + break; } - else + + case Shell.Powershell: { - info = ShellCommand.SetProcessStartInfo(command, verb: runAsAdministratorArg); + info.FileName = "powershell.exe"; + if (_settings.LeaveShellOpen) + { + info.ArgumentList.Add("-NoExit"); + info.ArgumentList.Add(command); + } + else + { + info.ArgumentList.Add("-Command"); + info.ArgumentList.Add(command); + } + break; } - } - else - { - info = ShellCommand.SetProcessStartInfo(command, verb: runAsAdministratorArg); - } - } - else - { - throw new NotImplementedException(); + + case Shell.RunCommand: + { + var parts = command.Split(new[] { ' ' }, 2); + if (parts.Length == 2) + { + var filename = parts[0]; + if (ExistInPath(filename)) + { + var arguments = parts[1]; + info.FileName = filename; + info.ArgumentList.Add(arguments); + } + else + { + info.FileName = command; + } + } + else + { + info.FileName = command; + } + + break; + } + default: + throw new NotImplementedException(); } info.UseShellExecute = true; From b4f06caef53a308a3cf5de89fd3f0ab174d6ce86 Mon Sep 17 00:00:00 2001 From: Kevin Zhang Date: Thu, 25 Nov 2021 15:54:00 -0600 Subject: [PATCH 2/3] revert method removal --- Flow.Launcher.Plugin/SharedCommands/ShellCommand.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Flow.Launcher.Plugin/SharedCommands/ShellCommand.cs b/Flow.Launcher.Plugin/SharedCommands/ShellCommand.cs index 8a8c5793d..c5d43a3d9 100644 --- a/Flow.Launcher.Plugin/SharedCommands/ShellCommand.cs +++ b/Flow.Launcher.Plugin/SharedCommands/ShellCommand.cs @@ -59,5 +59,18 @@ namespace Flow.Launcher.Plugin.SharedCommands GetWindowText(hwnd, sb, sb.Capacity); return sb.ToString(); } + + public static ProcessStartInfo SetProcessStartInfo(this string fileName, string workingDirectory = "", string arguments = "", string verb = "") + { + var info = new ProcessStartInfo + { + FileName = fileName, + WorkingDirectory = workingDirectory, + Arguments = arguments, + Verb = verb + }; + + return info; + } } } From 056bffeda9df79b7eb14b57a68b4d0c4fcae643b Mon Sep 17 00:00:00 2001 From: Jeremy Date: Mon, 29 Nov 2021 06:34:58 +1100 Subject: [PATCH 3/3] Shell version bump --- Plugins/Flow.Launcher.Plugin.Shell/plugin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Flow.Launcher.Plugin.Shell/plugin.json b/Plugins/Flow.Launcher.Plugin.Shell/plugin.json index 6b20eeef9..b71dba2da 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/plugin.json +++ b/Plugins/Flow.Launcher.Plugin.Shell/plugin.json @@ -4,7 +4,7 @@ "Name": "Shell", "Description": "Provide executing commands from Flow Launcher", "Author": "qianlifeng", - "Version": "1.4.5", + "Version": "1.4.6", "Language": "csharp", "Website": "https://github.com/Flow-Launcher/Flow.Launcher", "ExecuteFileName": "Flow.Launcher.Plugin.Shell.dll",