aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/css_merge.ml34
-rwxr-xr-xbin/dune18
2 files changed, 52 insertions, 0 deletions
diff --git a/bin/css_merge.ml b/bin/css_merge.ml
new file mode 100755
index 0000000..7e0ee6b
--- /dev/null
+++ b/bin/css_merge.ml
@@ -0,0 +1,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)
+ )
diff --git a/bin/dune b/bin/dune
new file mode 100755
index 0000000..611ab5d
--- /dev/null
+++ b/bin/dune
@@ -0,0 +1,18 @@
+(env
+ (dev
+ (flags (:standard -warn-error -A))
+ )
+ (release
+ (ocamlopt_flags (-O3)))
+)
+
+(executable
+ (public_name css_merge)
+ (package css_merge)
+ (libraries
+ stdio
+ css_lib
+ )
+ (preprocess (pps lwt_ppx ppx_deriving_argparse))
+)
+