class Processing::ApplicationExporter

A utility class to export Ruby-Processing sketches as Mac/Win/Nix Applications.

Constants

USAGE

Public Instance Methods

calculate_substitutions() click to toggle source
# File lib/ruby-processing/exporters/application_exporter.rb, line 62
def calculate_substitutions
  file_list = ['lib/ruby/jruby-complete.jar']
  @class_path = file_list.map { |f| '$JAVAROOT/' + f.sub(@prefix + '/', '') }.join(':')
  @linux_class_path = '.:../lib/ruby/*:../lib/*:../lib/library/*'
  @windows_class_path = '.;../lib/ruby/*;../lib/*;../lib/library/*'
end
compute_destination_name() click to toggle source
# File lib/ruby-processing/exporters/application_exporter.rb, line 39
def compute_destination_name
  @dest = "#{@title}.app"
end
copy_over_necessary_files() click to toggle source
# File lib/ruby-processing/exporters/application_exporter.rb, line 43
def copy_over_necessary_files
  @prefix = 'lib'
  cp_r(Dir["#{RP5_ROOT}/lib/templates/application/{*,**}"], @dest)
  @necessary_files = [@main_file_path]
  @necessary_files += Dir["#{RP_CONFIG['PROCESSING_ROOT']}/core/library/{*,**}"]
  @necessary_files += Dir["#{RP5_ROOT}/lib/{*,**}"]
  @necessary_files += @real_requires
  NECESSARY_FOLDERS.each do |folder|
    resource_path = File.join(@main_folder, folder)
    @necessary_files << resource_path if FileTest.exist?(resource_path)
  end
  @necessary_files.uniq!
  cp_r(@necessary_files, File.join(@dest, @prefix))
  cp_r(@libraries, File.join(@dest, @prefix, 'library')) unless @libraries.empty?
  # Then move the icon
  potential_icon = Dir.glob(File.join(@dest, @prefix, 'data/*.icns'))[0]
  move(potential_icon, File.join(@dest, 'Contents/Resources/sketch.icns'), force: true) if potential_icon
end
create_executables() click to toggle source
# File lib/ruby-processing/exporters/application_exporter.rb, line 69
def create_executables
  render_erb_in_path_with_binding(@dest, binding, delete: true)
  rm Dir.glob(@dest + "/**/*.java")
  runnable = @dest + '/' + File.basename(@main_file, '.rb')
  move @dest + '/run', runnable
  move @dest + '/run.exe', "#{runnable}.exe"
  chmod 0755, runnable
  chmod 0755, "#{runnable}.exe"
  chmod 0755, File.join(@dest, 'Contents', 'MacOS', 'JavaApplicationStub')
end
export!(sketch) click to toggle source
# File lib/ruby-processing/exporters/application_exporter.rb, line 19
def export!(sketch)
  # Check to make sure that the main file exists
  @main_file_path, @main_file, @main_folder = *get_main_file(sketch)
  usage(@main_file_path && FileTest.exist?(@main_file_path))

  extract_information

  compute_destination_name

  wipe_and_recreate_destination

  copy_over_necessary_files

  calculate_substitutions

  create_executables

  symlink_library_into_place
end
usage(predicate) click to toggle source
# File lib/ruby-processing/exporters/application_exporter.rb, line 90
def usage(predicate)
  return if predicate
  puts USAGE
  exit
end