//! A parser for .env files with directives.
char = { !NEWLINE ~ ANY }
WHITESPACE = _{ " " | "\t" }
COMMENT = _{ "#" ~ WHITESPACE* ~ !"@" ~ char* ~ NEWLINE }
aws_sm_driective_value = @{ (ASCII_ALPHANUMERIC | "/" | "_" | "+" | "=" | "." | "@" | "-" | "$")+ }
aws_sm_directive = { "@aws-sm" ~ aws_sm_driective_value }
aws_ps_driective_value = @{ (ASCII_ALPHANUMERIC | "/" | "_" | "+" | "=" | "." | "@" | "-" | "$")+ }
aws_ps_directive = { "@aws-ps" ~ aws_ps_driective_value }
pair_ident = @{ (ASCII_ALPHANUMERIC | "." | "-" | "_")+ }
pair_value_squote = @{ ("\\'" | !"'" ~ ANY)* }
pair_value_dquote = @{ ("\\\"" | !"\"" ~ ANY)* }
pair_value_tick = @{ ("\\`" | !"`" ~ ANY)* }
pair_value_raw = @{ (!"#" ~ char)* }
pair_value = ${
("'" ~ pair_value_squote ~ "'")
| ("\"" ~ pair_value_dquote ~ "\"")
| "`" ~ pair_value_tick ~ "`"
| pair_value_raw
}
optional_directive_indicator = @{ "@optional" }
directive = { "#" ~ (aws_sm_directive | aws_ps_directive) ~ optional_directive_indicator? }
pair = { "export"? ~ pair_ident ~ ("=" | ":") ~ pair_value }
declaration = { (directive ~ NEWLINE+)? ~ pair }
file = { SOI ~ (declaration | NEWLINE)* ~ EOI }