bwq 0.4.2

A linter and language server for Brandwatch query files (.bwq)
Documentation
pub mod args;
pub mod commands;
pub mod output;

use args::Cli;
use commands::*;

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ExitStatus {
    Success = 0,
    LintFailure = 1,
    Error = 2,
}

impl From<ExitStatus> for i32 {
    fn from(status: ExitStatus) -> Self {
        status as i32
    }
}

pub fn run(args: Cli) -> Result<ExitStatus, anyhow::Error> {
    match args.command {
        Some(args::Commands::Check {
            files,
            query,
            no_warnings,
            output_format,
            extensions,
            exit_zero,
        }) => run_check(
            files,
            query,
            no_warnings,
            output_format,
            extensions,
            exit_zero,
        ),
        Some(args::Commands::Examples) => run_examples(),
        Some(args::Commands::Server) => run_server(),
        None => {
            eprintln!("Error: A subcommand is required");
            eprintln!("\nUsage: bwq <COMMAND>");
            eprintln!("\nCommands:");
            eprintln!("  check        Lint files, directories, or queries");
            eprintln!("  examples     Show example queries");
            eprintln!("  server       Start language server");
            eprintln!("\nFor more information, try 'bwq --help'");
            Ok(ExitStatus::Error)
        }
    }
}