diff --git a/lib/src/cli.rs b/lib/src/cli.rs index 7d0fbea62..fc1e33c99 100644 --- a/lib/src/cli.rs +++ b/lib/src/cli.rs @@ -12,6 +12,7 @@ use ostree_container::store::PrepareResult; use ostree_ext::container as ostree_container; use ostree_ext::keyfileext::KeyFileExt; use ostree_ext::ostree; +use tracing::field::debug; use std::ffi::OsString; use std::io::Seek; use std::os::unix::process::CommandExt; @@ -212,6 +213,8 @@ pub(crate) enum Opt { #[clap(subcommand)] #[cfg(feature = "install")] Install(InstallOpts), + /// Validate non supported files are not present. + BuildLint, /// Execute the given command in the host mount namespace #[cfg(feature = "install")] #[clap(hide = true)] @@ -512,6 +515,27 @@ async fn usroverlay() -> Result<()> { .into()); } +/// Implementation of `bootc build commit` +/// async fn lint() -> Result<()> { +fn lint() -> Result<()> { + // TODO: Check if 1 or more folder under the /lib/modules/ directory + println!("Checking if we are in the container"); + if ostree_ext::container_utils::is_ostree_container()? { + let modules_path = cap_std::fs::Dir::open_ambient_dir("lib/modules", cap_std::ambient_authority())?; + for entry in modules_path.entries()? { + let dir = entry?; + let fileName= dir.file_name(); + debug(fileName); + + } + return Ok(()); + } + anyhow::bail!( + "Not in a ostree container, this command only verifies ostree containers." + ); + +} + /// Parse the provided arguments and execute. /// Calls [`structopt::clap::Error::exit`] on failure, printing the error message and aborting the program. pub async fn run_from_iter(args: I) -> Result<()> @@ -529,6 +553,7 @@ async fn run_from_opt(opt: Opt) -> Result<()> { Opt::Switch(opts) => switch(opts).await, Opt::Edit(opts) => edit(opts).await, Opt::UsrOverlay => usroverlay().await, + Opt::BuildLint => lint(), #[cfg(feature = "install")] Opt::Install(opts) => match opts { InstallOpts::ToDisk(opts) => crate::install::install_to_disk(opts).await,