LaunchAndProcessInfo BuildProcessInfo(ITransferProgress progress, string source, string destination, RsyncOptions options) => new LaunchAndProcessInfo(GetProcessStartInfo(source, destination, options)) { StandardOutputAction = (process, data) => _parser.ParseOutput(process, data, progress), StandardErrorAction = (process, data) => _parser.ParseOutput(process, data, progress), MonitorOutput = _processManager.DefaultMonitorOutputTimeOut, MonitorResponding = _processManager.DefaultMonitorRespondingTimeOut };
public ProcessExitResultWithOutput RunAndProcess(ITransferProgress progress, string source, string destination, RsyncOptions options = null) { var processInfo = BuildProcessInfo(progress, source, destination, options); return(ProcessExitResultWithOutput.FromProcessExitResult(_processManager.LaunchAndProcess(processInfo), progress.Output)); }
public ProcessExitResultWithOutput RunAndProcess(ITransferProgress progress, string source, string destination, CancellationToken token, RsyncOptions options = null) { var processInfo = BuildProcessInfo(progress, source, destination, options); processInfo.CancellationToken = token; return ProcessExitResultWithOutput.FromProcessExitResult(_processManager.LaunchAndProcess(processInfo), progress.Output); }
public async Task<ProcessExitResultWithOutput> RunAndProcessAsync(ITransferProgress progress, string source, string destination, RsyncOptions options = null) { var processInfo = BuildProcessInfo(progress, source, destination, options); return ProcessExitResultWithOutput.FromProcessExitResult( await _processManager.LaunchAndProcessAsync(processInfo).ConfigureAwait(false), progress.Output); }
public async Task <ProcessExitResultWithOutput> RunAndProcessAsync(ITransferProgress progress, string source, string destination, RsyncOptions options = null) { var processInfo = BuildProcessInfo(progress, source, destination, options); return (ProcessExitResultWithOutput.FromProcessExitResult( await _processManager.LaunchAndProcessAsync(processInfo).ConfigureAwait(false), progress.Output)); }
public ProcessExitResultWithOutput Run(string source, string destination, RsyncOptions options = null) { var startInfo = new ProcessStartInfo(_binPath.ToString(), JoinArgs(source, destination, options)) .SetWorkingDirectoryOrDefault(Directory.GetCurrentDirectory()); return _processManager.LaunchAndGrab( new BasicLaunchInfo( startInfo) { MonitorOutput = _processManager.DefaultMonitorOutputTimeOut, MonitorResponding = _processManager.DefaultMonitorRespondingTimeOut }); }
public ProcessExitResultWithOutput Run(string source, string destination, RsyncOptions options = null) { var startInfo = new ProcessStartInfo(_binPath.ToString(), JoinArgs(source, destination, options)) .SetWorkingDirectoryOrDefault(Directory.GetCurrentDirectory()); return (_processManager.LaunchAndGrab( new BasicLaunchInfo( startInfo) { MonitorOutput = _processManager.DefaultMonitorOutputTimeOut, MonitorResponding = _processManager.DefaultMonitorRespondingTimeOut })); }
IEnumerable <string> GetArguments(string source, string destination, RsyncOptions options) { if (options == null) { options = new RsyncOptions(); } var args = new[] { defaultParams }.ToList(); if (options.Key != null) { args.Add($"-e \"'{_sshBinPath}' {sshKeyParams} -i '{HandlePath(options.Key)}'\""); } if (options.AdditionalArguments != null) { args.AddRange(options.AdditionalArguments); } args.Add(HandlePath(source).EscapePath()); args.Add(HandlePath(destination).EscapePath()); return(args); }
string JoinArgs(string source, string destination, RsyncOptions options) => string.Join(" ", GetArguments(source, destination, options));
ProcessStartInfo GetProcessStartInfo(string source, string destination, RsyncOptions options) => new ProcessStartInfoBuilder(_binPath, JoinArgs(source, destination, options)) { WorkingDirectory = options.WorkingDirectory ?? Directory.GetCurrentDirectory().ToAbsoluteDirectoryPath() }.Build();
LaunchAndProcessInfo BuildProcessInfo(ITransferProgress progress, string source, string destination, RsyncOptions options) => new LaunchAndProcessInfo(GetProcessStartInfo(source, destination, options)) { StandardOutputAction = (process, data) => _parser.ParseOutput(process, data, progress), StandardErrorAction = (process, data) => _parser.ParseOutput(process, data, progress), MonitorOutput = _processManager.DefaultMonitorOutputTimeOut, MonitorResponding = _processManager.DefaultMonitorRespondingTimeOut };
string JoinArgs(string source, string destination, RsyncOptions options) => string.Join(" ", GetArguments(source, destination, options));
IEnumerable<string> GetArguments(string source, string destination, RsyncOptions options) { if (options == null) options = new RsyncOptions(); var args = new[] {defaultParams}.ToList(); if (options.Key != null) args.Add($"-e \"'{_sshBinPath}' {sshKeyParams} -i '{HandlePath(options.Key)}'\""); if (options.AdditionalArguments != null) args.AddRange(options.AdditionalArguments); args.Add(HandlePath(source).EscapePath()); args.Add(HandlePath(destination).EscapePath()); return args; }
ProcessStartInfo GetProcessStartInfo(string source, string destination, RsyncOptions options) => new ProcessStartInfoBuilder(_binPath, JoinArgs(source, destination, options)) { WorkingDirectory = options.WorkingDirectory ?? Directory.GetCurrentDirectory().ToAbsoluteDirectoryPath() }.Build();