oak_dockerfile/ast/
mod.rs

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