Refactored plugin loading. Added project settings for packing
This commit is contained in:
@@ -5,12 +5,15 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||||
|
<IsPackable>true</IsPackable>
|
||||||
|
<Version>2.1.0</Version>
|
||||||
|
<Title>MoonlightServers.ApiServer</Title>
|
||||||
|
<PackageTags>apiserver</PackageTags>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Moonlight.ApiServer" Version="2.1.0"/>
|
<PackageReference Include="Moonlight.ApiServer" Version="2.1.0"/>
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.11"/>
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.15"/>
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0"/>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -26,4 +29,20 @@
|
|||||||
<Folder Include="Interfaces\"/>
|
<Folder Include="Interfaces\"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="**\*.cs" Exclude="storage\**\*;bin\**\*;obj\**\*">
|
||||||
|
<Pack>true</Pack>
|
||||||
|
<PackagePath>src</PackagePath>
|
||||||
|
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Include="**\*.razor" Exclude="storage\**\*;bin\**\*;obj\**\*">
|
||||||
|
<Pack>true</Pack>
|
||||||
|
<PackagePath>src</PackagePath>
|
||||||
|
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<Compile Remove="storage\**\*"/>
|
||||||
|
<Content Remove="storage\**\*"/>
|
||||||
|
<None Remove="storage\**\*"/>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using Moonlight.ApiServer;
|
using Moonlight.ApiServer;
|
||||||
using Moonlight.ApiServer.Models;
|
using Moonlight.ApiServer.Models;
|
||||||
|
using MoonlightServers.ApiServer.Startup;
|
||||||
|
|
||||||
// Development Server Startup
|
// Development Server Startup
|
||||||
|
|
||||||
@@ -28,8 +29,6 @@ pluginManifest.Assemblies.Clear();
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
await startup.Run(
|
await startup.Run(args, [
|
||||||
args,
|
new PluginStartup()
|
||||||
[typeof(Program).Assembly],
|
]);
|
||||||
[pluginManifest]
|
|
||||||
);
|
|
||||||
@@ -1,13 +1,16 @@
|
|||||||
using MoonCore.Extensions;
|
using MoonCore.Extensions;
|
||||||
using Moonlight.ApiServer.Interfaces.Startup;
|
using Moonlight.ApiServer.Configuration;
|
||||||
|
using Moonlight.ApiServer.Models;
|
||||||
|
using Moonlight.ApiServer.Plugins;
|
||||||
using MoonlightServers.ApiServer.Database;
|
using MoonlightServers.ApiServer.Database;
|
||||||
using MoonlightServers.ApiServer.Helpers;
|
using MoonlightServers.ApiServer.Helpers;
|
||||||
|
|
||||||
namespace MoonlightServers.ApiServer.Startup;
|
namespace MoonlightServers.ApiServer.Startup;
|
||||||
|
|
||||||
|
[PluginStartup]
|
||||||
public class PluginStartup : IPluginStartup
|
public class PluginStartup : IPluginStartup
|
||||||
{
|
{
|
||||||
public Task BuildApplication(IHostApplicationBuilder builder)
|
public Task BuildApplication(IServiceProvider serviceProvider, IHostApplicationBuilder builder)
|
||||||
{
|
{
|
||||||
// Scan the current plugin assembly for di services
|
// Scan the current plugin assembly for di services
|
||||||
builder.Services.AutoAddServices<PluginStartup>();
|
builder.Services.AutoAddServices<PluginStartup>();
|
||||||
@@ -19,12 +22,28 @@ public class PluginStartup : IPluginStartup
|
|||||||
.AddAuthentication()
|
.AddAuthentication()
|
||||||
.AddScheme<NodeAuthOptions, NodeAuthScheme>("nodeAuthentication", null);
|
.AddScheme<NodeAuthOptions, NodeAuthScheme>("nodeAuthentication", null);
|
||||||
|
|
||||||
|
var configuration = serviceProvider.GetRequiredService<AppConfiguration>();
|
||||||
|
|
||||||
|
if (configuration.Client.Enable)
|
||||||
|
{
|
||||||
|
builder.Services.AddSingleton(new FrontendConfigurationOption()
|
||||||
|
{
|
||||||
|
Scripts =
|
||||||
|
[
|
||||||
|
"js/XtermBlazor.min.js",
|
||||||
|
"js/addon-fit.js",
|
||||||
|
"js/moonlightServers.js"
|
||||||
|
],
|
||||||
|
Styles = ["css/XtermBlazor.min.css"]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task ConfigureApplication(IApplicationBuilder app)
|
public Task ConfigureApplication(IServiceProvider serviceProvider, IApplicationBuilder app)
|
||||||
=> Task.CompletedTask;
|
=> Task.CompletedTask;
|
||||||
|
|
||||||
public Task ConfigureEndpoints(IEndpointRouteBuilder routeBuilder)
|
public Task ConfigureEndpoints(IServiceProvider serviceProvider, IEndpointRouteBuilder routeBuilder)
|
||||||
=> Task.CompletedTask;
|
=> Task.CompletedTask;
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,11 @@
|
|||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
|
<PackageId>MoonlightServers.DaemonShared</PackageId>
|
||||||
|
<PackageTags>shared</PackageTags>
|
||||||
|
<IsPackable>true</IsPackable>
|
||||||
|
<Version>2.1.0</Version>
|
||||||
|
<Title>MoonlightServers.DaemonShared</Title>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -4,12 +4,16 @@
|
|||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<IsPackable>true</IsPackable>
|
||||||
|
<Version>2.1.0</Version>
|
||||||
|
<Title>MoonlightServers.Frontend</Title>
|
||||||
|
<PackageTags>frontend</PackageTags>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.11"/>
|
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.15"/>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="8.0.11" PrivateAssets="all"/>
|
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="8.0.15" PrivateAssets="all"/>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="8.0.11" />
|
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="8.0.15" />
|
||||||
<PackageReference Include="Moonlight.Client" Version="2.1.0"/>
|
<PackageReference Include="Moonlight.Client" Version="2.1.0"/>
|
||||||
<PackageReference Include="XtermBlazor" Version="2.1.2" />
|
<PackageReference Include="XtermBlazor" Version="2.1.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@@ -27,4 +31,26 @@
|
|||||||
<ProjectReference Include="..\MoonlightServers.Shared\MoonlightServers.Shared.csproj"/>
|
<ProjectReference Include="..\MoonlightServers.Shared\MoonlightServers.Shared.csproj"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="**\*.cs" Exclude="storage\**\*;bin\**\*;obj\**\*">
|
||||||
|
<Pack>true</Pack>
|
||||||
|
<PackagePath>src</PackagePath>
|
||||||
|
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Include="**\*.razor" Exclude="storage\**\*;bin\**\*;obj\**\*">
|
||||||
|
<Pack>true</Pack>
|
||||||
|
<PackagePath>src</PackagePath>
|
||||||
|
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Include="Styles\**\*" Exclude="storage\**\*;bin\**\*;obj\**\*;Styles\node_modules\**\*">
|
||||||
|
<Pack>true</Pack>
|
||||||
|
<PackagePath>styles</PackagePath>
|
||||||
|
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<Compile Remove="storage\**\*" />
|
||||||
|
<Content Remove="storage\**\*" />
|
||||||
|
<None Remove="storage\**\*" />
|
||||||
|
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Moonlight.Client;
|
using Moonlight.Client;
|
||||||
|
using MoonlightServers.Frontend.Startup;
|
||||||
|
|
||||||
// Development Client Startup
|
// Development Client Startup
|
||||||
|
|
||||||
@@ -11,5 +12,5 @@ using Moonlight.Client;
|
|||||||
var startup = new Startup();
|
var startup = new Startup();
|
||||||
|
|
||||||
await startup.Run(args, [
|
await startup.Run(args, [
|
||||||
typeof(Program).Assembly
|
new PluginStartup()
|
||||||
]);
|
]);
|
||||||
@@ -1,14 +1,16 @@
|
|||||||
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
|
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
|
||||||
using MoonCore.Extensions;
|
using MoonCore.Extensions;
|
||||||
using Moonlight.Client.Interfaces;
|
using Moonlight.Client.Interfaces;
|
||||||
|
using Moonlight.Client.Plugins;
|
||||||
using MoonlightServers.Frontend.Implementations;
|
using MoonlightServers.Frontend.Implementations;
|
||||||
using MoonlightServers.Frontend.Interfaces;
|
using MoonlightServers.Frontend.Interfaces;
|
||||||
|
|
||||||
namespace MoonlightServers.Frontend.Startup;
|
namespace MoonlightServers.Frontend.Startup;
|
||||||
|
|
||||||
|
[PluginStartup]
|
||||||
public class PluginStartup : IPluginStartup
|
public class PluginStartup : IPluginStartup
|
||||||
{
|
{
|
||||||
public Task BuildApplication(WebAssemblyHostBuilder builder)
|
public Task BuildApplication(IServiceProvider serviceProvider, WebAssemblyHostBuilder builder)
|
||||||
{
|
{
|
||||||
builder.Services.AddSingleton<ISidebarItemProvider, SidebarImplementation>();
|
builder.Services.AddSingleton<ISidebarItemProvider, SidebarImplementation>();
|
||||||
builder.Services.AddSingleton<IServerTabProvider, DefaultServerTabProvider>();
|
builder.Services.AddSingleton<IServerTabProvider, DefaultServerTabProvider>();
|
||||||
@@ -18,7 +20,7 @@ public class PluginStartup : IPluginStartup
|
|||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task ConfigureApplication(WebAssemblyHost app)
|
public Task ConfigureApplication(IServiceProvider serviceProvider, WebAssemblyHost app)
|
||||||
{
|
{
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,10 @@
|
|||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
|
<IsPackable>true</IsPackable>
|
||||||
|
<Version>2.1.0</Version>
|
||||||
|
<Title>MoonlightServers.Shared</Title>
|
||||||
|
<PackageTags>shared</PackageTags>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
Reference in New Issue
Block a user