git add .cargo and xtask

pull/350/head
Alessandro Decina 3 years ago committed by Dave Tucker
parent cced3da5c8
commit 6d14a16d8e

@ -0,0 +1,2 @@
[alias]
xtask = "run --package xtask --"

@ -0,0 +1,10 @@
[package]
name = "xtask"
version = "0.1.0"
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
structopt = {version = "0.3", default-features = false }
anyhow = "1"

@ -0,0 +1,62 @@
use std::path::PathBuf;
use std::process::Command;
use structopt::StructOpt;
#[derive(Debug, Copy, Clone)]
pub enum Architecture {
BpfEl,
BpfEb,
}
impl std::str::FromStr for Architecture {
type Err = String;
fn from_str(s: &str) -> Result<Self, Self::Err> {
Ok(match s {
"bpfel-unknown-none" => Architecture::BpfEl,
"bpfeb-unknown-none" => Architecture::BpfEb,
_ => return Err("invalid target".to_owned()),
})
}
}
impl std::fmt::Display for Architecture {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
Architecture::BpfEl => "bpfel-unknown-none",
Architecture::BpfEb => "bpfeb-unknown-none",
})
}
}
#[derive(StructOpt)]
pub struct Options {
#[structopt(default_value = "bpfel-unknown-none", long)]
target: Architecture,
#[structopt(long)]
release: bool,
}
pub fn build(opts: Options) -> Result<(), anyhow::Error> {
let dir = PathBuf::from("aya-log-ebpf");
let target = format!("--target={}", opts.target);
let mut args = vec![
"+nightly",
"build",
"--verbose",
target.as_str(),
"-Z",
"build-std=core",
];
if opts.release {
args.push("--release")
}
let status = Command::new("cargo")
.current_dir(&dir)
.args(&args)
.status()
.expect("failed to build bpf examples");
assert!(status.success());
Ok(())
}

@ -0,0 +1,29 @@
mod build_ebpf;
use std::process::exit;
use structopt::StructOpt;
#[derive(StructOpt)]
pub struct Options {
#[structopt(subcommand)]
command: Command,
}
#[derive(StructOpt)]
enum Command {
BuildEbpf(build_ebpf::Options),
}
fn main() {
let opts = Options::from_args();
use Command::*;
let ret = match opts.command {
BuildEbpf(opts) => build_ebpf::build(opts),
};
if let Err(e) = ret {
eprintln!("{:#}", e);
exit(1);
}
}
Loading…
Cancel
Save