public GetResponse<RepoPathPair> Check( GetResponse<string> remote, DirectoryPath localDir, CancellationToken cancel) { try { cancel.ThrowIfCancellationRequested(); if (ShouldKeep.ShouldKeep(localDir: localDir, remoteUrl: remote)) { return GetResponse<RepoPathPair>.Succeed(new(remote.Value, localDir), remote.Reason); } cancel.ThrowIfCancellationRequested(); DeleteEntireDirectory.DeleteEntireFolder(localDir); cancel.ThrowIfCancellationRequested(); if (remote.Failed) return GetResponse<RepoPathPair>.Fail(new(remote.Value, string.Empty), remote.Reason); _logger.Information("Cloning remote {RemotePath}", remote.Value); var clonePath = CloneRepo.Clone(remote.Value, localDir); return GetResponse<RepoPathPair>.Succeed(new(remote.Value, clonePath), remote.Reason); } catch (Exception ex) { _logger.Error(ex, "Failure while checking/cloning repository"); return GetResponse<RepoPathPair>.Fail(new(remote.Value, string.Empty), ex); } }
public void Reset() { var workingDirectory = ProfileDirectories.WorkingDirectory; DeleteEntireDirectory.DeleteEntireFolder(workingDirectory); FileSystem.Directory.CreateDirectory(workingDirectory); }
public async Task Prep(CancellationToken cancel) { DeleteEntireDirectory.DeleteEntireFolder(Pathing.BaseFolder); FileSystem.Directory.CreateDirectory(Pathing.BaseFolder); CreateSolutionFile.Create(Pathing.SolutionFile); CreateProject.Create(GameCategory.Skyrim, Pathing.ProjectFile, insertOldVersion: true, targetFramework: "net5.0"); AddProjectToSolution.Add(Pathing.SolutionFile, Pathing.ProjectFile); await _processRunner.Run( _dotNetCommandStartConstructor.Construct("restore", Pathing.ProjectFile), cancel : cancel).ConfigureAwait(false); }