Sha256: a66fe42fa650fbd9f42bb264b182bac5d421328bc315c7990479fba0e2548920
Contents?: true
Size: 1.42 KB
Versions: 15
Compression:
Stored size: 1.42 KB
Contents
require "active_support/duration" require "time" require "base64" class Kamal::Commands::Lock < Kamal::Commands::Base def acquire(message, version) combine \ [ :mkdir, lock_dir ], write_lock_details(message, version) end def release combine \ [ :rm, lock_details_file ], [ :rm, "-r", lock_dir ] end def status combine \ stat_lock_dir, read_lock_details end def ensure_locks_directory [ :mkdir, "-p", locks_dir ] end private def write_lock_details(message, version) write \ [ :echo, "\"#{Base64.encode64(lock_details(message, version))}\"" ], lock_details_file end def read_lock_details pipe \ [ :cat, lock_details_file ], [ :base64, "-d" ] end def stat_lock_dir write \ [ :stat, lock_dir ], "/dev/null" end def locks_dir File.join(config.run_directory, "locks") end def lock_dir dir_name = [ config.service, config.destination ].compact.join("-") File.join(locks_dir, dir_name) end def lock_details_file File.join(lock_dir, "details") end def lock_details(message, version) <<~DETAILS.strip Locked by: #{locked_by} at #{Time.now.utc.iso8601} Version: #{version} Message: #{message} DETAILS end def locked_by Kamal::Git.user_name rescue Errno::ENOENT "Unknown" end end
Version data entries
15 entries across 15 versions & 1 rubygems