aboutsummaryrefslogtreecommitdiff
path: root/bin/css_merge.ml
blob: 7e0ee6b7e06aab085cc49088a20db21e24537b74 (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
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)
    )