From 1e63606f723741eda4e43cd727b7a0f4d6b4b03c Mon Sep 17 00:00:00 2001 From: "Glenn Y. Rolland" Date: Thu, 15 Feb 2024 18:56:15 +0100 Subject: [PATCH] feat: Add support for --no-cache option --- src/build/cli.cr | 6 +++++- src/build/config.cr | 3 ++- src/build/run.cr | 30 ++++++++++++++++++------------ 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/build/cli.cr b/src/build/cli.cr index b625c41..968db9c 100644 --- a/src/build/cli.cr +++ b/src/build/cli.cr @@ -20,6 +20,10 @@ module DocMachine::Build config.action = action end + opts.on("--no-cache", "Disable cache") do |_| + config.enable_cache = false + end + opts.on("-d", "--data-dir DIR", "Content directory") do |dir| config.data_dir = dir end @@ -29,7 +33,7 @@ module DocMachine::Build end opts.on("-m", "--multiple", "Allow multiple instances per dir" ) do |port| - config.multiple_instances = true + config.enable_multiple = true end opts.on("-t", "--tty", "Enable TTY mode (needed for shell)") do diff --git a/src/build/config.cr b/src/build/config.cr index 5831af6..ec33c4d 100644 --- a/src/build/config.cr +++ b/src/build/config.cr @@ -5,7 +5,8 @@ module DocMachine::Build property action : String = "watch" property enable_tty : Bool = false property port : Int32 = 5100 - property multiple_instances : Bool = false + property enable_multiple : Bool = false + property enable_cache : Bool = false def initialize(@parent : DocMachine::Config) end diff --git a/src/build/run.cr b/src/build/run.cr index 67549df..a7cee4f 100644 --- a/src/build/run.cr +++ b/src/build/run.cr @@ -29,7 +29,7 @@ module DocMachine::Build Log.info { "action = #{@config.action}" } self._pull_image() - self._avoid_duplicates() unless @config.multiple_instances + self._avoid_duplicates() unless @config.enable_multiple end private def _find_port(port_base) @@ -68,6 +68,7 @@ module DocMachine::Build else Path[ENV["HOME"], ".cache", "docmachine"] end + ## Build cache if it doesnt exist data_cache_file = data_cache_dir / "image.tar" Log.info { "Checking cache #{data_cache_file}..." } if ! File.exists? data_cache_file.to_s @@ -91,18 +92,23 @@ module DocMachine::Build Log.info { "Cache already exist. Skipping." } end - Log.info { "Loading #{@docker_image} image from cache..." } - docker_image_loaded = false - status = Process.run( - "docker", - ["image", "load", "-i", data_cache_file.to_s], - output: STDOUT - ) - if status.success? - Log.info { "done" } + if @config.enable_cache + Log.info { "Loading #{@docker_image} image from cache..." } + docker_image_loaded = false + status = Process.run( + "docker", + ["image", "load", "-i", data_cache_file.to_s], + output: STDOUT + ) + if status.success? + Log.info { "done" } + else + Log.error { "Unable to load cache image" } + exit 1 + end else - Log.error { "Unable to load cache image" } - exit 1 + Log.info { "Loading #{@docker_image} image from local registry..." } + # FIXME: check that local image exists end end