Skip to content

hlaueriksson/Community.PowerToys.Run.Plugin.Abstractions

Repository files navigation

Community.PowerToys.Run.Plugin.Abstractions

build Snyk Security Scan Community.PowerToys.Run.Plugin.Abstractions Mentioned in Awesome PowerToys Run Plugins

This NuGet package is intended for PowerToys Run community plugins authors.

It contains abstractions for the Wox DLLs:

  • Wox.Infrastructure.dll
  • Wox.Plugin.dll

In other words, interfaces and wrappers for the static classes:

  • Wox.Infrastructure.Helper
  • Wox.Plugin.Common.DefaultBrowserInfo
  • Wox.Plugin.Logger.Log

Installation

.NET CLI:

dotnet add package Community.PowerToys.Run.Plugin.Abstractions

Package Manager:

PM> NuGet\Install-Package Community.PowerToys.Run.Plugin.Abstractions

PackageReference:

<PackageReference Include="Community.PowerToys.Run.Plugin.Abstractions" Version="0.2.0" />

Example

<ItemGroup>
  <InternalsVisibleTo Include="Community.PowerToys.Run.Plugin.Sample.UnitTests" />
</ItemGroup>
using Community.PowerToys.Run.Plugin.Abstractions;
using static Wox.Infrastructure.Helper;
/// <summary>
/// Initializes a new instance of the <see cref="Main"/> class.
/// </summary>
public Main()
{
    Helper = new HelperWrapper();
    DefaultBrowserInfo = new DefaultBrowserInfoWrapper();
    Log = new LogWrapper();
}

internal Main(IHelper helper, IDefaultBrowserInfo defaultBrowserInfo, ILog log)
{
    Helper = helper;
    DefaultBrowserInfo = defaultBrowserInfo;
    Log = log;
}

private IHelper Helper { get; }
private IDefaultBrowserInfo DefaultBrowserInfo { get; }
private ILog Log { get; }
DefaultBrowserInfo.UpdateIfTimePassed();

if (!Helper.OpenCommandInShell(DefaultBrowserInfo.Path, DefaultBrowserInfo.ArgumentsPattern, url))
{
    Log.Error("Open default browser failed.", GetType());
    Api.ShowMsg($"Plugin: {Metadata.Name}", "Open default browser failed.");
}
[SetUp]
public void SetUp()
{
    _subject = new Main(Substitute.For<IHelper>(), Substitute.For<IDefaultBrowserInfo>(), Substitute.For<ILog>());
}

Disclaimer

This is not an official Microsoft PowerToys package.