Skip to content

Commit 9ab238b

Browse files
committed
fix build variant remove_dir_all and use crate::common::fs
twoliter build variant produces an error if the tools directory does not exist. This fixes the bug and also uses crate::common::fs for better error messages.
1 parent 5164b3b commit 9ab238b

File tree

3 files changed

+22
-15
lines changed

3 files changed

+22
-15
lines changed

tests/projects/project1/Twoliter.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ schema-version = 1
22
release-version = "1.0.0"
33

44
[sdk]
5-
registry = "twoliter.alpha"
6-
name = "bottlerocket-sdk"
7-
version = "latest"
5+
registry = "877643295804.dkr.ecr.us-west-2.amazonaws.com"
6+
name = "twoliter-alpha-sdk"
7+
version = "1.18.0"
88

99
[toolchain]
1010
registry = "public.ecr.aws/bottlerocket"

twoliter/src/cmd/build.rs

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
use crate::cargo_make::CargoMake;
2+
use crate::common::fs;
3+
use crate::common::fs::{remove_dir_all, remove_file};
24
use crate::docker::DockerContainer;
35
use crate::project;
46
use crate::tools::install_tools;
57
use anyhow::{Context, Result};
68
use clap::Parser;
79
use log::debug;
8-
use std::fs;
910
use std::path::{Path, PathBuf};
1011
use tempfile::TempDir;
11-
use tokio::fs::{remove_dir_all, remove_file};
1212

1313
#[derive(Debug, Parser)]
1414
pub(crate) enum BuildCommand {
@@ -43,15 +43,15 @@ impl BuildVariant {
4343
let project = project::load_or_find_project(self.project_path.clone()).await?;
4444
let token = project.token();
4545
let toolsdir = project.project_dir().join("build/tools");
46-
tokio::fs::remove_dir_all(&toolsdir).await?;
47-
tokio::fs::create_dir_all(&toolsdir).await?;
46+
let _ = fs::remove_dir_all(&toolsdir).await;
47+
fs::create_dir_all(&toolsdir).await?;
4848
install_tools(&toolsdir).await?;
4949
let makefile_path = toolsdir.join("Makefile.toml");
5050
// A temporary directory in the `build` directory
5151
let build_temp_dir = TempDir::new_in(project.project_dir())
5252
.context("Unable to create a tempdir for Twoliter's build")?;
5353
let packages_dir = build_temp_dir.path().join("sdk_rpms");
54-
fs::create_dir_all(&packages_dir)?;
54+
fs::create_dir_all(&packages_dir).await?;
5555

5656
let sdk_container = DockerContainer::new(
5757
format!("sdk-{}", token),
@@ -70,12 +70,18 @@ impl BuildVariant {
7070
.await?;
7171

7272
let rpms_dir = project.project_dir().join("build").join("rpms");
73-
fs::create_dir_all(&rpms_dir)?;
73+
fs::create_dir_all(&rpms_dir).await?;
7474
debug!("Moving rpms to build dir");
75-
for maybe_file in fs::read_dir(packages_dir.join("rpms"))? {
76-
let file = maybe_file?;
77-
debug!("Moving '{}'", file.path().display());
78-
fs::rename(file.path(), rpms_dir.join(file.file_name()))?;
75+
let rpms = packages_dir.join("rpms");
76+
let mut read_dir = tokio::fs::read_dir(&rpms)
77+
.await
78+
.context(format!("Unable to read dir '{}'", rpms.display()))?;
79+
while let Some(entry) = read_dir.next_entry().await.context(format!(
80+
"Error while reading entries in dir '{}'",
81+
rpms.display()
82+
))? {
83+
debug!("Moving '{}'", entry.path().display());
84+
fs::rename(entry.path(), rpms_dir.join(entry.file_name())).await?;
7985
}
8086

8187
let mut created_files = Vec::new();
@@ -84,7 +90,7 @@ impl BuildVariant {
8490
if !sbkeys_dir.is_dir() {
8591
// Create a sbkeys directory in the main project
8692
debug!("sbkeys dir not found. Creating a temporary directory");
87-
fs::create_dir_all(&sbkeys_dir)?;
93+
fs::create_dir_all(&sbkeys_dir).await?;
8894
sdk_container
8995
.cp_out(
9096
Path::new("twoliter/alpha/sbkeys/generate-local-sbkeys"),
@@ -99,6 +105,7 @@ impl BuildVariant {
99105
if !models_dir.is_dir() {
100106
debug!("models source dir not found. Creating a temporary directory");
101107
fs::create_dir_all(&models_dir.join("src/variant"))
108+
.await
102109
.context("Unable to create models source directory")?;
103110
created_files.push(models_dir)
104111
}

twoliter/src/common.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ pub(crate) mod fs {
148148

149149
pub(crate) async fn remove_file(path: impl AsRef<Path>) -> Result<()> {
150150
fs::remove_file(path.as_ref()).await.context(format!(
151-
"Unable to XXSOMETHINGXX '{}'",
151+
"Unable to remove file '{}'",
152152
path.as_ref().display()
153153
))
154154
}

0 commit comments

Comments
 (0)