open StdLabels module Args = struct type t = { out: string [@short "-o"] } [@@deriving argparse{ positional = [ "css", "The css file" ] }] let default = { out = "" } end let () = let arg, rest = Args.argparse Args.default "css_merge" Sys.argv in let css = Array.fold_left rest ~init:Css_lib.Merge.empty ~f:(fun map arg -> let content = Stdio.In_channel.read_all arg in let css = Css.Parser.parse_stylesheet content in Css_lib.Merge.add_css map css ) in Stdio.Out_channel.with_file arg.Args.out ~f:(fun channel -> let format = Format.formatter_of_out_channel channel in Css_lib.Print.css Css_lib.Print.minify_printer format (Css_lib.Merge.extract_css css) )