class Vx::Builder::ScriptBuilderV2::Cache
Public Instance Methods
call(env)
click to toggle source
# File lib/vx/builder/script_builder_v2/cache.rb, line 9 def call(env) rs = app.call env if env.task.cache_read_url && env.task.cache_write_url && enabled?(env) env.stage("init").add_task "cache_fetch", "url" => cache_fetch_urls(env) env.stage("init").add_task "cache_add", "dir" => cache_directories(env) env.stage("teardown").add_task "cache_push", "url" => cache_push_url(env) end rs end
Private Instance Methods
cache_directories(env)
click to toggle source
# File lib/vx/builder/script_builder_v2/cache.rb, line 27 def cache_directories(env) env.source.cache.directories.compact end
cache_fetch_urls(env)
click to toggle source
# File lib/vx/builder/script_builder_v2/cache.rb, line 35 def cache_fetch_urls(env) urls = [] branch = env.task.branch if branch != 'master' urls << url_for(env, branch, 'r') end urls << url_for(env, 'master', 'r') urls end
cache_push_url(env)
click to toggle source
# File lib/vx/builder/script_builder_v2/cache.rb, line 31 def cache_push_url(env) url_for(env, env.task.branch, 'w') end
enabled?(env)
click to toggle source
# File lib/vx/builder/script_builder_v2/cache.rb, line 23 def enabled?(env) env.source.cache.enabled? && cache_directories(env).any? end
url_for(env, branch, mode)
click to toggle source
# File lib/vx/builder/script_builder_v2/cache.rb, line 46 def url_for(env, branch, mode) name = branch key = if env.cache_key.empty? "cache" else env.cache_key.join("-").downcase.gsub(/[^a-z0-9_\-.]/, '-') end prefix = case mode when 'r' env.task.cache_read_url when 'w' env.task.cache_write_url end "#{prefix}?file_name=#{name}/#{key}.tgz" end