Skip to content

Commit

Permalink
Merge pull request #320 from dave-tucker/moar-crabby-docs
Browse files Browse the repository at this point in the history
Fix development docs build
  • Loading branch information
dave-tucker committed Jun 14, 2022
2 parents 4f13576 + 2b98259 commit ed3b690
Show file tree
Hide file tree
Showing 9 changed files with 408 additions and 31 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@ target/
libbpf/
.vscode/
!.vscode/settings.json
site/
header.html
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Aya
# [![Aya](assets/logo.svg)](https://aya-rs.dev)

[![Crates.io][crates-badge]][crates-url]
![License][license-badge]
Expand All @@ -11,14 +11,14 @@
[license-badge]: https://img.shields.io/badge/license-MIT%2FApache--2.0-blue?style=for-the-badge
[build-badge]: https://img.shields.io/github/workflow/status/aya-rs/aya/build-aya?style=for-the-badge&logo=github
[book-badge]: https://img.shields.io/badge/read%20the-book-9cf.svg?style=for-the-badge&logo=mdbook
[book-url]: http://aya-rs.github.io/book/
[book-url]: https://aya-rs.dev/book

## API Documentation

[![Unreleased Documentation][git-docs-badge]][git-api-docs] [![Documentaiton][api-docs-badge]][api-docs]

[git-docs-badge]: https://img.shields.io/badge/docs-unreleased-red.svg?style=for-the-badge&logo=docsdotrs
[git-api-docs]: https://aya-rs.netlify.app
[git-api-docs]: https://docs.aya-rs.dev
[api-docs-badge]: https://img.shields.io/badge/docs-released-blue.svg?style=for-the-badge&logo=docsdotrs
[api-docs]: https://docs.rs/aya

Expand Down
279 changes: 279 additions & 0 deletions assets/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
43 changes: 28 additions & 15 deletions aya/README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,38 @@
# Aya
# [![Aya](../assets/logo.svg)](https://aya-rs.dev)

[![Crates.io][crates-badge]][crates-url]
![License][license-badge]
![Build status][build-badge]
[![Documentaiton][docs-badge]][docs-url]
[![Book][book-badge]][book-url]

[crates-badge]: https://img.shields.io/crates/v/aya.svg

[crates-badge]: https://img.shields.io/crates/v/aya.svg?style=for-the-badge&logo=rust
[crates-url]: https://crates.io/crates/aya
[license-badge]: https://img.shields.io/badge/license-MIT%2FApache--2.0-blue
[build-badge]: https://github.com/aya-rs/aya/actions/workflows/build-test.yml/badge.svg
[docs-badge]: https://img.shields.io/badge/docs-website-blue.svg
[docs-url]: http://aya-rs.github.io/book/
[license-badge]: https://img.shields.io/badge/license-MIT%2FApache--2.0-blue?style=for-the-badge
[build-badge]: https://img.shields.io/github/workflow/status/aya-rs/aya/build-aya?style=for-the-badge&logo=github
[book-badge]: https://img.shields.io/badge/read%20the-book-9cf.svg?style=for-the-badge&logo=mdbook
[book-url]: https://aya-rs.dev/book

## API Documentation

[API docs][api-docs] | [Chat][chat-url]
[![Unreleased Documentation][git-docs-badge]][git-api-docs] [![Documentaiton][api-docs-badge]][api-docs]

[git-docs-badge]: https://img.shields.io/badge/docs-unreleased-red.svg?style=for-the-badge&logo=docsdotrs
[git-api-docs]: https://docs.aya-rs.dev
[api-docs-badge]: https://img.shields.io/badge/docs-released-blue.svg?style=for-the-badge&logo=docsdotrs
[api-docs]: https://docs.rs/aya

## Community

[![Discord][discord-badge]][chat-url] [![Awesome][awesome-badge]][awesome-aya]

Join [the conversation on Discord][chat-url] to discuss anything related to Aya, or discover
and contribute to a list of [Awesome Aya][awesome-aya] projects.

[discord-badge]: https://img.shields.io/badge/Discord-chat-5865F2?style=for-the-badge&logo=discord
[chat-url]: https://discord.gg/xHW2cb2N6G
[awesome-aya]: https://github.com/aya-rs/awesome-aya
[awesome-badge]: https://img.shields.io/badge/Awesome-Aya-FC60A8?style=for-the-badge&logo=awesomelists

## Overview

Expand Down Expand Up @@ -46,7 +63,7 @@ Some of the major features provided include:
[libbpf]: https://github.com/libbpf/libbpf
[bcc]: https://github.com/iovisor/bcc
[libc]: https://docs.rs/libc
[co-re]: https://facebookmicrosites.github.io/bpf/blog/2020/02/19/bpf-portability-and-co-re.html
[co-re]: https://facebookmicrosites.github.io/bpf/blog/2020/02/19/bpf-portability-and-co-re.html
[tokio]: https://docs.rs/tokio
[async-std]: https://docs.rs/async-std

Expand All @@ -65,7 +82,7 @@ use aya::programs::{CgroupSkb, CgroupSkbAttachType};
// load the BPF code
let mut bpf = Bpf::load_file("bpf.o")?;

// get the `ingress_filter` program compiled into `bpf.o`.
// get the `ingress_filter` program compiled into `bpf.o`.
let ingress: &mut CgroupSkb = bpf.program_mut("ingress_filter")?.try_into()?;

// load the program into the kernel
Expand All @@ -77,10 +94,6 @@ let cgroup = File::open("/sys/fs/cgroup/unified")?;
ingress.attach(cgroup, CgroupSkbAttachType::Ingress)?;
```

## Community

Join [the conversation on Discord][chat-url] to discuss anything related to aya.

## Contributing

Please see the [contributing guide](https://github.com/aya-rs/aya/blob/main/CONTRIBUTING.md).
Expand All @@ -89,7 +102,7 @@ Please see the [contributing guide](https://github.com/aya-rs/aya/blob/main/CONT
Aya is distributed under the terms of either the [MIT license] or the [Apache License] (version
2.0), at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

[MIT license]: https://github.com/aya-rs/aya/blob/main/LICENSE-MIT
[Apache license]: https://github.com/aya-rs/aya/blob/main/LICENSE-APACHE
7 changes: 7 additions & 0 deletions aya/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
//! [![](https://aya-rs.dev/assets/images/aya_logo_docs.svg)](https://aya-rs.dev)
//!
//! A library to work with eBPF programs.
//!
//! eBPF is a technology that allows running user-supplied programs inside the
Expand Down Expand Up @@ -29,6 +31,11 @@
//!
//! [tokio]: https://docs.rs/tokio
//! [async-std]: https://docs.rs/async-std

#![doc(
html_logo_url = "https://aya-rs.dev/assets/images/crabby.svg",
html_favicon_url = "https://aya-rs.dev/assets/images/crabby.svg"
)]
#![deny(clippy::all, missing_docs)]
#![allow(clippy::missing_safety_doc, clippy::len_without_is_empty)]

Expand Down
11 changes: 11 additions & 0 deletions bpf/aya-bpf/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
//! [![](https://aya-rs.dev/assets/images/aya_logo_docs.svg)](https://aya-rs.dev)
//!
//! A library to write eBPF programs.
//!
//! Aya-bpf is an eBPF library built with a focus on operability and developer experience.
//! It is the kernel-space counterpart of [Aya](https://docs.rs/aya)

#![doc(
html_logo_url = "https://aya-rs.dev/assets/images/crabby.svg",
html_favicon_url = "https://aya-rs.dev/assets/images/crabby.svg"
)]
#![feature(never_type)]
#![allow(clippy::missing_safety_doc)]
#![no_std]
Expand Down
6 changes: 1 addition & 5 deletions netlify.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
[build]
publish = "target/doc"
publish = "site"
command = "rustup toolchain install nightly && cargo xtask docs"

[[redirects]]
from = "/"
to = "/aya"
3 changes: 2 additions & 1 deletion xtask/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@ anyhow = "1"
syn = "1"
quote = "1"
proc-macro2 = "1"
indexmap = "1.6"
indexmap = "1.6"
indoc = "1.0"
82 changes: 75 additions & 7 deletions xtask/src/docs/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,31 @@ use std::{

use std::{fs, io, io::Write};

use indoc::indoc;

pub fn docs() -> Result<(), anyhow::Error> {
let mut working_dir = PathBuf::from(".");

let replace = Command::new("sed")
.current_dir(&working_dir)
.args(vec![
"-i.bak",
"s/crabby.svg/crabby_dev.svg/",
"aya/src/lib.rs",
])
.status()
.expect("failed to replace logo");
assert!(replace.success());

let mut header_path = PathBuf::from(".");
header_path.push("header.html");
let mut header = fs::File::create(&header_path).expect("can't create header.html");
header
.write(r#"<meta name="robots" content="noindex">"#.as_bytes())
.expect("can't write header.html contents");
header.flush().expect("couldn't flush contents");

let abs_header_path = fs::canonicalize(&header_path).unwrap();
let args = vec![
"+nightly",
"doc",
Expand All @@ -18,27 +40,73 @@ pub fn docs() -> Result<(), anyhow::Error> {

let status = Command::new("cargo")
.current_dir(&working_dir)
.env(
"RUSTDOCFLAGS",
format!("--html-in-header {}", abs_header_path.to_str().unwrap()),
)
.args(&args)
.status()
.expect("failed to build aya docs");
assert!(status.success());

working_dir.push("bpf");

let replace = Command::new("sed")
.current_dir(&working_dir)
.args(vec![
"-i.bak",
"s/crabby.svg/crabby_dev.svg/",
"aya-bpf/src/lib.rs",
])
.status()
.expect("failed to replace logo");
assert!(replace.success());

let status = Command::new("cargo")
.current_dir(&working_dir)
.env(
"RUSTDOCFLAGS",
format!("--html-in-header {}", abs_header_path.to_str().unwrap()),
)
.args(&args)
.status()
.expect("failed to build aya-bpf docs");
assert!(status.success());

copy_dir_all("./bpf/target/doc", "./target/doc")?;
copy_dir_all("./target/doc", "site/user")?;
copy_dir_all("./bpf/target/doc", "site/bpf")?;

let mut robots = fs::File::create("site/robots.txt").expect("can't create robots.txt");
robots
.write(
indoc! {r#"
User-Agent:*
Disallow: /
"#}
.as_bytes(),
)
.expect("can't write robots.txt");

let mut index = fs::File::create("site/index.html").expect("can't create index.html");
index
.write(
indoc! {r#"
<html>
<meta name="robots" content="noindex">
<body>
<ul>
<li><a href="user/aya/index.html">Aya User-space Development Documentation</a></li>
<li><a href="bpf/aya_bpf/index.html">Aya Kernel-space Development Documentation</a></li>
</ul>
</body>
</html>
"#}
.as_bytes(),
)
.expect("can't write index.html");

let crates_js = b"window.ALL_CRATES = [\"aya\", \"aya_bpf\", \"aya_bpf_bindings\", \"aya_bpf_cty\", \"aya_bpf_macros\", \"aya_gen\"];\n";
let mut file = fs::File::options()
.read(true)
.write(true)
.open("./target/doc/crates.js")?;
file.write_all(crates_js)?;
fs::rename("aya/src/lib.rs.bak", "aya/src/lib.rs").unwrap();
fs::rename("bpf/aya-bpf/src/lib.rs.bak", "bpf/aya-bpf/src/lib.rs").unwrap();

Ok(())
}
Expand Down

0 comments on commit ed3b690

Please sign in to comment.