aboutsummaryrefslogtreecommitdiff
path: root/rego-proofs/compiler-rewrite/bin/main.ml
blob: 3390ac7e260ad2eb7c66b4563742e061e25fdb0e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
open Core
open Compiler_rewrite.Compiler

let invoke ?(stdin = "") ?(env = [||]) cmd =
  let ic, oc, ec = UnixLabels.open_process_full cmd ~env in
  Out_channel.output_string oc stdin;
  Out_channel.close oc;
  (In_channel.input_all ic, In_channel.input_all ec)

let () =
  let file_name = Array.get (Sys.get_argv ()) 1 in
  let policy_code = In_channel.read_all file_name in
  let stdout, _ =
    invoke "/home/jakob/.local/bin/opa parse -f json /dev/stdin"
      ~stdin:policy_code ~env:[||]
  in
  let ast = Yojson.Basic.from_string stdout |> parse_tree in
  match ast with
  | { policy = [ { body; _ } ]; _ } ->
      extract_local_variables_wrapper body |> List.iter ~f:print_endline
  | _ -> print_endline "failed"

© 2015 - 2026 Jakob L. Kreuze