1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//! # Escargot: A Cargo API
//!
//! ## Install
//!
//! Add to your `Cargo.toml`:
//!
//! ```toml
//! [dependencies]
//! escargot = "0.5"
//! ```
//!
//! Features:
//! - `print` for logged output to be printed instead, generally for test writing.
//!
//! ## Why escargot
//!
//! Compared to depending on `cargo`:
//! - Faster compile times.
//! - Simpler API.
//! - Better interop with projects relying on other cargo versions.
//! - Probably slower execution, especially on platforms without an optimized `fork` (e.g. Windows).
//!
//! ## Relevant crates
//!
//! Other related crates:
//! * [cargo](https://crates.io/crates/cargo) for the real thing
//! * [cargo-metadata](https://crates.io/crates/cargo_metadata) for a similar project specifically geared to the `metadata` subcommand.
//!
//! # Example
//!
//! ```rust
//! extern crate escargot;
//! extern crate assert_fs;
//!
//! let temp = assert_fs::TempDir::new().unwrap();
//! escargot::CargoBuild::new()
//!     .bin("bin")
//!     .current_release()
//!     .current_target()
//!     .manifest_path("tests/fixtures/bin/Cargo.toml")
//!     .target_dir(temp.path())
//!     .exec()
//!     .unwrap();
//! ```

#![warn(missing_docs)]

#[macro_use]
extern crate serde;
extern crate serde_json;

#[macro_use]
extern crate lazy_static;

#[macro_use]
extern crate log;

mod build;
pub use build::*;
mod cargo;
pub use cargo::*;
mod msg;
pub use msg::*;
mod run;
pub use run::*;
#[cfg(feature = "test_unstable")]
mod test;
#[cfg(feature = "test_unstable")]
pub use test::*;

pub mod error;
pub mod format;