xtask: Add docs build

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
pull/259/head
Dave Tucker 3 years ago
parent f721021a0a
commit 8205bee930

@ -0,0 +1,54 @@
use std::{
path::{Path, PathBuf},
process::Command,
};
use std::{fs, io};
pub fn docs() -> Result<(), anyhow::Error> {
let mut working_dir = PathBuf::from(".");
let args = vec![
"+nightly",
"doc",
"--workspace",
"--no-deps",
"--all-features",
];
let status = Command::new("cargo")
.current_dir(&working_dir)
.args(&args)
.status()
.expect("failed to build aya docs");
assert!(status.success());
working_dir.push("bpf");
let status = Command::new("cargo")
.current_dir(&working_dir)
.args(&args)
.status()
.expect("failed to build aya-bpf docs");
assert!(status.success());
copy_dir_all("./bpf/target/doc", "./target/doc")?;
Ok(())
}
fn copy_dir_all<P: AsRef<Path>>(src: P, dst: P) -> io::Result<()> {
fs::create_dir_all(&dst)?;
for entry in fs::read_dir(src)? {
let entry = entry?;
let ty = entry.file_type()?;
if ty.is_dir() {
copy_dir_all(entry.path(), dst.as_ref().join(entry.file_name()))?;
} else {
let new_path = dst.as_ref().join(entry.file_name());
if !new_path.exists() {
fs::copy(entry.path(), dst.as_ref().join(entry.file_name()))?;
}
}
}
Ok(())
}

@ -1,4 +1,5 @@
mod codegen;
mod docs;
use std::process::exit;
@ -12,6 +13,7 @@ pub struct Options {
#[derive(StructOpt)]
enum Command {
Codegen(codegen::Options),
Docs,
}
fn main() {
@ -20,6 +22,7 @@ fn main() {
use Command::*;
let ret = match opts.command {
Codegen(opts) => codegen::codegen(opts),
Docs => docs::docs(),
};
if let Err(e) = ret {

Loading…
Cancel
Save