123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 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;
-
- 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),
- }
- }
|