class Jets::Util
def check_rsync_installed!
def check_rsync_installed! return if @@rsync_installed # only check once if system "type rsync > /dev/null 2>&1" @@rsync_installed = true else raise Jets::Error.new("Rsync is required. Rsync does not seem to be installed.") end end
def cp_r(src, dest)
def cp_r(src, dest) # Fix for https://github.com/tongueroo/jets/issues/122 # # Using FileUtils.cp_r doesnt work if there are special files like socket files in the src dir. # Instead of using this hack https://bugs.ruby-lang.org/issues/10104 # Using rsync to perform the copy. src.chop! if src.ends_with?('/') dest.chop! if dest.ends_with?('/') check_rsync_installed! sh "rsync -a --links --no-specials --no-devices #{src}/ #{dest}/", quiet: true end
def normalize_result(result)
def normalize_result(result) JSON.dump(result) end
def sh(command, quiet: false)
def sh(command, quiet: false) puts "=> #{command}" unless quiet system(command) success = $?.success? raise Jets::Error.new("Command failed: #{command}") unless success success end