Class: Jars::Installer

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

Constructor Details

#initialize(spec = nil) ⇒ Installer

Returns a new instance of Installer.



144
145
146
# File 'lib/jars/installer.rb', line 144

def initialize( spec = nil )
  @mvn = MavenExec.new( spec )
end

Class Method Details

.install_deps(deps, dir, require_filename, vendor) ⇒ Object



117
118
119
120
121
# File 'lib/jars/installer.rb', line 117

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

.install_jars(write_require_file = false) ⇒ Object



65
66
67
# File 'lib/jars/installer.rb', line 65

def self.install_jars( write_require_file = false )
  new.install_jars( write_require_file )
end

.load_from_maven(file) ⇒ Object



69
70
71
72
73
74
75
76
# File 'lib/jars/installer.rb', line 69

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

.needs_to_write?(require_filename) ⇒ Boolean

Returns:

  • (Boolean)


113
114
115
# File 'lib/jars/installer.rb', line 113

def self.needs_to_write?(require_filename)
  require_filename and (not File.exists?( require_filename ) or File.read( require_filename ).match( COMMENT))
end


103
104
105
106
107
108
109
110
# File 'lib/jars/installer.rb', line 103

def self.print_require_jar( file, dep )
  return if dep.type != :jar || dep.scope != :runtime
  if dep.system?
    file.puts( "require( '#{dep.file}' )" ) if file
  elsif dep.scope == :runtime
    file.puts( "require_jar( '#{dep.gav.gsub( ':', "', '" )}' )" ) if file
  end
end

.vendor_file(dir, dep) ⇒ Object



90
91
92
93
94
95
96
# File 'lib/jars/installer.rb', line 90

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

.vendor_jars(deps, dir) ⇒ Object



138
139
140
141
142
# File 'lib/jars/installer.rb', line 138

def self.vendor_jars( deps, dir )
  deps.each do |dep|
    vendor_file( dir, dep )
  end
end

.vendor_jars!Object



155
156
157
# File 'lib/jars/installer.rb', line 155

def self.vendor_jars!
  new.vendor_jars!
end

.write_dep(file, dir, dep, vendor) ⇒ Object



98
99
100
101
# File 'lib/jars/installer.rb', line 98

def self.write_dep( file, dir, dep, vendor )
  warn "deprecated"
  print_require_jar( file, dep )
end

.write_require_file(require_filename) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
# File 'lib/jars/installer.rb', line 78

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

.write_require_jars(deps, require_filename) ⇒ Object



123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/jars/installer.rb', line 123

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 "require 'jar_dependencies'"
      f.puts
      deps.each do |dep|
        print_require_jar( f, dep )
      end
      yield f if block_given?
    end
  end
end

Instance Method Details

#has_jars?Boolean Also known as: jars?

Returns:

  • (Boolean)


180
181
182
183
184
185
186
187
188
189
190
191
192
# File 'lib/jars/installer.rb', line 180

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

#install_jars(write_require_file = true) ⇒ Object



171
172
173
174
# File 'lib/jars/installer.rb', line 171

def install_jars( write_require_file = true )
  return unless has_jars?
  do_install( false, write_require_file )
end

#ruby_maven_install_options=(options) ⇒ Object



176
177
178
# File 'lib/jars/installer.rb', line 176

def ruby_maven_install_options=( options )
  @mvn.ruby_maven_install_options=( options )
end

#specObject



148
# File 'lib/jars/installer.rb', line 148

def spec; @mvn.spec end

#vendor_jars(write_require_file = true) ⇒ Object



150
151
152
153
# File 'lib/jars/installer.rb', line 150

def vendor_jars( write_require_file = true )
  return unless has_jars?
  vendor_jars!( write_require_file )
end

#vendor_jars!(write_require_file = true) ⇒ Object



159
160
161
162
163
164
165
166
167
168
169
# File 'lib/jars/installer.rb', line 159

def vendor_jars!( write_require_file = true )
  case Jars.to_prop( Jars::VENDOR )
  when 'true'
    do_vendor = true
  when 'false'
    do_vendor = false
  else
    do_vendor = true
  end
  do_install( do_vendor, write_require_file )
end