blob: 66bbfb835c924724a739f6d04257a8bce2afe38c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
(* Adapter load_config
*)
open Vyos1x
let read_config filename =
let ch = open_in filename in
let s = really_input_string ch (in_channel_length ch) in
let ct =
try
Ok (Parser.from_string s)
with Vyos1x.Util.Syntax_error (opt, msg) ->
begin
match opt with
| None -> Error msg
| Some (line, pos) ->
let out = Printf.sprintf "%s line %d pos %d\n" msg line pos
in Error out
end
in
close_in ch;
ct
let read_configs f g =
let l = read_config f in
let r = read_config g in
match l, r with
| Ok left, Ok right -> Ok (left, right)
| Error msg_l, Error msg_r -> Error (msg_l ^ msg_r)
| Error msg_l, _ -> Error msg_l
| _, Error msg_r -> Error msg_r
let args = []
let usage = Printf.sprintf "Usage: %s <config> <new config>" Sys.argv.(0)
let () = if Array.length Sys.argv <> 3 then (Arg.usage args usage; exit 1)
let () =
let left_name = Sys.argv.(1) in
let right_name = Sys.argv.(2) in
let read = read_configs left_name right_name in
let res =
match read with
| Ok (left, right) -> Vyos1x_adapter.load_config left right
| Error msg -> msg
in Printf.printf "%s\n" res
|