Skip to main content

oak_dockerfile/ast/
mod.rs

1#![doc = include_str!("readme.md")]
2use oak_core::Range;
3
4/// Dockerfile AST root type
5#[derive(Debug, PartialEq, Clone)]
6pub struct DockerfileRoot {
7    pub instructions: Vec<Instruction>,
8}
9
10/// Dockerfile instruction
11#[derive(Debug, PartialEq, Clone)]
12pub enum Instruction {
13    From { image: String, tag: Option<String>, span: Range<usize> },
14    Run { command: String, span: Range<usize> },
15    Copy { src: String, dest: String, span: Range<usize> },
16    Add { src: String, dest: String, span: Range<usize> },
17    Workdir { path: String, span: Range<usize> },
18    Expose { port: String, span: Range<usize> },
19    Env { key: String, value: String, span: Range<usize> },
20    Cmd { command: String, span: Range<usize> },
21    Entrypoint { command: String, span: Range<usize> },
22    Volume { path: String, span: Range<usize> },
23    User { user: String, span: Range<usize> },
24    Label { key: String, value: String, span: Range<usize> },
25    Arg { name: String, default: Option<String>, span: Range<usize> },
26    Onbuild { instruction: Box<Instruction>, span: Range<usize> },
27    Stopsignal { signal: String, span: Range<usize> },
28    Healthcheck { command: String, span: Range<usize> },
29    Shell { shell: String, span: Range<usize> },
30}