foxguard 0.12.0

A security scanner as fast as a linter, written in Rust. 200+ built-in rules across 12 source languages.
Documentation
use foxguard::adapter::{adapter_error_response, execute_adapter_request, AdapterRequest};
use std::io::Read;

fn main() {
    let mut input = String::new();
    if let Err(error) = std::io::stdin().read_to_string(&mut input) {
        eprintln!("failed to read adapter request: {error}");
        std::process::exit(2);
    }

    let response = match serde_json::from_str::<AdapterRequest>(&input) {
        Ok(request) => execute_adapter_request(request),
        Err(error) => {
            adapter_error_response(None, None, format!("invalid adapter request: {error}"))
        }
    };

    match serde_json::to_string_pretty(&response) {
        Ok(json) => {
            println!("{json}");
        }
        Err(error) => {
            eprintln!("failed to serialize adapter response: {error}");
            std::process::exit(2);
        }
    }
}