You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
aya/xtask/src/main.rs

52 lines
1.3 KiB
Rust

mod codegen;
mod docs;
mod public_api;
mod run;
use std::process::Command;
use anyhow::{Context as _, Result};
use cargo_metadata::{Metadata, MetadataCommand};
use clap::Parser;
use xtask::{exec, LIBBPF_DIR};
#[derive(Parser)]
pub struct XtaskOptions {
#[clap(subcommand)]
command: Subcommand,
}
#[derive(Parser)]
enum Subcommand {
Codegen(codegen::Options),
Docs,
IntegrationTest(run::Options),
PublicApi(public_api::Options),
}
fn main() -> Result<()> {
let XtaskOptions { command } = Parser::parse();
let metadata = MetadataCommand::new()
.no_deps()
.exec()
.context("failed to run cargo metadata")?;
let Metadata { workspace_root, .. } = &metadata;
// Initialize the submodules.
exec(Command::new("git").arg("-C").arg(workspace_root).args([
"submodule",
"update",
"--init",
]))?;
let libbpf_dir = workspace_root.join(LIBBPF_DIR);
let libbpf_dir = libbpf_dir.as_std_path();
match command {
Subcommand::Codegen(opts) => codegen::codegen(opts, libbpf_dir),
Subcommand::Docs => docs::docs(metadata),
Subcommand::IntegrationTest(opts) => run::run(opts),
Subcommand::PublicApi(opts) => public_api::public_api(opts, metadata),
}
}