start with a clean ci/builds always

This commit is contained in:
Lotte Steenbrink 2021-09-20 17:35:15 +02:00
parent 7ce4391e4e
commit 7f45254e39
2 changed files with 24 additions and 6 deletions

View file

@ -1,7 +1,22 @@
use std::path::PathBuf; use std::{
fs,
path::{Path, PathBuf},
};
use crate::{command::BuildMode, TestRunError}; use crate::{command::BuildMode, TestRunError};
const HEX_BUILD_ROOT: &str = "ci/builds";
/// make sure we're starting with a clean,but existing slate
pub fn init_build_dir() -> anyhow::Result<()> {
if Path::new(HEX_BUILD_ROOT).exists() {
fs::remove_dir_all(HEX_BUILD_ROOT)
.map_err(|_| anyhow::anyhow!("Could not clear out directory: {}", HEX_BUILD_ROOT))?;
}
fs::create_dir_all(HEX_BUILD_ROOT)
.map_err(|_| anyhow::anyhow!("Could not create directory: {}", HEX_BUILD_ROOT))
}
pub fn build_hexpath( pub fn build_hexpath(
example: &str, example: &str,
features: Option<&str>, features: Option<&str>,
@ -14,10 +29,11 @@ pub fn build_hexpath(
}; };
let filename = format!("{}_{}_{}_{}.hex", example, features, build_mode, build_num); let filename = format!("{}_{}_{}_{}.hex", example, features, build_mode, build_num);
["ci", "builds", &filename]
.iter() let mut path = PathBuf::from(HEX_BUILD_ROOT);
.collect::<PathBuf>() path.push(filename);
.into_os_string()
path.into_os_string()
.into_string() .into_string()
.map_err(|e| anyhow::Error::new(TestRunError::PathConversionError(e))) .map_err(|e| anyhow::Error::new(TestRunError::PathConversionError(e)))
} }

View file

@ -14,7 +14,7 @@ use std::{
use structopt::StructOpt; use structopt::StructOpt;
use crate::{ use crate::{
build::{build_hexpath, compare_builds}, build::{build_hexpath, compare_builds, init_build_dir},
command::{run_command, run_successful, BuildMode, CargoCommand}, command::{run_command, run_successful, BuildMode, CargoCommand},
}; };
@ -98,6 +98,8 @@ fn main() -> anyhow::Result<()> {
let opts = Options::from_args(); let opts = Options::from_args();
let target = &opts.target; let target = &opts.target;
init_build_dir()?;
if target == "all" { if target == "all" {
for t in targets { for t in targets {
run_test(t, examples)?; run_test(t, examples)?;