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
// (C) Copyright 2019-2020 Hewlett Packard Enterprise Development LP

#![forbid(unsafe_code)]

//! # Rust parser for Dockerfile syntax
//!
//! A pure Rust library for parsing and inspecting Dockerfiles, useful for
//! performing static analysis, writing linters, and creating automated tooling
//! around Dockerfiles. It can provide useful syntax errors in addition to a
//! full syntax tree.
//!
//! ## Quick start
//!
//! ```rust
//! use dockerfile_parser::Dockerfile;
//!
//! let dockerfile = Dockerfile::parse(r#"
//!   FROM alpine:3.11 as builder
//!   RUN echo "hello world" > /hello-world
//!
//!   FROM scratch
//!   COPY --from=builder /hello-world /hello-world
//! "#).unwrap();
//!
//! for stage in dockerfile.iter_stages() {
//!   println!("stage #{}", stage.index);
//!   for ins in stage.instructions {
//!     println!("  {:?}", ins);
//!   }
//! }
//! ```

#[macro_use] extern crate pest_derive;

mod error;
mod parser;
mod util;
mod image;
mod instructions;
mod splicer;
mod stage;
mod dockerfile_parser;

pub use image::*;
pub use error::*;
pub use parser::*;
pub use instructions::*;
pub use splicer::*;
pub use stage::*;
pub use crate::dockerfile_parser::*;

#[cfg(test)] mod test_util;