awsm-env 0.0.5

A lightweight utility for syncing AWS Secrets Manager secrets to environment variables.
Documentation
//! A parser for .env files with directives.

char = { !NEWLINE ~ ANY }

WHITESPACE = _{ " " | "\t" }
COMMENT    = _{ "#" ~ WHITESPACE* ~ !"@" ~ char* ~ NEWLINE }

aws_driective_value = @{ (ASCII_ALPHANUMERIC | "/" | "_" | "+" | "=" | "." | "@" | "-" | "$")+ }
aws_directive       =  { "@aws" ~ aws_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
}

directive = { "#" ~ aws_directive }
pair      = { "export"? ~ pair_ident ~ ("=" | ":") ~ pair_value }

declaration = { (directive ~ NEWLINE+)? ~ pair }

file = { SOI ~ (declaration | NEWLINE)* ~ EOI }