fql-parser 0.2.8

A parser for the Fauna Query Language (FQL).
Documentation
use clap::{Parser, Subcommand};
use fql_deserialize::{parse_fauna_response, parse_expr, to_fql_string};
use fql_serialize::serialize_fql;

#[derive(Parser)]
#[clap(author, version, about, long_about = None)]
#[clap(propagate_version = true)]
struct Cli {
  #[clap(subcommand)]
  command: Commands,
}

#[derive(Subcommand)]
enum Commands {
  SerializeFql { fql: String },
  ParseFaunaResponse { response: String },
  ParseExpr { expr: String },
  ToFqlString { json: String },
}

fn main() {
  let cli = Cli::parse();

  match &cli.command {
    Commands::SerializeFql { fql } => {
      println!(
        "{}",
        serialize_fql(fql.as_str()).unwrap_or_else(|err| err.to_string())
      )
    }
    Commands::ParseFaunaResponse { response } => {
      println!(
        "{}",
        parse_fauna_response(response.as_str()).unwrap_or_else(|err| err.to_string())
      )
    }
    Commands::ParseExpr { expr } => {
      println!(
        "{}",
        parse_expr(expr.as_str()).unwrap_or_else(|err| err.to_string())
      )
    }
    Commands::ToFqlString { json } => {
      println!(
        "{}",
        to_fql_string(json.as_str()).unwrap_or_else(|err| err.to_string())
      )
    }
  }

  // Continued program logic goes here...
}