PushUseCase.cs 709 B

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