diff --git a/src/modules/cmdpal/WindowsCommandPalette.sln b/src/modules/cmdpal/WindowsCommandPalette.sln index de9b6cf693..2c4e2f4fcf 100644 --- a/src/modules/cmdpal/WindowsCommandPalette.sln +++ b/src/modules/cmdpal/WindowsCommandPalette.sln @@ -20,6 +20,14 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CmdPal.Extensions EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CmdPal.Common", "src\Microsoft.CmdPal.Common\Microsoft.CmdPal.Common.csproj", "{05CDE6EE-23AE-42AF-A9F5-E398C382675F}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SpongebotExtension", "extensions\SpongebotExtension\SpongebotExtension.csproj", "{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HackerNewsExtension", "extensions\HackerNewsExtension\HackerNewsExtension.csproj", "{1A506BBA-06A9-476E-B5D3-1495F299D53F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MediaControlsExtension", "extensions\MediaControlsExtension\MediaControlsExtension.csproj", "{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProcessMonitorExtension", "extensions\ProcessMonitorExtension\ProcessMonitorExtension.csproj", "{9456257A-3292-4A8D-AF63-9830EABE7ED2}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM64 = Debug|ARM64 @@ -88,6 +96,42 @@ Global {05CDE6EE-23AE-42AF-A9F5-E398C382675F}.Release|ARM64.Build.0 = Release|arm64 {05CDE6EE-23AE-42AF-A9F5-E398C382675F}.Release|x64.ActiveCfg = Release|x64 {05CDE6EE-23AE-42AF-A9F5-E398C382675F}.Release|x64.Build.0 = Release|x64 + {57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Debug|ARM64.Build.0 = Debug|ARM64 + {57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Debug|x64.ActiveCfg = Debug|x64 + {57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Debug|x64.Build.0 = Debug|x64 + {57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Debug|x64.Deploy.0 = Debug|x64 + {57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Release|ARM64.ActiveCfg = Release|ARM64 + {57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Release|ARM64.Build.0 = Release|ARM64 + {57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Release|ARM64.Deploy.0 = Release|ARM64 + {57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Release|x64.ActiveCfg = Release|x64 + {57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Release|x64.Build.0 = Release|x64 + {57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Release|x64.Deploy.0 = Release|x64 + {1A506BBA-06A9-476E-B5D3-1495F299D53F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1A506BBA-06A9-476E-B5D3-1495F299D53F}.Debug|ARM64.Build.0 = Debug|ARM64 + {1A506BBA-06A9-476E-B5D3-1495F299D53F}.Debug|x64.ActiveCfg = Debug|x64 + {1A506BBA-06A9-476E-B5D3-1495F299D53F}.Debug|x64.Build.0 = Debug|x64 + {1A506BBA-06A9-476E-B5D3-1495F299D53F}.Release|ARM64.ActiveCfg = Release|ARM64 + {1A506BBA-06A9-476E-B5D3-1495F299D53F}.Release|ARM64.Build.0 = Release|ARM64 + {1A506BBA-06A9-476E-B5D3-1495F299D53F}.Release|x64.ActiveCfg = Release|x64 + {1A506BBA-06A9-476E-B5D3-1495F299D53F}.Release|x64.Build.0 = Release|x64 + {D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Debug|ARM64.Build.0 = Debug|ARM64 + {D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Debug|x64.ActiveCfg = Debug|x64 + {D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Debug|x64.Build.0 = Debug|x64 + {D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Release|ARM64.ActiveCfg = Release|ARM64 + {D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Release|ARM64.Build.0 = Release|ARM64 + {D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Release|x64.ActiveCfg = Release|x64 + {D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Release|x64.Build.0 = Release|x64 + {9456257A-3292-4A8D-AF63-9830EABE7ED2}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9456257A-3292-4A8D-AF63-9830EABE7ED2}.Debug|ARM64.Build.0 = Debug|ARM64 + {9456257A-3292-4A8D-AF63-9830EABE7ED2}.Debug|x64.ActiveCfg = Debug|x64 + {9456257A-3292-4A8D-AF63-9830EABE7ED2}.Debug|x64.Build.0 = Debug|x64 + {9456257A-3292-4A8D-AF63-9830EABE7ED2}.Release|ARM64.ActiveCfg = Release|ARM64 + {9456257A-3292-4A8D-AF63-9830EABE7ED2}.Release|ARM64.Build.0 = Release|ARM64 + {9456257A-3292-4A8D-AF63-9830EABE7ED2}.Release|x64.ActiveCfg = Release|x64 + {9456257A-3292-4A8D-AF63-9830EABE7ED2}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -97,6 +141,10 @@ Global {F5E5B8B9-7F51-43B8-ACED-1BD380BED98D} = {B7FF739F-7716-4FC3-B622-705486187B87} {305DD37E-C85D-4B08-AAFE-7381FA890463} = {FAA24D36-5515-467C-91E7-101A189AAF48} {79060D06-7174-4D66-8D0B-4FF021154049} = {FAA24D36-5515-467C-91E7-101A189AAF48} + {57617906-DEC8-4D62-A270-6EBE3F8E5C0D} = {B7FF739F-7716-4FC3-B622-705486187B87} + {1A506BBA-06A9-476E-B5D3-1495F299D53F} = {B7FF739F-7716-4FC3-B622-705486187B87} + {D08AE85F-B6FE-4E1C-8402-DB396B70D6DA} = {B7FF739F-7716-4FC3-B622-705486187B87} + {9456257A-3292-4A8D-AF63-9830EABE7ED2} = {B7FF739F-7716-4FC3-B622-705486187B87} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BC94BFC2-A741-4978-B6A4-9E01B7660E6B} diff --git a/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/LockScreenLogo.scale-200.png b/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/LockScreenLogo.scale-200.png deleted file mode 100644 index 7440f0d4bf..0000000000 Binary files a/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/LockScreenLogo.scale-200.png and /dev/null differ diff --git a/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/SplashScreen.scale-200.png b/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/SplashScreen.scale-200.png deleted file mode 100644 index 32f486a867..0000000000 Binary files a/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/SplashScreen.scale-200.png and /dev/null differ diff --git a/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/Square150x150Logo.scale-200.png b/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/Square150x150Logo.scale-200.png deleted file mode 100644 index 53ee3777ea..0000000000 Binary files a/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/Square150x150Logo.scale-200.png and /dev/null differ diff --git a/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/Square44x44Logo.scale-200.png b/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/Square44x44Logo.scale-200.png deleted file mode 100644 index f713bba67f..0000000000 Binary files a/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/Square44x44Logo.scale-200.png and /dev/null differ diff --git a/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png deleted file mode 100644 index dc9f5bea0c..0000000000 Binary files a/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png and /dev/null differ diff --git a/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/StoreLogo.png b/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/StoreLogo.png deleted file mode 100644 index a4586f26bd..0000000000 Binary files a/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/StoreLogo.png and /dev/null differ diff --git a/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/Wide310x150Logo.scale-200.png b/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/Wide310x150Logo.scale-200.png deleted file mode 100644 index 8b4a5d0dd5..0000000000 Binary files a/src/modules/cmdpal/extensions/AzureResourcesExtension/Assets/Wide310x150Logo.scale-200.png and /dev/null differ diff --git a/src/modules/cmdpal/extensions/AzureResourcesExtension/AzureResourcesCommandsProvider.cs b/src/modules/cmdpal/extensions/AzureResourcesExtension/AzureResourcesCommandsProvider.cs deleted file mode 100644 index e6f2f13055..0000000000 --- a/src/modules/cmdpal/extensions/AzureResourcesExtension/AzureResourcesCommandsProvider.cs +++ /dev/null @@ -1,204 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Runtime.InteropServices.WindowsRuntime; -using System.Text.Json; -using System.Threading.Tasks; -using Microsoft.Windows.DevPal.SDK; -using Windows.Foundation; -using Windows.Storage.Streams; - -namespace AzureResourcesExtension; - -internal sealed class AzureResourceItem -{ - internal string Name { get; init; } - internal string Type { get; init; } - internal string ResourceGroup { get; init; } - internal string Id { get; init; } - - internal string EscapedName => JsonEncodedText.Encode(Name).ToString(); - internal string EscapedType => JsonEncodedText.Encode(Type).ToString(); - internal string EscapedResourceGroup => JsonEncodedText.Encode(ResourceGroup).ToString(); -} - -internal sealed class AzureResourcesPage : IPage -{ - internal List resources = new(); - - public IAsyncOperation RenderToJson() - { - return AsyncInfo.Run(async cancellationToken => - { - try - { - if (resources.Count == 0) - { - resources = await GetAzureResources(); - } - - var items = string.Join(", ", resources.Select( - (resource, index) => $$""" - { - "name": "{{resource.EscapedName}}", - "subtitle": "{{resource.EscapedType}}", - "description": "{{resource.EscapedResourceGroup}}", - "actions": [ - { "icon": "", "name": "Open in Azure Portal", "id": "AzureResource.OpenPortal.{{index}}" } - ] - } - """ - )); - - var json = $$""" - { - "type": "list", - "items": [ - {{items}} - ] - } - """; - - return json; - } - catch (Exception ex) - { - Debug.WriteLine($"Error in RenderToJson: {ex.Message}"); - throw; - } - }); - } - - private static async Task> GetAzureResources() - { - var resources = new List(); - - try - { - var azPath = @"C:\Program Files\Microsoft SDKs\Azure\CLI2\wbin\az.cmd"; - - var processInfo = new ProcessStartInfo - { - FileName = azPath, - Arguments = "resource list -o json", - RedirectStandardOutput = true, - UseShellExecute = false, - CreateNoWindow = true, - WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) // Set a valid working directory - }; - - using var process = Process.Start(processInfo); - var result = await process.StandardOutput.ReadToEndAsync(); - process.WaitForExit(); - - var resourceList = JsonSerializer.Deserialize>(result); - resources = resourceList.Select(resource => new AzureResourceItem - { - Name = resource.name, - Type = resource.type, - ResourceGroup = resource.resourceGroup, - Id = resource.id - }).ToList(); - } - catch (Exception ex) - { - // return a really simple json in the proper format - return new List - { - new() { - Name = ex.Message, - Type = "Error", - ResourceGroup = ex.Message - } - }; - } - - return resources; - } - - private sealed class AzureResource - { - public string name { get; set; } - public string type { get; set; } - public string resourceGroup { get; set; } - public string id { get; set; } - } -} - -internal sealed class AzureResourcesCommand : ICommand -{ - private readonly AzureResourcesPage _page = new(); - public string Icon => "https://www.c-sharpcorner.com/UploadFile/BlogImages/01232023170209PM/Azure%20Icon.png"; - public CommandType Kind => CommandType.List; - public string Name => "Azure Resources"; - public string Subtitle => ""; - public IPage Page => _page; -#pragma warning disable CS0067 - public event TypedEventHandler NavigateToCommandRequested; -#pragma warning restore - public IAsyncOperation> GetCommandsForQueryAsync(string search) { return null; } - public IAsyncAction DoAction(string actionId) - { - return Task.Run(() => - { - try - { - if (_page.resources.Count != 0) - { - var parts = actionId.Split('.'); - if (parts.Length != 3) - { - return; - } - var index = int.Parse(parts[^1], null); - var action = parts[^2]; - - var resource = _page.resources[index]; - if (action == "OpenPortal") - { - OpenResourceInAzurePortal(resource.Id); - } - } - } - catch (Exception ex) - { - Debug.WriteLine($"Error in DoAction: {ex.Message}"); - throw; - } - }).AsAsyncAction(); - } - - private static void OpenResourceInAzurePortal(string resourceId) - { - var tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID"); - if (string.IsNullOrEmpty(tenantId)) - { - Debug.WriteLine("Environment variable AZURE_TENANT_ID is not set."); - return; - } - var url = $"https://portal.azure.com/#@{tenantId}/resource{resourceId}"; - Process.Start(new ProcessStartInfo(url) { UseShellExecute = true }); - } -} - -internal sealed class AzureResourcesCommandsProvider : ICommandsProvider -{ - public string DisplayName => "Azure Resources Commands"; - - public string Icon => ""; - - public void Dispose() => throw new NotImplementedException(); - - public IAsyncOperation> GetCommands() - { - var list = new List() - { - new AzureResourcesCommand() - }; - return Task.FromResult(list as IReadOnlyList).AsAsyncOperation(); - } -} diff --git a/src/modules/cmdpal/extensions/AzureResourcesExtension/AzureResourcesExtension.csproj b/src/modules/cmdpal/extensions/AzureResourcesExtension/AzureResourcesExtension.csproj deleted file mode 100644 index bab93683f0..0000000000 --- a/src/modules/cmdpal/extensions/AzureResourcesExtension/AzureResourcesExtension.csproj +++ /dev/null @@ -1,55 +0,0 @@ - - - WinExe - net8.0-windows10.0.19041.0 - 10.0.17763.0 - AzureResourcesExtension - app.manifest - x86;x64;ARM64 - win-x86;win-x64;win-arm64 - win10-x86;win10-x64;win10-arm64 - win-$(Platform).pubxml - false - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/AzureResourcesExtension/Package.appxmanifest b/src/modules/cmdpal/extensions/AzureResourcesExtension/Package.appxmanifest deleted file mode 100644 index 157b69b5bf..0000000000 --- a/src/modules/cmdpal/extensions/AzureResourcesExtension/Package.appxmanifest +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - AzureResources Sample Extension - Microsoft Corporation - Assets\StoreLogo.png - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/modules/cmdpal/extensions/AzureResourcesExtension/Program.cs b/src/modules/cmdpal/extensions/AzureResourcesExtension/Program.cs deleted file mode 100644 index 83dd9cf539..0000000000 --- a/src/modules/cmdpal/extensions/AzureResourcesExtension/Program.cs +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -using System; -using System.Threading; -using Microsoft.Windows.DevPal.SDK; - -namespace AzureResourcesExtension; - -public class Program -{ - [MTAThread] - public static void Main(string[] args) - { - if (args.Length > 0 && args[0] == "-RegisterProcessAsComServer") - { - using ExtensionServer server = new(); - var extensionDisposedEvent = new ManualResetEvent(false); - var extensionInstance = new SampleExtension(extensionDisposedEvent); - - // We are instantiating an extension instance once above, and returning it every time the callback in RegisterExtension below is called. - // This makes sure that only one instance of SampleExtension is alive, which is returned every time the host asks for the IExtension object. - // If you want to instantiate a new instance each time the host asks, create the new instance inside the delegate. - server.RegisterExtension(() => extensionInstance); - - // This will make the main thread wait until the event is signalled by the extension class. - // Since we have single instance of the extension object, we exit as sooon as it is disposed. - extensionDisposedEvent.WaitOne(); - } - else - { - Console.WriteLine("Not being launched as a Extension... exiting."); - } - } -} diff --git a/src/modules/cmdpal/extensions/AzureResourcesExtension/SampleExtension.cs b/src/modules/cmdpal/extensions/AzureResourcesExtension/SampleExtension.cs deleted file mode 100644 index 8adf02961e..0000000000 --- a/src/modules/cmdpal/extensions/AzureResourcesExtension/SampleExtension.cs +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -using System; -using System.Runtime.InteropServices; -using System.Threading; -using Microsoft.Windows.DevPal.SDK; - -namespace AzureResourcesExtension; - -[ComVisible(true)] -[Guid("55B0369C-C696-42DD-A98F-31A3321B4E85")] -[ComDefaultInterface(typeof(IExtension))] -public sealed class SampleExtension : IExtension -{ - private readonly ManualResetEvent _extensionDisposedEvent; - - public SampleExtension(ManualResetEvent extensionDisposedEvent) - { - this._extensionDisposedEvent = extensionDisposedEvent; - } - - public object GetProvider(ProviderType providerType) - { - switch (providerType) - { - case ProviderType.Commands: - return new AzureResourcesCommandsProvider(); - default: - return null; - } - } - - public void Dispose() - { - this._extensionDisposedEvent.Set(); - } -} diff --git a/src/modules/cmdpal/extensions/AzureResourcesExtension/app.manifest b/src/modules/cmdpal/extensions/AzureResourcesExtension/app.manifest deleted file mode 100644 index 43cb20b4df..0000000000 --- a/src/modules/cmdpal/extensions/AzureResourcesExtension/app.manifest +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - PerMonitorV2 - - - \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/GitHubExtension/Assets/LockScreenLogo.scale-200.png b/src/modules/cmdpal/extensions/GitHubExtension/Assets/LockScreenLogo.scale-200.png deleted file mode 100644 index 7440f0d4bf..0000000000 Binary files a/src/modules/cmdpal/extensions/GitHubExtension/Assets/LockScreenLogo.scale-200.png and /dev/null differ diff --git a/src/modules/cmdpal/extensions/GitHubExtension/Assets/SplashScreen.scale-200.png b/src/modules/cmdpal/extensions/GitHubExtension/Assets/SplashScreen.scale-200.png deleted file mode 100644 index 32f486a867..0000000000 Binary files a/src/modules/cmdpal/extensions/GitHubExtension/Assets/SplashScreen.scale-200.png and /dev/null differ diff --git a/src/modules/cmdpal/extensions/GitHubExtension/Assets/Square150x150Logo.scale-200.png b/src/modules/cmdpal/extensions/GitHubExtension/Assets/Square150x150Logo.scale-200.png deleted file mode 100644 index 53ee3777ea..0000000000 Binary files a/src/modules/cmdpal/extensions/GitHubExtension/Assets/Square150x150Logo.scale-200.png and /dev/null differ diff --git a/src/modules/cmdpal/extensions/GitHubExtension/Assets/Square44x44Logo.scale-200.png b/src/modules/cmdpal/extensions/GitHubExtension/Assets/Square44x44Logo.scale-200.png deleted file mode 100644 index f713bba67f..0000000000 Binary files a/src/modules/cmdpal/extensions/GitHubExtension/Assets/Square44x44Logo.scale-200.png and /dev/null differ diff --git a/src/modules/cmdpal/extensions/GitHubExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/src/modules/cmdpal/extensions/GitHubExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png deleted file mode 100644 index dc9f5bea0c..0000000000 Binary files a/src/modules/cmdpal/extensions/GitHubExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png and /dev/null differ diff --git a/src/modules/cmdpal/extensions/GitHubExtension/Assets/StoreLogo.png b/src/modules/cmdpal/extensions/GitHubExtension/Assets/StoreLogo.png deleted file mode 100644 index a4586f26bd..0000000000 Binary files a/src/modules/cmdpal/extensions/GitHubExtension/Assets/StoreLogo.png and /dev/null differ diff --git a/src/modules/cmdpal/extensions/GitHubExtension/Assets/Wide310x150Logo.scale-200.png b/src/modules/cmdpal/extensions/GitHubExtension/Assets/Wide310x150Logo.scale-200.png deleted file mode 100644 index 8b4a5d0dd5..0000000000 Binary files a/src/modules/cmdpal/extensions/GitHubExtension/Assets/Wide310x150Logo.scale-200.png and /dev/null differ diff --git a/src/modules/cmdpal/extensions/GitHubExtension/GitHubActionsProvider.cs b/src/modules/cmdpal/extensions/GitHubExtension/GitHubActionsProvider.cs deleted file mode 100644 index 3d185821c1..0000000000 --- a/src/modules/cmdpal/extensions/GitHubExtension/GitHubActionsProvider.cs +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Windows.Foundation; -using Microsoft.Windows.CommandPalette.Extensions; -using System.Diagnostics; -using System.Xml.Linq; -using System.Net.Http; -using Windows.Foundation.Collections; -using Microsoft.Windows.CommandPalette.Extensions.Helpers; -using System.Transactions; -using System.Runtime.CompilerServices; -using System.Text.Json; -using System.Globalization; - -namespace GitHubExtension; - -sealed class RepositoryInfo -{ - public string name { get; set; } - public string nameWithOwner { get; set; } -} -sealed class GitHubIssue -{ - public string title { get; set; } - public int number { get; set; } - public string url { get; set; } - public string state { get; set; } - public string body { get; set; } - // public RepositoryInfo repository { get; set; } -} - -sealed class OpenIssueAction : InvokableCommand -{ - private readonly GitHubIssue issue; - public OpenIssueAction(GitHubIssue issue) - { - this.issue = issue; - Name = "Open"; - Icon = new("\uE8A7"); - } - public override ICommandResult Invoke() - { - Process.Start(new ProcessStartInfo(issue.url) { UseShellExecute = true }); - return ActionResult.KeepOpen(); - } -} - -sealed class ViewIssueAction : MarkdownPage { - - static readonly string OpenImagePath = "https://github.com/user-attachments/assets/e4144bc6-91dc-4de8-acad-5ddf4e574edf"; - static readonly string ClosedImagePath = "https://github.com/user-attachments/assets/b8cfaa2e-5407-4594-a50f-7f252d8f6baf"; - - private readonly GitHubIssue issue; - - public ViewIssueAction(GitHubIssue issue) - { - this.issue = issue; - Name = "View"; - this.Title = issue.title; - Icon = new(issue.state == "open" ? OpenImagePath : ClosedImagePath); - } - public override string[] Bodies() - { - return [issue.body]; - } -} - -sealed class GithubIssuesPage : ListPage { - - public GithubIssuesPage() - { - this.Icon = new("https://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/Github-desktop-logo-symbol.svg/240px-Github-desktop-logo-symbol.svg.png"); - this.Name = "GitHub Issues"; - this.ShowDetails = true; - } - - public override ISection[] GetItems() - { - var t = DoGetItems(); - t.ConfigureAwait(false); - return t.Result; - } - - private async Task DoGetItems() - { - List items = await GetGitHubIssues(); - this.Loading = false; - var s = new ListSection(){ - Title = "Issues", - Items = items - .Select((issue) => new ListItem(new ViewIssueAction(issue)) { - Title=issue.title, - Subtitle=issue.number.ToString(CultureInfo.CurrentCulture), - Details = new Details() { Body = issue.body }, - MoreCommands= [ - new CommandContextItem(new OpenIssueAction(issue)) - ] - }) - .ToArray() - }; - return [ s ] ; - } - - private static async Task> GetGitHubIssues() - { - var issues = new List(); - string result;// = ""; - string errorResult;// = ""; - try - { - var ghPath = @"gh"; - - var processInfo = new ProcessStartInfo - { - FileName = ghPath, - Arguments = "search issues --author \"@me\" --limit 50 --json title,number,url,state,body", - RedirectStandardOutput = true, - RedirectStandardError = true, - UseShellExecute = false, - CreateNoWindow = true, - WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) // Set a valid working directory - }; - - using var process = Process.Start(processInfo); - result = await process.StandardOutput.ReadToEndAsync(); - errorResult = await process.StandardError.ReadToEndAsync(); - process.WaitForExit(); - if (process.ExitCode != 0) { - return new List { new() { title = errorResult, number = -1, url = "" } }; - } - - issues = JsonSerializer.Deserialize>(result); - - } - catch (Exception ex) - { - return new List - { - new() { - title = ex.Message, - number = -1, - url = ex.Message - } - }; - } - - return issues; - } -} - -public class GithubActionsProvider : ICommandProvider -{ - public string DisplayName => $"GitHub actions"; - public IconDataType Icon => new(""); - - private readonly IListItem[] _Actions = [ - new ListItem(new GithubIssuesPage()), - //new ListItem(new GitHubNotificationsPage()), - ]; - -#pragma warning disable CA1816 // Dispose methods should call SuppressFinalize - public void Dispose() => throw new NotImplementedException(); -#pragma warning restore CA1816 // Dispose methods should call SuppressFinalize - - - public IListItem[] TopLevelCommands() - { - return _Actions; - } -} - diff --git a/src/modules/cmdpal/extensions/GitHubExtension/GitHubExtension.csproj b/src/modules/cmdpal/extensions/GitHubExtension/GitHubExtension.csproj deleted file mode 100644 index e2ff536b96..0000000000 --- a/src/modules/cmdpal/extensions/GitHubExtension/GitHubExtension.csproj +++ /dev/null @@ -1,54 +0,0 @@ - - - WinExe - net8.0-windows10.0.19041.0 - 10.0.17763.0 - GitHubExtension - app.manifest - x86;x64;ARM64 - win-x86;win-x64;win-arm64 - win10-x86;win10-x64;win10-arm64 - win-$(Platform).pubxml - false - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - diff --git a/src/modules/cmdpal/extensions/GitHubExtension/Package.appxmanifest b/src/modules/cmdpal/extensions/GitHubExtension/Package.appxmanifest deleted file mode 100644 index ca45d49cc3..0000000000 --- a/src/modules/cmdpal/extensions/GitHubExtension/Package.appxmanifest +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - GitHub Sample Extension - Microsoft Corporation - Assets\StoreLogo.png - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/modules/cmdpal/extensions/GitHubExtension/Program.cs b/src/modules/cmdpal/extensions/GitHubExtension/Program.cs deleted file mode 100644 index 3369d31937..0000000000 --- a/src/modules/cmdpal/extensions/GitHubExtension/Program.cs +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -using System; -using System.Threading; -using Microsoft.Windows.CommandPalette.Extensions; - -namespace GitHubExtension; - -public class Program -{ - [MTAThread] - public static void Main(string[] args) - { - if (args.Length > 0 && args[0] == "-RegisterProcessAsComServer") - { - using ExtensionServer server = new(); - var extensionDisposedEvent = new ManualResetEvent(false); - var extensionInstance = new SampleExtension(extensionDisposedEvent); - - // We are instantiating an extension instance once above, and returning it every time the callback in RegisterExtension below is called. - // This makes sure that only one instance of SampleExtension is alive, which is returned every time the host asks for the IExtension object. - // If you want to instantiate a new instance each time the host asks, create the new instance inside the delegate. - server.RegisterExtension(() => extensionInstance); - - // This will make the main thread wait until the event is signalled by the extension class. - // Since we have single instance of the extension object, we exit as sooon as it is disposed. - extensionDisposedEvent.WaitOne(); - } - else - { - Console.WriteLine("Not being launched as a Extension... exiting."); - } - } -} diff --git a/src/modules/cmdpal/extensions/GitHubExtension/SampleExtension.cs b/src/modules/cmdpal/extensions/GitHubExtension/SampleExtension.cs deleted file mode 100644 index f156856846..0000000000 --- a/src/modules/cmdpal/extensions/GitHubExtension/SampleExtension.cs +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -using System; -using System.Runtime.InteropServices; -using System.Threading; -using Microsoft.Windows.CommandPalette.Extensions; - -namespace GitHubExtension; - -[ComVisible(true)] -[Guid("9581429C-78F2-4879-A0A4-296261DF192B")] -[ComDefaultInterface(typeof(IExtension))] -public sealed class SampleExtension : IExtension -{ - private readonly ManualResetEvent _extensionDisposedEvent; - - public SampleExtension(ManualResetEvent extensionDisposedEvent) - { - this._extensionDisposedEvent = extensionDisposedEvent; - } - - public object GetProvider(ProviderType providerType) - { - switch (providerType) - { - case ProviderType.Commands: - return new GithubActionsProvider(); - default: - return null; - } - } - - public void Dispose() - { - this._extensionDisposedEvent.Set(); - } -} diff --git a/src/modules/cmdpal/extensions/GitHubExtension/app.manifest b/src/modules/cmdpal/extensions/GitHubExtension/app.manifest deleted file mode 100644 index fd4ead73e2..0000000000 --- a/src/modules/cmdpal/extensions/GitHubExtension/app.manifest +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - PerMonitorV2 - - - \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/HackerNewsExtension.csproj b/src/modules/cmdpal/extensions/HackerNewsExtension/HackerNewsExtension.csproj index b6779756c9..5bb745a9f1 100644 --- a/src/modules/cmdpal/extensions/HackerNewsExtension/HackerNewsExtension.csproj +++ b/src/modules/cmdpal/extensions/HackerNewsExtension/HackerNewsExtension.csproj @@ -1,13 +1,9 @@ + WinExe - net8.0-windows10.0.19041.0 - 10.0.17763.0 HackerNewsExtension app.manifest - x86;x64;ARM64 - win-x86;win-x64;win-arm64 - win10-x86;win10-x64;win10-arm64 win-$(Platform).pubxml false true @@ -24,15 +20,12 @@ - - - - + + + + FileSystem + ARM64 + win-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + True + + \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/extensions/HackerNewsExtension/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000000..d7548ab0a8 --- /dev/null +++ b/src/modules/cmdpal/extensions/HackerNewsExtension/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + x64 + win-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + True + + \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/Properties/launchSettings.json b/src/modules/cmdpal/extensions/HackerNewsExtension/Properties/launchSettings.json new file mode 100644 index 0000000000..2df74d9a89 --- /dev/null +++ b/src/modules/cmdpal/extensions/HackerNewsExtension/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "HackerNewsExtension (Package)": { + "commandName": "MsixPackage" + }, + "HackerNewsExtension (Unpackaged)": { + "commandName": "Project" + } + } +} \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/MediaControlsExtension.csproj b/src/modules/cmdpal/extensions/MediaControlsExtension/MediaControlsExtension.csproj index 9949d9cf06..e99a68c4dc 100644 --- a/src/modules/cmdpal/extensions/MediaControlsExtension/MediaControlsExtension.csproj +++ b/src/modules/cmdpal/extensions/MediaControlsExtension/MediaControlsExtension.csproj @@ -1,13 +1,9 @@ - + + WinExe - net8.0-windows10.0.19041.0 - 10.0.17763.0 MediaControlsExtension app.manifest - x86;x64;ARM64 - win-x86;win-x64;win-arm64 - win10-x86;win10-x64;win10-arm64 win-$(Platform).pubxml false true @@ -24,14 +20,11 @@ - - - - + + + + FileSystem + ARM64 + win-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + True + + \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/extensions/MediaControlsExtension/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000000..d7548ab0a8 --- /dev/null +++ b/src/modules/cmdpal/extensions/MediaControlsExtension/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + x64 + win-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + True + + \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/Properties/launchSettings.json b/src/modules/cmdpal/extensions/MediaControlsExtension/Properties/launchSettings.json new file mode 100644 index 0000000000..d397a4b5e7 --- /dev/null +++ b/src/modules/cmdpal/extensions/MediaControlsExtension/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "MediaControlsExtension (Package)": { + "commandName": "MsixPackage" + }, + "MediaControlsExtension (Unpackaged)": { + "commandName": "Project" + } + } +} \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/ProcessMonitorExtension.csproj b/src/modules/cmdpal/extensions/ProcessMonitorExtension/ProcessMonitorExtension.csproj index df559f65a9..bea91aeb8a 100644 --- a/src/modules/cmdpal/extensions/ProcessMonitorExtension/ProcessMonitorExtension.csproj +++ b/src/modules/cmdpal/extensions/ProcessMonitorExtension/ProcessMonitorExtension.csproj @@ -1,13 +1,9 @@ - + + WinExe - net8.0-windows10.0.19041.0 - 10.0.17763.0 ProcessMonitorExtension app.manifest - x86;x64;ARM64 - win-x86;win-x64;win-arm64 - win10-x86;win10-x64;win10-arm64 win-$(Platform).pubxml false true @@ -24,14 +20,11 @@ - - - - + diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/PublishProfiles/win-arm64.pubxml b/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/PublishProfiles/win-arm64.pubxml new file mode 100644 index 0000000000..ccd091e1b4 --- /dev/null +++ b/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/PublishProfiles/win-arm64.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + ARM64 + win-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + True + + \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000000..d7548ab0a8 --- /dev/null +++ b/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + x64 + win-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + True + + \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/launchSettings.json b/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/launchSettings.json new file mode 100644 index 0000000000..31adf00d01 --- /dev/null +++ b/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "ProcessMonitorExtension (Package)": { + "commandName": "MsixPackage" + }, + "ProcessMonitorExtension (Unpackaged)": { + "commandName": "Project" + } + } +} \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/Properties/PublishProfiles/win-arm64.pubxml b/src/modules/cmdpal/extensions/SpongebotExtension/Properties/PublishProfiles/win-arm64.pubxml new file mode 100644 index 0000000000..ccd091e1b4 --- /dev/null +++ b/src/modules/cmdpal/extensions/SpongebotExtension/Properties/PublishProfiles/win-arm64.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + ARM64 + win-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + True + + \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/extensions/SpongebotExtension/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000000..d7548ab0a8 --- /dev/null +++ b/src/modules/cmdpal/extensions/SpongebotExtension/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + x64 + win-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + True + + \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/Properties/launchSettings.json b/src/modules/cmdpal/extensions/SpongebotExtension/Properties/launchSettings.json new file mode 100644 index 0000000000..e6c43e9ec8 --- /dev/null +++ b/src/modules/cmdpal/extensions/SpongebotExtension/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "SpongebotExtension (Package)": { + "commandName": "MsixPackage" + }, + "SpongebotExtension (Unpackaged)": { + "commandName": "Project" + } + } +} \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/SpongebotExtension.csproj b/src/modules/cmdpal/extensions/SpongebotExtension/SpongebotExtension.csproj index f7233b048d..17777d8382 100644 --- a/src/modules/cmdpal/extensions/SpongebotExtension/SpongebotExtension.csproj +++ b/src/modules/cmdpal/extensions/SpongebotExtension/SpongebotExtension.csproj @@ -1,13 +1,9 @@ - + + WinExe - net8.0-windows10.0.19041.0 - 10.0.17763.0 SpongebotExtension app.manifest - x86;x64;ARM64 - win-x86;win-x64;win-arm64 - win10-x86;win10-x64;win10-arm64 win-$(Platform).pubxml false true @@ -24,15 +20,11 @@ - - - - - +