class Npmfed::NpmPackage

Attributes

debug[RW]
dependencies[RW]
fedora_rawhide_version[RW]
koji_requests[RW]
name[RW]
npm_data[RW]
npmjs_url[RW]
pkgdb_requests[RW]
tarball[RW]
version[RW]

Public Class Methods

new(name, debug, version = nil) click to toggle source
# File lib/npmfed/npm_package.rb, line 8
def initialize name, debug, version = nil
  #debuging options
  @koji_requests = 0
  @pkgdb_requests = 0
  @debug = debug

  @npmjs_url = URI("https://registry.npmjs.org/#{name}")
  @fedora_rawhide_version = "f24"
  @npm_data = JSON.parse Net::HTTP.get(@npmjs_url)
  @version = version || @npm_data["dist-tags"]["latest"] || abort("Can't determine version")
  @npm_data = @npm_data["versions"][@version] || abort("No such version: #{@version.inspect}")
  @name = @npm_data["name"]
  @dependencies = get_dependencies
  get_builds_for_deps
end

Public Instance Methods

get_builds_for_deps() click to toggle source
# File lib/npmfed/npm_package.rb, line 72
def get_builds_for_deps
  puts "Getting infromation about builds of package dependencies from koji"
  @koji_requests +=1
  @dependencies.each do |name, data|
    IO.popen("koji search build -r 'nodejs-#{name}-[0-9]'") do |f|
      puts("checking builds for" + " #{name}".yellow)
      data[:builds] = f.readlines.collect {|build| build.chop }
    end unless data.nil?
  end
  puts "DONE".green
end
get_dependencies() click to toggle source
# File lib/npmfed/npm_package.rb, line 32
def get_dependencies
  puts "Getting infromation about #{@name} and its dependencies from pkgdb"
  result = {}
  @npm_data['dependencies'].each do |name, version|
    pkgdb_data = pkg_in_fedora? name
    if pkgdb_data
      result["#{name}"] = {distgit_branches: Array.new, builds: Array.new}
      result["#{name}"][:distgit_branches] = pkgdb_data
    else
      result["#{name}"] = nil
    end
  end unless @npm_data['dependencies'].nil?
  puts "DONE".green
  return result
end
licenses() click to toggle source
# File lib/npmfed/npm_package.rb, line 28
def licenses
  @npm_data['license']
end
pkg_in_fedora?(name) click to toggle source
# File lib/npmfed/npm_package.rb, line 60
def pkg_in_fedora? name
  @pkgdb_requests += 1
  IO.popen("git ls-remote http://pkgs.fedoraproject.org/cgit/nodejs-" + name + ".git/") do |f|
    result = f.readlines.collect {|branch| branch.match(/\/[emf][a-z]*[0-9]*/).to_s[1..-1] }
    if result.empty?
      return false
    else
      return result.compact
    end
  end
end
pkgversion() click to toggle source
# File lib/npmfed/npm_package.rb, line 52
def pkgversion
  @pkgversion ||= @version.tr('-', '_')
end
rpmname() click to toggle source
# File lib/npmfed/npm_package.rb, line 56
def rpmname
  "nodejs-#{@name}"
end
srcversion() click to toggle source
# File lib/npmfed/npm_package.rb, line 48
def srcversion
  @srcversion ||= @version
end