Merge pull request #7 from tomusdrw/master

More practical workflow.
pull/9/head
Sebastian 5 years ago committed by GitHub
commit 707d34043c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -17,9 +17,15 @@ enum Opts {
#[structopt( #[structopt(
short = "c", short = "c",
long = "copy-back", long = "copy-back",
help = "transfer the target folder back to the local machine" help = "transfer the target folder or specific file from that folder back to the local machine"
)] )]
copy_back: bool, copy_back: Option<Option<String>>,
#[structopt(
long = "no-copy-lock",
help = "don't transfer the Cargo.lock file back to the local machine"
)]
no_copy_lock: bool,
#[structopt( #[structopt(
long = "manifest-path", long = "manifest-path",
@ -80,6 +86,7 @@ fn main() {
let Opts::Remote { let Opts::Remote {
remote, remote,
copy_back, copy_back,
no_copy_lock,
manifest_path, manifest_path,
hidden, hidden,
command, command,
@ -159,7 +166,7 @@ fn main() {
); );
info!("Starting build process."); info!("Starting build process.");
Command::new("ssh") let output = Command::new("ssh")
.arg("-t") .arg("-t")
.arg(&build_server) .arg(&build_server)
.arg(build_command) .arg(build_command)
@ -172,15 +179,16 @@ fn main() {
exit(-5); exit(-5);
}); });
if copy_back { if let Some(file_name) = copy_back {
info!("Transferring artifacts back to client."); info!("Transferring artifacts back to client.");
let file_name = file_name.unwrap_or_else(String::new);
Command::new("rsync") Command::new("rsync")
.arg("-a") .arg("-a")
.arg("--delete") .arg("--delete")
.arg("--compress") .arg("--compress")
.arg("--info=progress2") .arg("--info=progress2")
.arg(format!("{}:{}/target/", build_server, build_path)) .arg(format!("{}:{}/target/{}", build_server, build_path, file_name))
.arg(format!("{}/target/", project_dir.to_string_lossy())) .arg(format!("{}/target/{}", project_dir.to_string_lossy(), file_name))
.stdout(Stdio::inherit()) .stdout(Stdio::inherit())
.stderr(Stdio::inherit()) .stderr(Stdio::inherit())
.stdin(Stdio::inherit()) .stdin(Stdio::inherit())
@ -193,4 +201,30 @@ fn main() {
exit(-6); exit(-6);
}); });
} }
if !no_copy_lock {
info!("Transferring Cargo.lock file back to client.");
Command::new("rsync")
.arg("-a")
.arg("--delete")
.arg("--compress")
.arg("--info=progress2")
.arg(format!("{}:{}/Cargo.lock", build_server, build_path))
.arg(format!("{}/Cargo.lock", project_dir.to_string_lossy()))
.stdout(Stdio::inherit())
.stderr(Stdio::inherit())
.stdin(Stdio::inherit())
.output()
.unwrap_or_else(|e| {
error!(
"Failed to transfer Cargo.lock back to local machine (error: {})",
e
);
exit(-7);
});
}
if !output.status.success() {
exit(output.status.code().unwrap_or(1))
}
} }

Loading…
Cancel
Save