Class: Npmfed::NpmPackage

Inherits:
Object
  • Object
show all
Defined in:
lib/npmfed/npm_package.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, debug, version = nil) ⇒ NpmPackage

Returns a new instance of NpmPackage.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 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

Instance Attribute Details

#debugObject

Returns the value of attribute debug.



5
6
7
# File 'lib/npmfed/npm_package.rb', line 5

def debug
  @debug
end

#dependenciesObject

Returns the value of attribute dependencies.



5
6
7
# File 'lib/npmfed/npm_package.rb', line 5

def dependencies
  @dependencies
end

#fedora_rawhide_versionObject

Returns the value of attribute fedora_rawhide_version.



5
6
7
# File 'lib/npmfed/npm_package.rb', line 5

def fedora_rawhide_version
  @fedora_rawhide_version
end

#koji_requestsObject

Returns the value of attribute koji_requests.



5
6
7
# File 'lib/npmfed/npm_package.rb', line 5

def koji_requests
  @koji_requests
end

#nameObject

Returns the value of attribute name.



5
6
7
# File 'lib/npmfed/npm_package.rb', line 5

def name
  @name
end

#npm_dataObject

Returns the value of attribute npm_data.



5
6
7
# File 'lib/npmfed/npm_package.rb', line 5

def npm_data
  @npm_data
end

#npmjs_urlObject

Returns the value of attribute npmjs_url.



5
6
7
# File 'lib/npmfed/npm_package.rb', line 5

def npmjs_url
  @npmjs_url
end

#pkgdb_requestsObject

Returns the value of attribute pkgdb_requests.



5
6
7
# File 'lib/npmfed/npm_package.rb', line 5

def pkgdb_requests
  @pkgdb_requests
end

#tarballObject

Returns the value of attribute tarball.



5
6
7
# File 'lib/npmfed/npm_package.rb', line 5

def tarball
  @tarball
end

#versionObject

Returns the value of attribute version.



5
6
7
# File 'lib/npmfed/npm_package.rb', line 5

def version
  @version
end

Instance Method Details

#get_builds_for_depsObject



72
73
74
75
76
77
78
79
80
81
82
# 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_dependenciesObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 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

#licensesObject



28
29
30
# File 'lib/npmfed/npm_package.rb', line 28

def licenses
  @npm_data['license']
end

#pkg_in_fedora?(name) ⇒ Boolean

Returns:

  • (Boolean)


60
61
62
63
64
65
66
67
68
69
70
# 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

#pkgversionObject



52
53
54
# File 'lib/npmfed/npm_package.rb', line 52

def pkgversion
  @pkgversion ||= @version.tr('-', '_')
end

#rpmnameObject



56
57
58
# File 'lib/npmfed/npm_package.rb', line 56

def rpmname
  "nodejs-#{@name}"
end

#srcversionObject



48
49
50
# File 'lib/npmfed/npm_package.rb', line 48

def srcversion
  @srcversion ||= @version
end