Class: Jars::Installer
- Inherits:
-
Object
- Object
- Jars::Installer
- Defined in:
- lib/jars/installer.rb
Defined Under Namespace
Classes: Dependency
Constant Summary collapse
- COMMENT =
'# this is a generated file, to avoid over-writing it just delete this comment'
Class Method Summary collapse
- .install_deps(deps, dir, require_filename, vendor) ⇒ Object
- .install_jars(write_require_file = false) ⇒ Object
- .load_from_maven(file) ⇒ Object
- .needs_to_write?(require_filename) ⇒ Boolean
- .print_require_jar(file, dep, fallback = false) ⇒ Object
- .vendor_file(dir, dep) ⇒ Object
- .vendor_jars(deps, dir) ⇒ Object
- .vendor_jars!(vendor_dir = nil) ⇒ Object
- .write_dep(file, dir, dep, vendor) ⇒ Object
- .write_require_file(require_filename) ⇒ Object
- .write_require_jars(deps, require_filename) ⇒ Object
Instance Method Summary collapse
- #has_jars? ⇒ Boolean (also: #jars?)
-
#initialize(spec = nil) ⇒ Installer
constructor
A new instance of Installer.
- #install_jars(write_require_file = true) ⇒ Object
- #ruby_maven_install_options=(options) ⇒ Object
- #spec ⇒ Object
- #vendor_jars(write_require_file = true, vendor_dir = nil) ⇒ Object
- #vendor_jars!(write_require_file = true, vendor_dir = nil) ⇒ Object
Constructor Details
permalink #initialize(spec = nil) ⇒ Installer
Returns a new instance of Installer.
159 160 161 |
# File 'lib/jars/installer.rb', line 159 def initialize( spec = nil ) @mvn = MavenExec.new( spec ) end |
Class Method Details
permalink .install_deps(deps, dir, require_filename, vendor) ⇒ Object
[View source]
123 124 125 126 127 |
# File 'lib/jars/installer.rb', line 123 def self.install_deps( deps, dir, require_filename, vendor ) warn "deprecated" write_require_jars( deps, require_filename ) vendor_jars( deps, dir ) if dir && vendor end |
permalink .install_jars(write_require_file = false) ⇒ Object
[View source]
67 68 69 |
# File 'lib/jars/installer.rb', line 67 def self.install_jars( write_require_file = false ) new.install_jars( write_require_file ) end |
permalink .load_from_maven(file) ⇒ Object
[View source]
71 72 73 74 75 76 77 78 |
# File 'lib/jars/installer.rb', line 71 def self.load_from_maven( file ) result = [] File.read( file ).each_line do |line| dep = Dependency.new( line ) result << dep if dep && dep.scope == :runtime end result end |
permalink .needs_to_write?(require_filename) ⇒ Boolean
119 120 121 |
# File 'lib/jars/installer.rb', line 119 def self.needs_to_write?(require_filename) require_filename and (not File.exists?( require_filename ) or File.read( require_filename ).match( COMMENT)) end |
permalink .print_require_jar(file, dep, fallback = false) ⇒ Object
[View source]
105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/jars/installer.rb', line 105 def self.print_require_jar( file, dep, fallback = false ) return if dep.type != :jar || dep.scope != :runtime if dep.system? file.puts( "require( '#{dep.file}' )" ) if file elsif dep.scope == :runtime if fallback file.puts( " require '#{dep.path}'" ) if file else file.puts( " require_jar( '#{dep.gav.gsub( ':', "', '" )}' )" ) if file end end end |
permalink .vendor_file(dir, dep) ⇒ Object
[View source]
92 93 94 95 96 97 98 |
# File 'lib/jars/installer.rb', line 92 def self.vendor_file( dir, dep ) if !dep.system? && dep.type == :jar && dep.scope == :runtime vendored = File.join( dir, dep.path ) FileUtils.mkdir_p( File.dirname( vendored ) ) FileUtils.cp( dep.file, vendored ) end end |
permalink .vendor_jars(deps, dir) ⇒ Object
[View source]
153 154 155 156 157 |
# File 'lib/jars/installer.rb', line 153 def self.vendor_jars( deps, dir ) deps.each do |dep| vendor_file( dir, dep ) end end |
permalink .vendor_jars!(vendor_dir = nil) ⇒ Object
[View source]
175 176 177 |
# File 'lib/jars/installer.rb', line 175 def self.vendor_jars!(vendor_dir = nil) new.vendor_jars!(true, vendor_dir) end |
permalink .write_dep(file, dir, dep, vendor) ⇒ Object
[View source]
100 101 102 103 |
# File 'lib/jars/installer.rb', line 100 def self.write_dep( file, dir, dep, vendor ) warn "deprecated" print_require_jar( file, dep ) end |
permalink .write_require_file(require_filename) ⇒ Object
[View source]
80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/jars/installer.rb', line 80 def self.write_require_file( require_filename ) warn "deprecated" if needs_to_write?(require_filename) FileUtils.mkdir_p( File.dirname( require_filename ) ) f = File.open( require_filename, 'w' ) f.puts COMMENT f.puts "require 'jar_dependencies'" f.puts f end end |
permalink .write_require_jars(deps, require_filename) ⇒ Object
[View source]
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/jars/installer.rb', line 129 def self.write_require_jars( deps, require_filename ) if needs_to_write?(require_filename) FileUtils.mkdir_p( File.dirname( require_filename ) ) File.open( require_filename, 'w' ) do |f| f.puts COMMENT f.puts "begin" f.puts " require 'jar_dependencies'" f.puts "rescue LoadError" deps.each do |dep| # do not use require_jar method print_require_jar( f, dep, true ) end f.puts "end" f.puts f.puts "if defined? Jars" deps.each do |dep| print_require_jar( f, dep ) end f.puts "end" yield f if block_given? end end end |
Instance Method Details
permalink #has_jars? ⇒ Boolean Also known as: jars?
193 194 195 196 197 198 199 200 201 202 203 204 205 |
# File 'lib/jars/installer.rb', line 193 def has_jars? # first look if there are any requirements in the spec # and then if gem depends on jar-dependencies for runtime. # only then install the jars declared in the requirements result = ( spec = self.spec ) && ! spec.requirements.empty? && spec.dependencies.detect { |d| d.name == 'jar-dependencies' && d.type == :runtime } != nil if result && spec.platform.to_s != 'java' Jars.warn "\njar dependencies found on non-java platform gem - do not install jars\n" false else result end end |
permalink #install_jars(write_require_file = true) ⇒ Object
[View source]
184 185 186 187 |
# File 'lib/jars/installer.rb', line 184 def install_jars( write_require_file = true ) return unless has_jars? do_install( nil, write_require_file ) end |
permalink #ruby_maven_install_options=(options) ⇒ Object
[View source]
189 190 191 |
# File 'lib/jars/installer.rb', line 189 def ( ) @mvn.=( ) end |
permalink #spec ⇒ Object
[View source]
163 |
# File 'lib/jars/installer.rb', line 163 def spec; @mvn.spec end |
permalink #vendor_jars(write_require_file = true, vendor_dir = nil) ⇒ Object
[View source]
165 166 167 168 169 170 171 172 173 |
# File 'lib/jars/installer.rb', line 165 def vendor_jars( write_require_file = true, vendor_dir = nil ) return unless has_jars? if Jars.to_prop( Jars::VENDOR ) == 'false' vendor_dir = nil else vendor_dir ||= spec.require_path end do_install( vendor_dir, write_require_file ) end |
permalink #vendor_jars!(write_require_file = true, vendor_dir = nil) ⇒ Object
[View source]
179 180 181 182 |
# File 'lib/jars/installer.rb', line 179 def vendor_jars!( write_require_file = true, vendor_dir = nil ) vendor_dir ||= spec.require_path do_install( vendor_dir, write_require_file ) end |