feat(iso): Create generate-iso command (#192)
## Tasks - [x] Add ctrl-c handler to kill spawned children - [x] add more args to support all variables - [x] Add integration test
This commit is contained in:
parent
4634f40840
commit
e6cce3d542
25 changed files with 737 additions and 201 deletions
|
|
@ -1,7 +1,9 @@
|
|||
use blue_build_utils::string_vec;
|
||||
use log::trace;
|
||||
use miette::bail;
|
||||
use miette::{bail, Context, IntoDiagnostic};
|
||||
use oci_distribution::Reference;
|
||||
|
||||
use super::{CiDriver, Driver};
|
||||
use super::{opts::GenerateTagsOpts, CiDriver, Driver};
|
||||
|
||||
pub struct LocalDriver;
|
||||
|
||||
|
|
@ -21,14 +23,31 @@ impl CiDriver for LocalDriver {
|
|||
bail!("Keyless not supported");
|
||||
}
|
||||
|
||||
fn generate_tags(recipe: &blue_build_recipe::Recipe) -> miette::Result<Vec<String>> {
|
||||
trace!("LocalDriver::generate_tags({recipe:?})");
|
||||
Ok(vec![format!("local-{}", Driver::get_os_version(recipe)?)])
|
||||
fn generate_tags(opts: &GenerateTagsOpts) -> miette::Result<Vec<String>> {
|
||||
trace!("LocalDriver::generate_tags({opts:?})");
|
||||
let os_version = Driver::get_os_version(opts.oci_ref)?;
|
||||
Ok(opts.alt_tags.as_ref().map_or_else(
|
||||
|| string_vec![format!("local-{os_version}")],
|
||||
|alt_tags| {
|
||||
alt_tags
|
||||
.iter()
|
||||
.flat_map(|alt| string_vec![format!("local-{alt}-{os_version}")])
|
||||
.collect()
|
||||
},
|
||||
))
|
||||
}
|
||||
|
||||
fn generate_image_name(recipe: &blue_build_recipe::Recipe) -> miette::Result<String> {
|
||||
trace!("LocalDriver::generate_image_name({recipe:?})");
|
||||
Ok(recipe.name.trim().to_lowercase())
|
||||
fn generate_image_name<S>(name: S) -> miette::Result<Reference>
|
||||
where
|
||||
S: AsRef<str>,
|
||||
{
|
||||
fn inner(name: &str) -> miette::Result<Reference> {
|
||||
trace!("LocalDriver::generate_image_name({name})");
|
||||
name.parse()
|
||||
.into_diagnostic()
|
||||
.with_context(|| format!("Unable to parse {name}"))
|
||||
}
|
||||
inner(&name.as_ref().trim().to_lowercase())
|
||||
}
|
||||
|
||||
fn get_repo_url() -> miette::Result<String> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue