Module: Lowendinsight::GemfileDependencies
- Defined in:
- lib/lowendinsight/gemfile_dependencies.rb
Class Method Summary collapse
- .get_all_dependencies_from_file(file) ⇒ Object
- .get_dependencies_from_file(file) ⇒ Object
- .get_dependencies_from_repo(url) ⇒ Object
- .get_dependencies_from_rubygems(gem, version) ⇒ Object
- .get_latest_version_from_rubygems(gem) ⇒ Object
Class Method Details
.get_all_dependencies_from_file(file) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/lowendinsight/gemfile_dependencies.rb', line 42 def self.get_all_dependencies_from_file(file) d = [] top_level = get_dependencies_from_file(file) if top_level[0]["message"] d = top_level else top_level.each do |h| version = h["specified"].split(" ")[1].strip deps = get_dependencies_from_rubygems(h["name"], version) d << {"name" => h["name"], "specified" => version, "available" => get_latest_version_from_rubygems(h["name"]), "dependencies" => deps} end end return d end |
.get_dependencies_from_file(file) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/lowendinsight/gemfile_dependencies.rb', line 87 def self.get_dependencies_from_file(file) gf = Gemnasium::Parser.gemfile file d = [] if gf.dependencies.empty? d << {"message"=>"no dependencies defined in Gemfile, perhaps gemspec"} else gf.dependencies.each do |dep| d << {"name" => dep.name, "specified" => dep.requirement.to_s} end end return d end |
.get_dependencies_from_repo(url) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/lowendinsight/gemfile_dependencies.rb', line 26 def self.get_dependencies_from_repo(url) @url = url paths = URI(@url).path.split("/") @name = paths[(paths.size)-1] g = Git.clone(@url, @name, :path => '/tmp/checkout') gf = Gemnasium::Parser.gemfile Bundler.read_file("/tmp/checkout/#{@name}/Gemfile") d = [] gf.dependencies.each do |dep| d << {"name" => dep.name, "specified" => dep.requirement.to_s} end FileUtils.rm_rf("/tmp/checkout/#{@name}") return d end |
.get_dependencies_from_rubygems(gem, version) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/lowendinsight/gemfile_dependencies.rb', line 64 def self.get_dependencies_from_rubygems(gem, version) uri = URI("https://rubygems.org/api/v1/dependencies.json?gems=#{gem}") res = Net::HTTP.get(uri) j = JSON.parse(res) d = [] if version == '0' last = j.last last["dependencies"].each do |dep| d << {"name" => dep[0], "specified" => dep.last} end else j.each do |g| if g["number"] == version g["dependencies"].each do |dep| inner_deps = get_dependencies_from_rubygems(dep[0], dep.last.split(" ")[1]) d << {"name" => dep[0],"specified" => dep.last, "dependencies" => inner_deps} end end end end return d end |
.get_latest_version_from_rubygems(gem) ⇒ Object
57 58 59 60 61 62 |
# File 'lib/lowendinsight/gemfile_dependencies.rb', line 57 def self.get_latest_version_from_rubygems(gem) uri = URI("https://rubygems.org/api/v1/versions/#{gem}/latest.json") res = Net::HTTP.get(uri) j = JSON.parse(res) return j["version"] end |