PushUseCase.cs 753 B

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