class Jetel::Modules::Module

Attributes

downloader[R]

Public Class Methods

download_dir(modul, source, opts) click to toggle source
# File lib/jetel/modules/module.rb, line 42
def download_dir(modul, source, opts)
  Module.target_dir(modul, source, opts, 'downloaded')
end
downloaded_file(modul, source, opts) click to toggle source
# File lib/jetel/modules/module.rb, line 54
def downloaded_file(modul, source, opts)
  File.join(download_dir(modul, source, opts), source[:filename_downloaded] || source[:url].split('/').last)
end
extract_dir(modul, source, opts) click to toggle source
# File lib/jetel/modules/module.rb, line 46
def extract_dir(modul, source, opts)
  Module.target_dir(modul, source, opts, 'extracted')
end
extracted_file(modul, source, opts) click to toggle source
# File lib/jetel/modules/module.rb, line 58
def extracted_file(modul, source, opts)
  File.join(extract_dir(modul, source, opts), source[:filename_extracted] || source[:url].split('/').last)
end
new() click to toggle source
# File lib/jetel/modules/module.rb, line 67
def initialize
  @downloader = Downloader.new
end
target_dir(modul, source, dir, *path) click to toggle source
# File lib/jetel/modules/module.rb, line 36
def target_dir(modul, source, dir, *path)
  klass = modul.class.name.split('::').last
  source_name = Helper.sanitize(source[:name])
  File.join(dir.kind_of?(Hash) ? dir['download_dir'] : dir || Config[:DATA_DIRECTORY], klass, source[:flat] ? '' : source_name, path)
end
transform_dir(modul, source, opts) click to toggle source
# File lib/jetel/modules/module.rb, line 50
def transform_dir(modul, source, opts)
  Module.target_dir(modul, source, opts, 'transformed')
end
transformed_file(modul, source, opts) click to toggle source
# File lib/jetel/modules/module.rb, line 62
def transformed_file(modul, source, opts)
  File.join(transform_dir(modul, source, opts), source[:filename_transformed] || source[:url].split('/').last)
end

Public Instance Methods

download_dir(source, opts) click to toggle source
# File lib/jetel/modules/module.rb, line 83
def download_dir(source, opts)
  Module.download_dir(self, source, opts)
end
download_source(source, opts) click to toggle source
# File lib/jetel/modules/module.rb, line 71
def download_source(source, opts)
  downloaded_file = downloaded_file(source, opts)

  unless File.exists?(downloaded_file)
    downloader.download(source[:url], {:dir => download_dir(source, opts), :filename => source[:filename_downloaded]})
  end
end
downloaded_file(source, opts) click to toggle source
# File lib/jetel/modules/module.rb, line 95
def downloaded_file(source, opts)
  Module.downloaded_file(self, source, opts)
end
extract_dir(source, opts) click to toggle source
# File lib/jetel/modules/module.rb, line 87
def extract_dir(source, opts)
  Module.extract_dir(self, source, opts)
end
extracted_file(source, opts) click to toggle source
# File lib/jetel/modules/module.rb, line 99
def extracted_file(source, opts)
  Module.extracted_file(self, source, opts)
end
load(global_options, options, args) click to toggle source
# File lib/jetel/modules/module.rb, line 107
def load(global_options, options, args)
  sources = self.class.sources
  if args.length > 0
    args = args.map(&:downcase)
    sources = sources.select do |source|
      args.index(source[:name].downcase)
    end
  end

  sources.map do |source|
    opts = global_options.merge(options)

    transformed_file = transformed_file(source, opts)

    loader = Helper.get_loader(opts['data_loader'])

    Dir.glob(transformed_file).each do |one_file|
      puts "Loading file #{one_file}"
      loader.load(self, source, one_file, opts)
    end
  end
end
sources(global_options, options, _args) click to toggle source
# File lib/jetel/modules/module.rb, line 130
def sources(global_options, options, _args)
  opts = global_options.merge(options)

  res = self.class.sources

  if opts['format'] == 'json'
    puts MultiJson.dump(res, :pretty => true)
  else
    pp res
  end

end
target_dir(source, opts, *path) click to toggle source
# File lib/jetel/modules/module.rb, line 79
def target_dir(source, opts, *path)
  Module.target_dir(self, source, opts['download_dir'], *path)
end
transform_dir(source, opts) click to toggle source
# File lib/jetel/modules/module.rb, line 91
def transform_dir(source, opts)
  Module.transform_dir(self, source, opts)
end
transformed_file(source, opts) click to toggle source
# File lib/jetel/modules/module.rb, line 103
def transformed_file(source, opts)
  Module.transformed_file(self, source, opts)
end
unzip(source, options = {}) click to toggle source
# File lib/jetel/modules/module.rb, line 143
def unzip(source, options = {})
  downloaded_file = downloaded_file(source, options)
  dest_dir = extract_dir(source, options)

  FileUtils.mkdir_p(dest_dir)

  ::Zip::File.open(downloaded_file) do |zip_file|
    # Handle entries one by one
    zip_file.each do |entry|
      # Extract to file/directory/symlink
      puts "Extracting #{entry.name}"
      dest_file = File.join(dest_dir, entry.name.split('/').last)
      FileUtils.rm_rf(dest_file)
      entry.extract(dest_file)
    end
  end
end