PushUseCase.cs 663 B

12345678910111213141516171819202122232425262728
  1. namespace RackPeek.Domain.Git.UseCases;
  2. public interface IPushUseCase
  3. {
  4. Task<string?> ExecuteAsync();
  5. }
  6. public class PushUseCase(IGitRepository repo) : IPushUseCase
  7. {
  8. public Task<string?> ExecuteAsync()
  9. {
  10. if (!repo.IsAvailable)
  11. return Task.FromResult<string?>("Git is not available.");
  12. if (!repo.HasRemote())
  13. return Task.FromResult<string?>("No remote configured.");
  14. try
  15. {
  16. repo.Push();
  17. return Task.FromResult<string?>(null);
  18. }
  19. catch (Exception ex)
  20. {
  21. return Task.FromResult<string?>($"Push failed: {ex.Message}");
  22. }
  23. }
  24. }