class PgBundle::PgxnSource

The GithubSource class defines a Github Source

Public Class Methods

new(dist, version) click to toggle source
Calls superclass method PgBundle::BaseSource::new
# File lib/pgbundle/pgxn_source.rb, line 9
def initialize(dist, version)
  @dist, @version = dist, version
  path = "http://master.pgxn.org/dist/%{dist}/%{version}/%{dist}-%{version}.zip" % {dist: dist, version: version}
  super(path)
end

Public Instance Methods

clean() click to toggle source
# File lib/pgbundle/pgxn_source.rb, line 25
def clean
  FileUtils.remove_dir(download_dir, true)
end
load(host, user, dest) click to toggle source
# File lib/pgbundle/pgxn_source.rb, line 15
def load(host, user, dest)
  download
  unzip
  if host == 'localhost'
    copy_local("#{download_dir}/#{@dist}-#{@version}", dest)
  else
    copy_to_remote(host, user, "#{download_dir}/#{@dist}-#{@version}", dest)
  end
end

Private Instance Methods

download() click to toggle source
# File lib/pgbundle/pgxn_source.rb, line 31
def download
  begin
  File.open(zipfile, "wb") do |saved_file|
    open(@path, "rb") do |read_file|
      saved_file.write(read_file.read)
    end
  end
  rescue OpenURI::HTTPError => e
    raise PgxnError.new(path, e.message)
  end
end
download_dir() click to toggle source
# File lib/pgbundle/pgxn_source.rb, line 57
def download_dir
  @clone_dir ||= Dir.mktmpdir
end
unzip() click to toggle source
# File lib/pgbundle/pgxn_source.rb, line 47
def unzip
  Zip::ZipFile.open(zipfile) do |zip_file|
    zip_file.each do |f|
        f_path=File.join(download_dir, f.name)
        FileUtils.mkdir_p(File.dirname(f_path))
        zip_file.extract(f, f_path) unless File.exist?(f_path)
    end
  end
end
zipfile() click to toggle source
# File lib/pgbundle/pgxn_source.rb, line 43
def zipfile
  "#{download_dir}/#{@dist}.zip"
end