Sha256: e24cce88d72a0ecfcfcd9ea0f242a41a9153c272bd056325b4175341cf7b77af

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 KB

Contents

#!/usr/bin/env ruby

begin
  require 'stickler'
rescue LoadError
  require 'rubygems'
  $: << File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
  require 'stickler'
end

cli = Stickler::CLI.new(ARGV, ENV)
begin
  cli.run
rescue => e
  $stderr.puts "ERROR: #{e}"
  $stderr.puts cli.usage.to_s
end

__END__
gem = ARGV.shift
ver = ARGV.shift || Gem::Requirement.default

require 'rubygems/source_info_cache'
require 'rubygems/dependency_list'

original_dep =  Gem::Dependency.new( gem, ver )

# actually search through and find the ones for this platform
def spec_from_dependency(dep)
  spec_and_source = Gem::SourceInfoCache.search_with_source(dep).reverse.first 
  spec = spec_and_source.first
  return spec
end

dep_stack = []
dep_stack.push(spec_from_dependency(original_dep))
dep_list = Gem::DependencyList.new
seen = {}

until dep_stack.empty? 
    spec = dep_stack.pop
    next if spec.nil? or seen[spec.name]
    puts "---> #{spec.full_name}"
    seen[spec.name] = true

    spec.dependencies.each do |dep|
        d = spec_from_dependency(dep)
        next if seen[d.name]
        puts "<--- #{d.full_name}"
        dep_stack.push(d)
    end
    dep_list.add spec
end


dep_list.dependency_order.reverse.each do |s|
    puts "Install #{s.full_name}"
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
stickler-0.1.0 bin/stickler
stickler-0.1.1 bin/stickler