Packages can be loaded/unloaded. IUnloadableService interface added whose method Unload, if service implements it, will be called when the module is unloaded.
This commit is contained in:
@ -0,0 +1,31 @@
|
||||
using NadekoBot.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace NadekoBot.Core.Modules.Administration.Services
|
||||
{
|
||||
public class PackagesService : INService
|
||||
{
|
||||
public IEnumerable<string> Packages { get; private set; }
|
||||
|
||||
public PackagesService()
|
||||
{
|
||||
ReloadAvailablePackages();
|
||||
}
|
||||
|
||||
public void ReloadAvailablePackages()
|
||||
{
|
||||
Packages = Directory.GetDirectories(Path.Combine(AppContext.BaseDirectory, "modules\\"), "NadekoBot.Modules.*", SearchOption.AllDirectories)
|
||||
.SelectMany(x => Directory.GetFiles(x, "NadekoBot.Modules.*.dll"))
|
||||
.Select(x => Path.GetFileNameWithoutExtension(x))
|
||||
.Select(x =>
|
||||
{
|
||||
var m = Regex.Match(x, @"NadekoBot\.Modules\.(?<name>.*)");
|
||||
return m.Groups["name"].Value;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user