package dockerfile-cmd
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
Dockerfile eDSL -- generation support
Install
dune-project
Dependency
Authors
Maintainers
Sources
ocaml-dockerfile-8.3.3.tbz
md5=7d5314dedfd0a897e8e908a7173001f7
sha512=163c9e1c061026fbf7776962f551662304c4ee146a777e3d996d0222417a590f48c01cb86d3dd2989e77d66d73c0a587d429097ca744b1063a2057b39233f16c
doc/src/dockerfile-cmd/gen.ml.html
Source file gen.ml
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76(* * Copyright (c) 2016-2017 Anil Madhavapeddy <anil@recoil.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * *) open Dockerfile open Bos let ( >>= ) = Result.bind let rec iter fn l = match l with hd :: tl -> fn hd >>= fun () -> iter fn tl | [] -> Ok () let write_dockerfile ~crunch file dfile = Logs.debug (fun l -> l "Writing Dockerfile to %a" Fpath.pp file); (if crunch then Dockerfile.crunch dfile else dfile) |> string_of_t |> OS.File.write file let generate_dockerfile ?(fname = "Dockerfile") ?(crunch = true) output_dir d = let file = Fpath.(output_dir / fname) in Logs.info (fun l -> l "Generating: %a" Fpath.pp file); OS.Dir.create ~path:true output_dir >>= fun _ -> write_dockerfile ~crunch file d let generate_dockerfiles_in_directories ?(crunch = true) output_dir = iter (fun (name, dockerfile) -> let dir = Fpath.(output_dir / name) in let file = Fpath.(dir / "Dockerfile") in Logs.info (fun l -> l "Generating %a" Fpath.pp file); OS.Dir.create ~path:true output_dir >>= fun _ -> write_dockerfile ~crunch file dockerfile) let generate_dockerfiles ?(crunch = true) output_dir = iter (fun (name, dockerfile) -> let file = Fpath.(output_dir / ("Dockerfile." ^ name)) in Logs.info (fun l -> l "Generating: %a" Fpath.pp file); write_dockerfile ~crunch file dockerfile) let generate_dockerfiles_in_git_branches ?readme ?(crunch = true) output_dir d = (* TODO move git to dockerfile_cmd *) let git = Cmd.(v "git" % "-C" % p output_dir) in iter (fun (name, docker) -> Logs.info (fun l -> l "Switching to branch %s in %a\n%!" name Fpath.pp output_dir); OS.Cmd.run (match name with | "master" -> Cmd.(git % "checkout" % "master") | name -> Cmd.(git % "checkout" % "-q" % "-B" % name % "master")) >>= fun () -> let file = Fpath.(output_dir / "Dockerfile") in write_dockerfile ~crunch file docker >>= fun () -> (match readme with | None -> Ok () | Some r -> OS.File.write Fpath.(output_dir / "README.md") r >>= fun () -> Cmd.(git % "add" % "README.md") |> OS.Cmd.run) >>= fun () -> Cmd.(git % "add" % "Dockerfile") |> OS.Cmd.run >>= fun () -> let msg = Fmt.str "update %s Dockerfile" name in Cmd.(git % "commit" % "-q" % "-m" % msg % "-a") |> OS.Cmd.run_status >>= fun _ -> Ok ()) d >>= fun () -> Cmd.(git % "checkout" % "-q" % "master") |> OS.Cmd.run
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>