AddRemoteUseCase.cs 894 B

12345678910111213141516171819202122232425
  1. namespace RackPeek.Domain.Git.UseCases;
  2. public class AddRemoteUseCase(IGitRepository repo) : IUseCase {
  3. public Task<string?> ExecuteAsync(string url) {
  4. if (!repo.IsAvailable)
  5. return Task.FromResult<string?>("Git is not available.");
  6. if (string.IsNullOrWhiteSpace(url))
  7. return Task.FromResult<string?>("URL is required.");
  8. if (!url.Trim().StartsWith("https://", StringComparison.OrdinalIgnoreCase))
  9. return Task.FromResult<string?>("Only HTTPS URLs are supported.");
  10. if (repo.HasRemote())
  11. return Task.FromResult<string?>("Remote already configured.");
  12. try {
  13. repo.AddRemote("origin", url.Trim());
  14. return Task.FromResult<string?>(null);
  15. }
  16. catch (Exception ex) {
  17. return Task.FromResult<string?>($"Add remote failed: {ex.Message}");
  18. }
  19. }
  20. }