mirror of
https://github.com/collinbarrett/FilterLists.git
synced 2026-03-11 09:04:27 +00:00
extract archive settings
This commit is contained in:
parent
aef36a00e9
commit
29b5283bc2
10 changed files with 60 additions and 33 deletions
|
|
@ -35,7 +35,7 @@ services:
|
|||
depends_on:
|
||||
- mariadb
|
||||
environment:
|
||||
ConnectionStrings__FilterListsConnection: ${FILTERLISTS_CONNECTION_STRING}
|
||||
ConnectionStrings__FilterListsConnection: ${API_CONNECTION_STRING}
|
||||
|
||||
mariadb:
|
||||
image: mariadb:10
|
||||
|
|
@ -45,10 +45,10 @@ services:
|
|||
volumes:
|
||||
- data:/var/lib/mysql
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${FILTERLISTS_MYSQL_ROOT_PASSWORD}
|
||||
MYSQL_DATABASE: ${FILTERLISTS_MYSQL_DATABASE}
|
||||
MYSQL_USER: ${FILTERLISTS_MYSQL_USER}
|
||||
MYSQL_PASSWORD: ${FILTERLISTS_MYSQL_PASSWORD}
|
||||
MYSQL_ROOT_PASSWORD: ${API_MYSQL_ROOT_PASSWORD}
|
||||
MYSQL_DATABASE: ${API_MYSQL_DATABASE}
|
||||
MYSQL_USER: ${API_MYSQL_USER}
|
||||
MYSQL_PASSWORD: ${API_MYSQL_PASSWORD}
|
||||
command:
|
||||
[
|
||||
"mysqld",
|
||||
|
|
@ -65,12 +65,16 @@ services:
|
|||
volumes:
|
||||
- archives:/app/archives
|
||||
environment:
|
||||
ConnectionStrings__FilterListsConnection: ${FILTERLISTS_CONNECTION_STRING}
|
||||
ApplicationInsights__InstrumentationKey: ${FILTERLISTS_AGENT_APPLICATION_INSIGHTS_INSTRUMENTATION_KEY}
|
||||
GitHub__ProductHeaderValue: ${FILTERLISTS_AGENT_GITHUB_PRODUCT_HEADER_VALUE}
|
||||
GitHub__PersonalAccessToken: ${FILTERLISTS_AGENT_GITHUB_PERSONAL_ACCESS_TOKEN}
|
||||
GitHub__RepositoryOwner: ${FILTERLISTS_AGENT_GITHUB_REPOSITORY_OWNER}
|
||||
GitHub__Repository: ${FILTERLISTS_AGENT_GITHUB_REPOSITORY}
|
||||
ConnectionString__FilterListsConnection: ${API_CONNECTION_STRING}
|
||||
ApplicationInsights__InstrumentationKey: ${AGENT_APPLICATION_INSIGHTS_INSTRUMENTATION_KEY}
|
||||
GitHub__ProductHeaderValue: ${AGENT_GITHUB_PRODUCT_HEADER_VALUE}
|
||||
GitHub__PersonalAccessToken: ${AGENT_GITHUB_PERSONAL_ACCESS_TOKEN}
|
||||
GitHub__RepositoryOwner: ${AGENT_GITHUB_REPOSITORY_OWNER}
|
||||
GitHub__Repository: ${AGENT_GITHUB_REPOSITORY}
|
||||
Archive__CommitMessageSuffix: ${AGENT_ARCHIVE_GIT_COMMIT_MESSAGE_SUFFIX}
|
||||
Archive__RepositoryDirectory: ${AGENT_ARCHIVE_GIT_REPOSITORY_DIRECTORY}
|
||||
Archive__SignatureName: ${AGENT_ARCHIVE_GIT_SIGNATURE_NAME}
|
||||
Archive__SignatureEmail: ${AGENT_ARCHIVE_GIT_SIGNATURE_EMAIL}
|
||||
|
||||
networks:
|
||||
reverse-proxy:
|
||||
|
|
|
|||
10
src/FilterLists.Agent/AppSettings/ArchiveSettings.cs
Normal file
10
src/FilterLists.Agent/AppSettings/ArchiveSettings.cs
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
namespace FilterLists.Agent.AppSettings
|
||||
{
|
||||
public class ArchiveSettings
|
||||
{
|
||||
public string CommitMessageSuffix { get; set; }
|
||||
public string RepositoryDirectory { get; set; }
|
||||
public string SignatureName { get; set; }
|
||||
public string SignatureEmail { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
namespace FilterLists.Agent.AppSettings
|
||||
{
|
||||
[UsedImplicitly]
|
||||
public class ConnectionStringsSettings
|
||||
public class ConnectionStringSettings
|
||||
{
|
||||
public string FilterListsConnection { get; set; }
|
||||
}
|
||||
|
|
@ -4,16 +4,16 @@
|
|||
namespace FilterLists.Agent
|
||||
{
|
||||
[UsedImplicitly]
|
||||
public class Options
|
||||
public class CommandLineOptions
|
||||
{
|
||||
public Options(bool captureLists, bool validateUrls)
|
||||
public CommandLineOptions(bool archiveLists, bool validateUrls)
|
||||
{
|
||||
CaptureLists = captureLists;
|
||||
ArchiveLists = archiveLists;
|
||||
ValidateUrls = validateUrls;
|
||||
}
|
||||
|
||||
[Option('c', "capture", Required = false, HelpText = "Capture copies of all lists in the archives repository.")]
|
||||
public bool CaptureLists { get; }
|
||||
[Option('a', "archive", Required = false, HelpText = "Archive copies of all lists in a git repository.")]
|
||||
public bool ArchiveLists { get; }
|
||||
|
||||
[Option('v', "validate", Required = false, HelpText = "Validate all URLs in the FilterLists database.")]
|
||||
public bool ValidateUrls { get; }
|
||||
|
|
@ -38,7 +38,8 @@ private static void AddConfiguration(this IServiceCollection services)
|
|||
#endif
|
||||
.Build();
|
||||
services.ConfigureCustom<ApplicationInsightsSettings>(config);
|
||||
services.ConfigureCustom<ConnectionStringsSettings>(config);
|
||||
services.ConfigureCustom<ArchiveSettings>(config);
|
||||
services.ConfigureCustom<ConnectionStringSettings>(config);
|
||||
services.ConfigureCustom<GitHubSettings>(config);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
namespace FilterLists.Agent.Features.Lists
|
||||
{
|
||||
public static class CaptureLists
|
||||
public static class ArchiveLists
|
||||
{
|
||||
public class Command : IRequest
|
||||
{
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
using System;
|
||||
using FilterLists.Agent.AppSettings;
|
||||
using LibGit2Sharp;
|
||||
using MediatR;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace FilterLists.Agent.Features.Lists
|
||||
{
|
||||
|
|
@ -12,21 +14,25 @@ public class Command : IRequest
|
|||
|
||||
public class Handler : RequestHandler<Command>
|
||||
{
|
||||
private const string RepoDirectory = "archives";
|
||||
private const string SignatureName = "FilterLists.Agent";
|
||||
private const string SignatureEmail = "noreply@filterlists.com";
|
||||
private const string CommitMessageSuffix = " FilterLists archive by FilterLists.Agent";
|
||||
private readonly ArchiveSettings _archiveSettings;
|
||||
|
||||
public Handler(IOptions<ArchiveSettings> archiveSettings)
|
||||
{
|
||||
_archiveSettings = archiveSettings.Value;
|
||||
}
|
||||
|
||||
protected override void Handle(Command request)
|
||||
{
|
||||
if (!Repository.IsValid(RepoDirectory))
|
||||
Repository.Init(RepoDirectory);
|
||||
using (var repo = new Repository(RepoDirectory))
|
||||
if (!Repository.IsValid(_archiveSettings.RepositoryDirectory))
|
||||
Repository.Init(_archiveSettings.RepositoryDirectory);
|
||||
using (var repo = new Repository(_archiveSettings.RepositoryDirectory))
|
||||
{
|
||||
Commands.Stage(repo, "*");
|
||||
var utcNow = DateTime.UtcNow;
|
||||
var signature = new Signature(SignatureName, SignatureEmail, utcNow);
|
||||
repo.Commit(utcNow.ToShortDateString() + CommitMessageSuffix, signature, signature);
|
||||
var signature = new Signature(_archiveSettings.SignatureName, _archiveSettings.SignatureEmail,
|
||||
utcNow);
|
||||
repo.Commit(utcNow.ToShortDateString() + _archiveSettings.CommitMessageSuffix, signature,
|
||||
signature);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,10 +19,10 @@ public static async Task Main(string[] args)
|
|||
var parser = _serviceProvider.GetService<Parser>();
|
||||
var mediator = _serviceProvider.GetService<IMediator>();
|
||||
|
||||
await parser.ParseArguments<Options>(args).MapResult(async o =>
|
||||
await parser.ParseArguments<CommandLineOptions>(args).MapResult(async o =>
|
||||
{
|
||||
if (o.CaptureLists)
|
||||
await mediator.Send(new CaptureLists.Command());
|
||||
if (o.ArchiveLists)
|
||||
await mediator.Send(new ArchiveLists.Command());
|
||||
if (o.ValidateUrls)
|
||||
await mediator.Send(new ValidateAllUrls.Command());
|
||||
},
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
"profiles": {
|
||||
"FilterLists.Agent": {
|
||||
"commandName": "Project",
|
||||
"commandLineArgs": "-c -v"
|
||||
"commandLineArgs": "-a -v"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,7 +2,13 @@
|
|||
"ApplicationInsights": {
|
||||
"InstrumentationKey": ""
|
||||
},
|
||||
"ConnectionStrings": {
|
||||
"Archive": {
|
||||
"RepositoryDirectory": "",
|
||||
"SignatureName": "",
|
||||
"SignatureEmail": "",
|
||||
"CommitMessageSuffix": ""
|
||||
},
|
||||
"ConnectionString": {
|
||||
"FilterListsConnection": ""
|
||||
},
|
||||
"GitHub": {
|
||||
|
|
|
|||
Loading…
Reference in a new issue