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