class Warbler::WebServer::Artifact

Public Instance Methods

cached_path() click to toggle source
# File lib/warbler/web_server.rb, line 9
def cached_path
  @cached_path ||= File.join(local_repository, path_fragment)
end
download_url() click to toggle source
# File lib/warbler/web_server.rb, line 13
def download_url
  @download_url ||= "#{repo}/#{path_fragment}" #:nocov:
end
local_path() click to toggle source
# File lib/warbler/web_server.rb, line 17
def local_path
  unless File.exist?(cached_path)
    puts "Downloading #{artifact_id}-#{version}.jar" #:nocov:
    FileUtils.mkdir_p File.dirname(cached_path) #:nocov:
    require 'open-uri'                    #:nocov:
    begin
      open(download_url) do |stream|        #:nocov:
        File.open(cached_path, "wb") do |f| #:nocov:
          while buf = stream.read(4096) #:nocov:
            f << buf                    #:nocov:
          end                           #:nocov:
        end                             #:nocov:
      end                               #:nocov:
    rescue => e
      e.message.concat " - #{download_url}"
      raise e
    end
  end
  cached_path
end
local_repository() click to toggle source
# File lib/warbler/web_server.rb, line 40
def local_repository
  @@local_repository ||= begin
    m2_home = File.join(user_home, '.m2')
    if File.exist?(settings = File.join(m2_home, 'settings.xml'))
      local_repo = detect_local_repository(settings)
    end
    if local_repo.nil? && mvn_home = ENV['M2_HOME'] || ENV['MAVEN_HOME']
      if File.exist?(settings = File.join(mvn_home, 'conf/settings.xml'))
        local_repo = detect_local_repository(settings)
      end
    end
    local_repo || File.join(m2_home, 'repository')
  end
end
path_fragment() click to toggle source
# File lib/warbler/web_server.rb, line 5
def path_fragment
  @path_fragment ||= "#{group_id.gsub('.', '/')}/#{artifact_id}/#{version}/#{artifact_id}-#{version}.jar"
end

Private Instance Methods

detect_local_repository(settings) click to toggle source
# File lib/warbler/web_server.rb, line 67
def detect_local_repository(settings); require 'rexml/document'
  doc = REXML::Document.new( File.read( settings ) )
  if local_repo = doc.root.elements['localRepository']
    if ( local_repo = local_repo.first )
      local_repo = local_repo.value
      local_repo = nil if local_repo.empty?
    end
  end
  local_repo
end
user_home() click to toggle source
# File lib/warbler/web_server.rb, line 57
def user_home
  ENV[ 'HOME' ] || begin
    user_home = Dir.home if Dir.respond_to?(:home)
    unless user_home
      user_home = ENV_JAVA[ 'user.home' ] if Object.const_defined?(:ENV_JAVA)
    end
    user_home
  end
end