# auto_generate_cdp
[](https://docs.rs/auto_generate_cdp)
[](https://crates.io/crates/auto_generate_cdp)
An experimental crate to generate the Chrome Devtools Protocol.
[](https://github.com/mdrokz/auto_generate_cdp/graphs/contributors)
## Usage
Add the following to your `Cargo.toml`:
```toml
[dependencies]
serde = {version = "1", features = ["derive"]}
serde_json = '1'
[build-dependencies]
auto_generate_cdp = {version = "0.4.4",default-features = false}
```
To generate the protocol, add the following to your `build/build.rs` script.
```rust
use auto_generate_cdp::init;
fn main() {
init();
}
```
This will generate `protocol.rs` in your `$OUT_DIR` folder when you run `$ cargo check` or `$ cargo build`. Use like:
```rust
// src/protocol.rs
include!(concat!(env!("OUT_DIR"), "/protocol.rs"));
```
```rust
// src/main.rs
mod protocol;
fn main() {
// protocol module contains the definitions now
}
```
## Compiling behind a firewall
auto_generate_cdp needs to fetch files from `raw.githubusercontent.com` during compilation.
If for whatever reason you cannot access `raw.githubusercontent.com` directly
(e.g. corporate firewall and/or internet censorship), you can try using a proxy server
by setting any one of the following environment variables: `https_proxy`, `http_proxy`,
`ALL_PROXY`. For example:
```sh
# proxy server uses curl format
https_proxy=http://localhost:8080 cargo build
```