refactoring
This commit is contained in:
parent
0be787c6fa
commit
c353e44d24
7 changed files with 80 additions and 84 deletions
53
Yavsc.Server/Models/IT/SourceCode/GitClone.cs
Normal file
53
Yavsc.Server/Models/IT/SourceCode/GitClone.cs
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
// // GitClone.cs
|
||||
// /*
|
||||
// paul 21/06/2018 11:27 20182018 6 21
|
||||
// */
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System;
|
||||
|
||||
namespace Yavsc.Server.Models.IT.SourceCode
|
||||
{
|
||||
public class GitClone : SingleCmdProjectBatch
|
||||
{
|
||||
|
||||
public GitClone(string repo) : base(repo,"git")
|
||||
{
|
||||
|
||||
}
|
||||
public override void Launch(Project input)
|
||||
{
|
||||
if (input==null) throw new ArgumentNullException("input");
|
||||
LogPath = $"{input.Name}.git-clone.ansi.log";
|
||||
// TODO honor Args property
|
||||
// Model annotations => input.Repository!=null => input.Name == input.Repository.Path
|
||||
var prjPath = Path.Combine(WorkingDir, input.Name);
|
||||
var repoInfo = new DirectoryInfo(prjPath);
|
||||
var gitCmd = repoInfo.Exists ? "pull" : "clone --depth=1";
|
||||
|
||||
var cloneStart = new ProcessStartInfo
|
||||
( _cmdPath, $"{gitCmd} {input.Repository.Url} {input.Repository.Path}" )
|
||||
{
|
||||
WorkingDirectory = WorkingDir,
|
||||
RedirectStandardOutput = true,
|
||||
UseShellExecute = false
|
||||
};
|
||||
// TODO make `.ansi.log` a defined constant.
|
||||
var logFile = new FileInfo
|
||||
( Path.Combine
|
||||
( _repositoryRootPath, $"{input.Name}.ansi.log" ));
|
||||
using (var stream = logFile.Create())
|
||||
using (var writer = new StreamWriter(stream))
|
||||
{
|
||||
var process = Process.Start(cloneStart);
|
||||
// TODO publish the starting log url ...
|
||||
while (!process.HasExited)
|
||||
{
|
||||
if (process.StandardOutput.Peek() > -1)
|
||||
writer.WriteLine(process.StandardOutput.ReadLine());
|
||||
}
|
||||
}
|
||||
if (ResultHandler!=null) ResultHandler(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue