class Generamba::CatalogDownloader

Provides the functionality to download template catalogs from the remote repository

Public Instance Methods

download_catalog(name, url) click to toggle source

Clones a template catalog from a remote repository

@param name [String] The name of the template catalog @param url [String] The url of the repository

@return [Pathname] A filepath to the downloaded catalog

# File lib/generamba/template/helpers/catalog_downloader.rb, line 41
def download_catalog(name, url)
  catalogs_local_path = Pathname.new(ENV['HOME'])
                           .join(GENERAMBA_HOME_DIR)
                           .join(CATALOGS_DIR)
  current_catalog_path = catalogs_local_path
                             .join(name)

  if File.exists?(current_catalog_path)
    g = Git.open(current_catalog_path)
    g.pull
  else
    Git.clone(url, name, :path => catalogs_local_path)
  end

  return current_catalog_path
end
update_all_catalogs_and_return_filepaths() click to toggle source

Updates all of the template catalogs and returns their filepaths. If there is a Rambafile in the current directory, it also updates all of the catalogs specified there.

@return [Array] An array of filepaths to downloaded catalogs

# File lib/generamba/template/helpers/catalog_downloader.rb, line 12
def update_all_catalogs_and_return_filepaths
  does_rambafile_exist = Dir[RAMBAFILE_NAME].count > 0

  if does_rambafile_exist
    rambafile = YAML.load_file(RAMBAFILE_NAME)
    catalogs = rambafile[CATALOGS_KEY]
  end

  terminator = CatalogTerminator.new
  terminator.remove_all_catalogs

  catalog_paths = [download_catalog(GENERAMBA_CATALOG_NAME, RAMBLER_CATALOG_REPO)]

  if catalogs != nil && catalogs.count > 0
    catalogs.each do |catalog_url|
      catalog_name = catalog_url.split('://').last
      catalog_name = catalog_name.gsub('/', '-');
      catalog_paths.push(download_catalog(catalog_name, catalog_url))
    end
  end
  return catalog_paths
end