Appi.Core
1.0.2
See the version list below for details.
dotnet add package Appi.Core --version 1.0.2
NuGet\Install-Package Appi.Core -Version 1.0.2
<PackageReference Include="Appi.Core" Version="1.0.2" />
paket add Appi.Core --version 1.0.2
#r "nuget: Appi.Core, 1.0.2"
// Install Appi.Core as a Cake Addin #addin nuget:?package=Appi.Core&version=1.0.2 // Install Appi.Core as a Cake Tool #tool nuget:?package=Appi.Core&version=1.0.2
Appi
What is Appi
? Appi is short for App information.
The goal is to query multiple sources for information at once. Reachable by using your favorite shell from within your keyboard, without even touching your mouse.
Because your information sources will be different from mine, go start building your first plugin and get started using your command line or try combining it with PowerToys Run
.
Installation
- Install via NuGet:
dotnet tool install --global Appi
- Build from your own
Usage
Help information
USAGE:
Appi <query> [OPTIONS]
ARGUMENTS:
<query> Search for the given query in all active sources
OPTIONS:
-h, --help Prints help information
-c, --case-sensitive The query parameter will be case-sensitive
COMMANDS:
find <query>
config Configure Appi
Examples
appi thank
appi find thank
appi find -c thank
appi config open
appi config allow-libs true
appi config register-lib "my-own-plugin.dll"
Infrastructure
Some infrastructure classes are already provided. You can build up from given classes like:
- File (see
sources.json
after runningappi config open
and change the path of your text file) - More to come out of the box (want to collaborate?)
Plugins
This app is highly extensible by adding own plugins. You can fetch data from any source you can imagine, e. g. from your SharePoint Server or any database.
Just follow these simple steps:
- Create a .NET 7 class library
- Add the
Appi.Core
NuGet package as a dependency
(e. g.PM> Install-Package Appi.Core
) - Create classes that implement
ISource
andResultItemBase
- Register the new assembly by calling
appi config register-lib "pathToAssembly.dll"
Example for implementing ISource
The class implementing ISource
must have a parameterless constructor.
The ReadAsync()
method must pass the FindItemsOptions
object which contains the query and returns the found data.
using Core.Abstractions;
using Core.Models;
namespace ExternalSourceDemo
{
public class ExternalDemoSource : ISource
{
public string TypeName { get; set; } = typeof(ExternalDemoSource).Name;
public string Name { get; set; } = "Demo Assembly";
public string Description { get; set; } = "Returns hard-coded hello world.";
public bool IsActive { get; set; } = true;
public int SortOrder { get; set; } = 50;
public string? Path { get; set; } = null;
public async Task<IEnumerable<ResultItemBase>> ReadAsync(FindItemsOptions options)
{
var output = new List<ExternalDemoResult>()
{
new() { Name = "Hello", Description = options?.Query ?? "World" }
};
return await Task.FromResult(output);
}
}
}
Example for implementing ResultItemBase
This class controls the output of an item by overriding the ToString()
method and displays the possible actions with the result of GetActions()
method if an item of this source gets selected. You can easily interact with predefined services like using the ClipboardService
or ProcessService
for most frequent used actions.
By using the Result
attribute you can define the displayed properties in the output table.
using Core.Abstractions;
using Core.Attributes;
using Core.Models;
namespace ExternalSourceDemo
{
public class ExternalDemoResult : ResultItemBase
{
[Result]
public override string Name { get => base.Name; set => base.Name = value; }
[Result]
public override string Description { get => base.Description; set => base.Description = value; }
public override IEnumerable<ActionItem> GetActions()
{
return Enumerable.Empty<ActionItem>();
}
public override string ToString()
{
return $"{Name} {Description}!";
}
}
}
Up next
Build more infrastructure classes like
- Microsoft SQL
- MySQL / MariaDB
- SQlite
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net7.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Appi.Core:
Package | Downloads |
---|---|
Appi.Infrastructure
The goal is to query your sources for information through one tool; all at once, in groups or individually, highly extensible. Use this package to create your own Appi plugins with pre-built infrastructure like SQL Server or MySQL to speed up your development. |
GitHub repositories
This package is not used by any popular GitHub repositories.
inital release