use ciphercore_base::errors::Result;
use ciphercore_base::evaluators::get_result_util::get_evaluator_result;
use ciphercore_base::evaluators::simple_evaluator::SimpleEvaluator;
use ciphercore_base::graphs::Context;
use ciphercore_base::typed_value::TypedValue;
use ciphercore_utils::execute_main::execute_main;
use std::fs;
use clap::Parser;
#[derive(Parser, Debug)]
#[clap(author, version, about, long_about=None)]
struct Args {
#[clap(value_parser)]
context_path: String,
#[clap(value_parser)]
inputs_path: String,
#[clap(long, value_parser)]
reveal_output: bool,
}
fn main() {
env_logger::init();
execute_main(|| -> Result<()> {
let args = Args::parse();
let serialized_context = fs::read_to_string(&args.context_path)?;
let raw_context = serde_json::from_str::<Context>(&serialized_context)?;
let json_inputs = fs::read_to_string(&args.inputs_path)?;
let inputs = serde_json::from_str::<Vec<TypedValue>>(&json_inputs)?;
let result = get_evaluator_result(
raw_context,
inputs,
args.reveal_output,
SimpleEvaluator::new(None)?,
)?;
if args.reveal_output {
eprintln!("Revealing the output");
}
println!("{}", serde_json::to_string(&result)?);
Ok(())
});
}