summaryrefslogtreecommitdiff
path: root/src/value_checker.ml
blob: ed7c5d120366b482e08be0b1c7c48f801a8a8ca9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
type value_constraint = Regex of string | External of string * string

exception Bad_validator of string

let validate_value validators value_constraint value =
    match value_constraint with
    | Regex s ->      
        (try 
           let _ = Pcre.exec ~pat:s value in true
       with Not_found -> false)
    | External (t, c) ->
        try
            let validator = Hashtbl.find validators t in
            let result = Unix.system (Printf.sprintf "%s %s %s" validator c value) in
            match result with
            | Unix.WEXITED 0 -> true
            | _ -> false
        with Not_found -> raise (Bad_validator t)