Class: Naether::Bootstrap
- Inherits:
-
Object
- Object
- Naether::Bootstrap
- Defined in:
- lib/naether/bootstrap.rb
Overview
:title:Naether::Bootstrap
Helper for bootstrapping Naether
Authors
Michael Guymon
Constant Summary
- @@dependencies =
nil
Class Method Summary (collapse)
- + (Object) bootstrap_local_repo(local_repo = nil, opts = {})
- + (Object) check_local_repo_for_deps(local_repo = nil, opts = {})
- + (Object) default_local_repo
-
+ (Object) dependencies(dep_file = nil)
List of Java dependencies for Naether.
- + (Object) download_dependencies(dest, opts = {})
- + (Object) install_dependencies_to_local_repo(install_jars, naether_jars, opts = {})
-
+ (Object) write_dependencies(dest = 'jar_dependencies.yml')
write bootstrap dependencies to yaml file.
Class Method Details
+ (Object) bootstrap_local_repo(local_repo = nil, opts = {})
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/naether/bootstrap.rb', line 56 def bootstrap_local_repo(local_repo = nil, opts = {} ) local_repo = local_repo || default_local_repo opts[:local_repo] = local_repo temp_naether_dir = File.join( local_repo, ".naether" ) deps = download_dependencies( temp_naether_dir, opts ) jars = (deps[:exists] + deps[:downloaded]).map {|jar| jar.values.first } jars = Naether::Java.internal_load_paths( jars ) if ( deps[:downloaded].size > 0) install_dependencies_to_local_repo( deps[:downloaded], jars, opts ) end #raise Naether::Java.instance.java.class_loader.getLoadedPaths().map { |x| x.toString() }.sort.inspect end |
+ (Object) check_local_repo_for_deps(local_repo = nil, opts = {})
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/naether/bootstrap.rb', line 124 def check_local_repo_for_deps(local_repo = nil, opts = {} ) local_repo = local_repo || default_local_repo local_repo = File.(local_repo) #puts "Checking #{local_repo} for jars to bootstrap Naether" deps = {:exists => [], :missing => [], :downloaded => [] } dependencies( opts[:dep_yaml] ).each do |dep| notation = dep.split(":") group = notation[0].gsub("\.", File::SEPARATOR) artifact = notation[1].gsub("\.", File::SEPARATOR) type = notation[2] version = notation[3] jar = "#{artifact}-#{version}.#{type}" maven_path = "#{local_repo}#{File::SEPARATOR}#{group}#{File::SEPARATOR}#{artifact}#{File::SEPARATOR}#{version}#{File::SEPARATOR}#{jar}" if File.exists? maven_path deps[:exists] << { dep => maven_path } else deps[:missing] << dep end end deps end |
+ (Object) default_local_repo
21 22 23 |
# File 'lib/naether/bootstrap.rb', line 21 def default_local_repo ENV['M2_REPO'] || File.('~/.m2/repository') end |
+ (Object) dependencies(dep_file = nil)
List of Java dependencies for Naether
41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/naether/bootstrap.rb', line 41 def dependencies( dep_file=nil ) if @@dependencies return @@dependencies end if dep_file.nil? dep_file = Naether::Configuration.dependencies_yml end dep = YAML.load_file( dep_file ) @@dependencies = dep[:dependencies] end |
+ (Object) download_dependencies(dest, opts = {})
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/naether/bootstrap.rb', line 78 def download_dependencies( dest, opts = {} ) if !File.exists? dest FileUtils.mkdir_p( dest ) end deps = {} if opts[:deps] deps[:missing] = opts[:deps] else deps = check_local_repo_for_deps( opts[:local_repo], opts ) end deps[:downloaded] = [] if deps[:missing].size > 0 deps[:missing].each do |dep| notation = dep.split(":") group = notation[0].gsub("\.", File::SEPARATOR) artifact = notation[1] type = notation[2] version = notation[3] jar = "#{artifact}-#{version}.#{type}" maven_path = "#{dest}#{File::SEPARATOR}#{jar}" if !File.exists? maven_path maven_mirror = "http://repo1.maven.org/maven2/#{group}/#{artifact}/#{version}/#{jar}" open(maven_path, 'wb') do |io| io.print open(maven_mirror).read end deps[:downloaded] << { dep => maven_path } else deps[:downloaded] << { dep => maven_path } end end end deps end |
+ (Object) install_dependencies_to_local_repo(install_jars, naether_jars, opts = {})
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/naether/bootstrap.rb', line 154 def install_dependencies_to_local_repo( install_jars, naether_jars, opts = {} ) require "#{File.dirname(__FILE__)}/../naether" @naether = Naether.create_from_jars( naether_jars ) if opts[:local_repo] @naether.local_repo_path = opts[:local_repo] end install_jars.each do |dep| notation, path = dep.to_a.first @naether.install( notation, nil, path ) end @naether end |
+ (Object) write_dependencies(dest = 'jar_dependencies.yml')
write bootstrap dependencies to yaml file
26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/naether/bootstrap.rb', line 26 def write_dependencies( dest = 'jar_dependencies.yml' ) deps = {}; if Naether::Configuration.platform == 'java' deps[:dependencies] = com.tobedevoured.naether.Bootstrap.dependencies.to_a else bootstrap = Rjb::import('com.tobedevoured.naether.Bootstrap') deps[:dependencies] = bootstrap.dependencies.toArray().map{ |dep| dep.toString() } end File.open( dest, 'w' ) do |out| YAML.dump( deps, out ) end end |