extract archive settings

This commit is contained in:
Collin M. Barrett 2019-07-04 21:15:57 -05:00
parent aef36a00e9
commit 29b5283bc2
10 changed files with 60 additions and 33 deletions

View file

@ -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:

View 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; }
}
}

View file

@ -3,7 +3,7 @@
namespace FilterLists.Agent.AppSettings
{
[UsedImplicitly]
public class ConnectionStringsSettings
public class ConnectionStringSettings
{
public string FilterListsConnection { get; set; }
}

View file

@ -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; }

View file

@ -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);
}

View file

@ -5,7 +5,7 @@
namespace FilterLists.Agent.Features.Lists
{
public static class CaptureLists
public static class ArchiveLists
{
public class Command : IRequest
{

View file

@ -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);
}
}
}

View file

@ -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());
},

View file

@ -2,7 +2,7 @@
"profiles": {
"FilterLists.Agent": {
"commandName": "Project",
"commandLineArgs": "-c -v"
"commandLineArgs": "-a -v"
}
}
}

View file

@ -2,7 +2,13 @@
"ApplicationInsights": {
"InstrumentationKey": ""
},
"ConnectionStrings": {
"Archive": {
"RepositoryDirectory": "",
"SignatureName": "",
"SignatureEmail": "",
"CommitMessageSuffix": ""
},
"ConnectionString": {
"FilterListsConnection": ""
},
"GitHub": {