Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using RepoM.Api.Common;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
using RepoM.Core.Plugin.Expressions;
Expand All @@ -15,12 +14,10 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;
public class ActionAssociateFileV1Mapper : IActionToRepositoryActionMapper
{
private readonly IRepositoryExpressionEvaluator _expressionEvaluator;
private readonly ITranslationService _translationService;

public ActionAssociateFileV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator, ITranslationService translationService)
public ActionAssociateFileV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator)
{
_expressionEvaluator = expressionEvaluator ?? throw new ArgumentNullException(nameof(expressionEvaluator));
_translationService = translationService ?? throw new ArgumentNullException(nameof(translationService));
}

bool IActionToRepositoryActionMapper.CanMap(RepositoryAction action)
Expand Down Expand Up @@ -50,8 +47,8 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
yield break;
}

var name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);

Git.RepositoryAction? menuItem = CreateFileAssociationSubMenu(
repository,
name,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ private IEnumerable<RepositoryAction> Map(RepositoryActionBrowseRepositoryV1? ac
}
}

private RepositoryAction? CreateBrowseRemoteAction(Repository repository, RepositoryActionBrowseRepositoryV1 action)
private RepositoryAction? CreateBrowseRemoteAction(IRepository repository, RepositoryActionBrowseRepositoryV1 action)
{
if (repository.Remotes.Count == 0)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;

using System;
using System.Collections.Generic;
using System.Linq;
using RepoM.Api.Common;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
using RepoM.Core.Plugin.Expressions;
Expand All @@ -13,12 +11,10 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;
public class ActionBrowserV1Mapper : IActionToRepositoryActionMapper
{
private readonly IRepositoryExpressionEvaluator _expressionEvaluator;
private readonly ITranslationService _translationService;

public ActionBrowserV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator, ITranslationService translationService)
public ActionBrowserV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator)
{
_expressionEvaluator = expressionEvaluator ?? throw new ArgumentNullException(nameof(expressionEvaluator));
_translationService = translationService ?? throw new ArgumentNullException(nameof(translationService));
}

bool IActionToRepositoryActionMapper.CanMap(Data.RepositoryAction action)
Expand Down Expand Up @@ -48,7 +44,7 @@ private IEnumerable<RepositoryAction> Map(RepositoryActionBrowserV1? action, Rep
yield break;
}

var name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);
var url = _expressionEvaluator.EvaluateStringExpression(action.Url, repository);
yield return new RepositoryAction(name, repository)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,20 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;

using System;
using System.Collections.Generic;
using System.Linq;
using RepoM.Api.Common;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
using RepoM.Core.Plugin.Expressions;
using RepoM.Core.Plugin.Repository;
using RepoM.Core.Plugin.RepositoryActions.Actions;
using RepositoryAction = RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.RepositoryAction;

public class ActionCommandV1Mapper : IActionToRepositoryActionMapper
{
private readonly IRepositoryExpressionEvaluator _expressionEvaluator;
private readonly ITranslationService _translationService;

public ActionCommandV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator, ITranslationService translationService)
public ActionCommandV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator)
{
_expressionEvaluator = expressionEvaluator ?? throw new ArgumentNullException(nameof(expressionEvaluator));
_translationService = translationService ?? throw new ArgumentNullException(nameof(translationService));
}

bool IActionToRepositoryActionMapper.CanMap(RepositoryAction action)
Expand All @@ -31,7 +28,7 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
return Map(action as RepositoryActionCommandV1, repository);
}

private IEnumerable<Git.RepositoryAction> Map(RepositoryActionCommandV1? action, Repository repository)
private IEnumerable<Git.RepositoryAction> Map(RepositoryActionCommandV1? action, IRepository repository)
{
if (action == null)
{
Expand All @@ -43,9 +40,9 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
yield break;
}

var name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
var command = _expressionEvaluator.EvaluateStringExpression(action.Command ?? string.Empty, repository);
var arguments = _expressionEvaluator.EvaluateStringExpression(action.Arguments ?? string.Empty, repository);
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);
var command = _expressionEvaluator.EvaluateNullStringExpression(action.Command, repository);
var arguments = _expressionEvaluator.EvaluateNullStringExpression(action.Arguments, repository);

yield return new Git.RepositoryAction(name, repository)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,21 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;
using System;
using System.Collections.Generic;
using System.IO.Abstractions;
using System.Linq;
using RepoM.Api.Common;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
using RepoM.Core.Plugin.Expressions;
using RepoM.Core.Plugin.Repository;
using RepoM.Core.Plugin.RepositoryActions.Actions;
using RepositoryAction = Data.RepositoryAction;

public class ActionExecutableV1Mapper : IActionToRepositoryActionMapper
{
private readonly IRepositoryExpressionEvaluator _expressionEvaluator;
private readonly ITranslationService _translationService;
private readonly IFileSystem _fileSystem;

public ActionExecutableV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator, ITranslationService translationService, IFileSystem fileSystem)
public ActionExecutableV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator, IFileSystem fileSystem)
{
_expressionEvaluator = expressionEvaluator ?? throw new ArgumentNullException(nameof(expressionEvaluator));
_translationService = translationService ?? throw new ArgumentNullException(nameof(translationService));
_fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
}

Expand All @@ -34,7 +31,7 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
return Map(action as RepositoryActionExecutableV1, repository);
}

private IEnumerable<Git.RepositoryAction> Map(RepositoryActionExecutableV1? action, Repository repository)
private IEnumerable<Git.RepositoryAction> Map(RepositoryActionExecutableV1? action, IRepository repository)
{
if (action == null)
{
Expand All @@ -46,7 +43,7 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
yield break;
}

var name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);

var found = false;
foreach (var executable in action.Executables)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;
using System;
using System.Collections.Generic;
using System.Linq;
using RepoM.Api.Common;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
using RepoM.Core.Plugin.Expressions;
Expand All @@ -12,12 +11,10 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;
public class ActionFolderV1Mapper : IActionToRepositoryActionMapper
{
private readonly IRepositoryExpressionEvaluator _expressionEvaluator;
private readonly ITranslationService _translationService;

public ActionFolderV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator, ITranslationService translationService)
public ActionFolderV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator)
{
_expressionEvaluator = expressionEvaluator ?? throw new ArgumentNullException(nameof(expressionEvaluator));
_translationService = translationService ?? throw new ArgumentNullException(nameof(translationService));
}

bool IActionToRepositoryActionMapper.CanMap(RepositoryAction action)
Expand Down Expand Up @@ -48,7 +45,7 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
deferred = _expressionEvaluator.EvaluateBooleanExpression(action.IsDeferred, repository);
}

var name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);

if (deferred)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,7 @@ private IEnumerable<RepositoryActionBase> Map(RepositoryActionGitCheckoutV1? act
yield break;
}

var name = action.Name;
if (!string.IsNullOrEmpty(name))
{
name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
}
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);

if (string.IsNullOrWhiteSpace(name))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;

using System;
using System.Collections.Generic;
using System.Linq;
using RepoM.Api.Common;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,20 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;

using System;
using System.Collections.Generic;
using System.Linq;
using RepoM.Api.Common;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
using RepoM.Core.Plugin.Expressions;
using RepoM.Core.Plugin.Repository;
using RepoM.Core.Plugin.RepositoryActions.Actions;
using RepositoryAction = RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.RepositoryAction;

public class ActionJustTextV1Mapper : IActionToRepositoryActionMapper
{
private readonly IRepositoryExpressionEvaluator _expressionEvaluator;
private readonly ITranslationService _translationService;

public ActionJustTextV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator, ITranslationService translationService)
public ActionJustTextV1Mapper(IRepositoryExpressionEvaluator expressionEvaluator)
{
_expressionEvaluator = expressionEvaluator ?? throw new ArgumentNullException(nameof(expressionEvaluator));
_translationService = translationService ?? throw new ArgumentNullException(nameof(translationService));
}

bool IActionToRepositoryActionMapper.CanMap(RepositoryAction action)
Expand All @@ -31,7 +28,7 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
return Map(action as RepositoryActionJustTextV1, repository);
}

private IEnumerable<RepoM.Api.Git.RepositoryAction> Map(RepositoryActionJustTextV1? action, Repository repository)
private IEnumerable<RepoM.Api.Git.RepositoryAction> Map(RepositoryActionJustTextV1? action, IRepository repository)
{
if (action == null)
{
Expand All @@ -43,7 +40,7 @@ IEnumerable<RepositoryActionBase> IActionToRepositoryActionMapper.Map(Repository
yield break;
}

var name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);

yield return new Git.RepositoryAction(name, repository)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,24 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionMappers;

using System;
using System.Collections.Generic;
using RepoM.Api.Common;
using JetBrains.Annotations;
using RepoM.Api.Git;
using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.Actions;
using RepoM.Core.Plugin.Expressions;
using RepoM.Core.Plugin.RepositoryActions.Actions;
using RepositoryAction = RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data.RepositoryAction;

[UsedImplicitly]
public class ActionPinRepositoryV1Mapper : IActionToRepositoryActionMapper
{
private readonly IRepositoryExpressionEvaluator _expressionEvaluator;
private readonly ITranslationService _translationService;
private readonly IRepositoryMonitor _repositoryMonitor;

public ActionPinRepositoryV1Mapper(
IRepositoryExpressionEvaluator expressionEvaluator,
ITranslationService translationService,
IRepositoryMonitor repositoryMonitor)
{
_expressionEvaluator = expressionEvaluator ?? throw new ArgumentNullException(nameof(expressionEvaluator));
_translationService = translationService ?? throw new ArgumentNullException(nameof(translationService));
_repositoryMonitor = repositoryMonitor ?? throw new ArgumentNullException(nameof(repositoryMonitor));
}

Expand All @@ -47,11 +45,7 @@ private IEnumerable<RepositoryActionBase> Map(RepositoryActionPinRepositoryV1? a
yield break;
}

var name = action.Name ?? string.Empty;
if (!string.IsNullOrEmpty(name))
{
name = NameHelper.EvaluateName(action.Name, repository, _translationService, _expressionEvaluator);
}
var name = _expressionEvaluator.EvaluateNullStringExpression(action.Name, repository);

var currentlyPinned = _repositoryMonitor.IsPinned(repository);

Expand All @@ -69,20 +63,20 @@ private IEnumerable<RepositoryActionBase> Map(RepositoryActionPinRepositoryV1? a
};
}

Git.RepositoryAction CreateAction(string name, Repository repository, bool newPinnedValue)
{
return new Git.RepositoryAction(name, repository)
{
Action = new DelegateAction((_, _) => _repositoryMonitor.SetPinned(newPinnedValue, repository)),
};
}

yield return action.Mode switch
{
RepositoryActionPinRepositoryV1.PinMode.Toggle => CreateAction(name, repository, !currentlyPinned),
RepositoryActionPinRepositoryV1.PinMode.Pin => CreateAction(name, repository, true),
RepositoryActionPinRepositoryV1.PinMode.UnPin => CreateAction(name, repository, false),
_ => throw new NotImplementedException(),
};

Git.RepositoryAction CreateAction(string actionName, Repository repo, bool newPinnedValue)
{
return new Git.RepositoryAction(actionName, repo)
{
Action = new DelegateAction((_, _) => _repositoryMonitor.SetPinned(newPinnedValue, repo)),
};
}
}
}
43 changes: 0 additions & 43 deletions src/RepoM.Api/IO/NameHelper.cs

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,17 @@ public interface IRepositoryExpressionEvaluator
object? EvaluateValueExpression(string value, IRepository? repository);

bool EvaluateBooleanExpression(string? value, IRepository? repository);
}

public static class RepositoryExpressionEvaluatorExtensions
{
public static string EvaluateNullStringExpression(this IRepositoryExpressionEvaluator evaluator, string? value, IRepository? repository)
{
if (string.IsNullOrEmpty(value))
{
return string.Empty;
}

return evaluator.EvaluateStringExpression(value, repository);
}
}
Loading