Merge pull request #1691 from fermyon/create-woring-dir

Create working dir if it does not exist
This commit is contained in:
Ryan Levick 2023-09-12 11:32:16 +02:00 committed by GitHub
commit 69c13c7bbd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 23 additions and 5 deletions

View File

@ -125,11 +125,13 @@ impl UpCommand {
}
}
let working_dir_holder = match &self.tmp {
None => WorkingDirectory::Temporary(TempDir::with_prefix("spinup-")?),
Some(d) => WorkingDirectory::Given(d.to_owned()),
};
let working_dir = working_dir_holder.path().canonicalize()?;
// Get working dir holder and hold on to it for the rest of the function.
// If the working dir is a temporary dir it will be deleted on drop.
let working_dir_holder = self.get_canonical_working_dir()?;
let working_dir = working_dir_holder
.path()
.canonicalize()
.context("Could not canonicalize working directory")?;
let mut locked_app = match &app_source {
AppSource::None => bail!("Internal error - should have shown help"),
@ -157,6 +159,22 @@ impl UpCommand {
self.run_trigger(trigger_cmd, Some(run_opts)).await
}
fn get_canonical_working_dir(&self) -> Result<WorkingDirectory, anyhow::Error> {
let working_dir_holder = match &self.tmp {
None => WorkingDirectory::Temporary(TempDir::with_prefix("spinup-")?),
Some(d) => WorkingDirectory::Given(d.to_owned()),
};
if !working_dir_holder.path().exists() {
std::fs::create_dir_all(working_dir_holder.path()).with_context(|| {
format!(
"Could not create working directory '{}'",
working_dir_holder.path().display()
)
})?;
}
Ok(working_dir_holder)
}
async fn run_trigger(
self,
trigger_cmd: Vec<String>,