class Poach

Public Instance Methods

extract(jar, regex) click to toggle source
# File lib/poach.rb, line 50
def extract(jar, regex)
  contents = `jar tf #{jar}`
  scripts = contents.each_line.grep(Regexp.new(regex)).map { |l| l.strip }
  scripts.each do |script|
    puts "Running: " + "jar xf #{jar} #{script}"
    system "jar xf #{jar} #{script}"
  end
end
make() click to toggle source
# File lib/poach.rb, line 9
def make()
  nashorn_main_jar = File.dirname(__FILE__) + "/../resources/nashorn-main.jar"
  application_jars = Dir.glob 'jars/**/*.jar'
  application_contents = Dir.glob("**/*").reject do |f|
    f =~ %r[dist/|jars/] || !(File.file? f) || File.basename(f) =~ /\.(coffee|java)$/
  end

  # Recreate dist/ folder
  FileUtils.rm_rf "dist"
  Dir.mkdir "dist"

  # Copy all jars into dist/
  jars = application_jars + [nashorn_main_jar]
  jars.each do |jar|
    FileUtils.cp jar, "dist/#{File.basename jar}"
  end

  # Extract and remove all jars
  Dir.chdir "dist" do
    Dir.entries(".").reject{|d| d =~ /^(\.\.?)$/}.each do |jar|
      `jar xf #{jar}`
      FileUtils.rm_rf "./#{jar}"
    end
  end

  # Copy all application contents into dist/
  application_contents.each do |file|
    FileUtils.mkdir_p "dist/#{File.dirname file}"
    FileUtils.cp file, "dist/#{file}"
  end

  # Create jar
  Dir.chdir "dist" do
    `jar cfe #{options[:name]}.jar com.github.jbreeden.NashornMain .`
    Dir.entries(".").reject{|f| f =~ /#{options[:name]}.jar|^(\.\.?)$/}.each do |f|
      FileUtils.rm_rf f
    end
  end
end
update(jar, glob) click to toggle source
# File lib/poach.rb, line 60
def update(jar, glob)
  contents = `jar tf #{jar}`
  files = Dir[glob]
  files.each do |file|
    puts "Running: " + "jar uf #{jar} #{file}"
    system "jar uf #{jar} #{file}"
  end
end