class Jets::Gems::Extract::Base

Attributes

project_root[R]

Public Class Methods

new(name, options={}) click to toggle source
# File lib/jets/gems/extract/base.rb, line 8
def initialize(name, options={})
  @name = name
  @options = options

  @downloads_root = options[:downloads_root] || "/tmp/jets/#{Jets.config.project_name}/serverlessgems"
end

Public Instance Methods

clean_downloads(folder) click to toggle source
# File lib/jets/gems/extract/base.rb, line 15
def clean_downloads(folder)
  path = "#{@downloads_root}/downloads/#{folder}"
  say "Removing cache: #{path}"
  FileUtils.rm_rf(path)
end
download_file(url, dest) click to toggle source

Returns the dest path

# File lib/jets/gems/extract/base.rb, line 37
def download_file(url, dest)
  if File.exist?(dest)
    say "File already downloaded #{dest}"
    return dest
  end

  say "Downloading..."
  downloaded = URI.open(url, 'rb') { |read_file| read_file.read }

  FileUtils.mkdir_p(File.dirname(dest)) # ensure parent folder exists

  File.open(dest, 'wb') { |saved_file| saved_file.write(downloaded) }

  dest
end
log_level=(val) click to toggle source

@@log_level = :debug # uncomment to debug

# File lib/jets/gems/extract/base.rb, line 55
def log_level=(val)
  @@log_level = val
end
say(message, level=:info) click to toggle source
# File lib/jets/gems/extract/base.rb, line 59
def say(message, level=:info)
  enabled = @@log_level == :debug || level == :debug
  puts(message) if enabled
end
sh(command) click to toggle source
# File lib/jets/gems/extract/base.rb, line 29
def sh(command)
  say "=> #{command}".color(:green)
  success = system(command)
  abort("Command Failed #{command}") unless success
  success
end
unzip(zipfile_path, parent_folder_dest) click to toggle source

Using ` > /dev/null 2>&1` to suppress stderr message:

lchmod (file attributes) error: Function not implemented
# File lib/jets/gems/extract/base.rb, line 25
def unzip(zipfile_path, parent_folder_dest)
  sh("cd #{parent_folder_dest} && unzip -qo #{zipfile_path} > /dev/null 2>&1")
end