Class: Glimmer::Launcher
- Inherits:
-
Object
- Object
- Glimmer::Launcher
- Defined in:
- lib/glimmer/launcher.rb
Constant Summary collapse
- OPERATING_SYSTEMS_SUPPORTED =
["mac", "windows", "linux"]
- TEXT_USAGE =
<<-MULTILINE Usage: glimmer [--log-level=VALUE] [[ENV_VAR=VALUE]...] [[-jruby-option]...] application.rb [[application2.rb]...] Runs Glimmer applications using JRuby, automatically preloading the glimmer ruby gem and SWT jar dependency. Optionally, JRuby options may be passed in. Example: glimmer samples/hello_world.rb This runs the Glimmer application samples/hello_world.rb MULTILINE
- GLIMMER_LIB_LOCAL =
File.(File.join(__FILE__, '..', '..', 'glimmer.rb'))
- GLIMMER_LIB_GEM =
'glimmer'- GLIMMER_OPTIONS =
%w[--log-level]
- GLIMMER_OPTION_ENV_VAR_MAPPING =
{ '--log-level' => 'GLIMMER_LOGGER_LEVEL' }
- @@mutex =
Mutex.new
Class Method Summary collapse
- .glimmer_lib ⇒ Object
- .glimmer_option_env_vars(glimmer_options) ⇒ Object
- .jruby_os_specific_options ⇒ Object
- .jruby_swt_options ⇒ Object
- .launch(application, jruby_options: [], env_vars: {}, glimmer_options: {}) ⇒ Object
- .platform_os ⇒ Object
- .swt_jar_file ⇒ Object
Instance Method Summary collapse
-
#initialize(raw_options) ⇒ Launcher
constructor
A new instance of Launcher.
- #launch ⇒ Object
Constructor Details
#initialize(raw_options) ⇒ Launcher
Returns a new instance of Launcher.
71 72 73 74 75 76 |
# File 'lib/glimmer/launcher.rb', line 71 def initialize() @application_paths = extract_application_paths() @env_vars = extract_env_vars() @glimmer_options = () @jruby_options = end |
Class Method Details
.glimmer_lib ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/glimmer/launcher.rb', line 43 def glimmer_lib @@mutex.synchronize do unless @glimmer_lib @glimmer_lib = GLIMMER_LIB_GEM glimmer_gem_listing = `jgem list #{GLIMMER_LIB_GEM}` if !glimmer_gem_listing.include?(GLIMMER_LIB_GEM) && File.exists?(GLIMMER_LIB_LOCAL) @glimmer_lib = GLIMMER_LIB_LOCAL puts "[DEVELOPMENT MODE] (detected #{@glimmer_lib})" end end end @glimmer_lib end |
.glimmer_option_env_vars(glimmer_options) ⇒ Object
57 58 59 60 61 |
# File 'lib/glimmer/launcher.rb', line 57 def glimmer_option_env_vars() .map do |k, v| "#{GLIMMER_OPTION_ENV_VAR_MAPPING[k]}=#{v}" end.join(' ') end |
.jruby_os_specific_options ⇒ Object
35 36 37 |
# File 'lib/glimmer/launcher.rb', line 35 def OS.mac? ? "-J-XstartOnFirstThread" : "" end |
.jruby_swt_options ⇒ Object
39 40 41 |
# File 'lib/glimmer/launcher.rb', line 39 def "#{} -J-classpath \"#{swt_jar_file}\"" end |
.launch(application, jruby_options: [], env_vars: {}, glimmer_options: {}) ⇒ Object
63 64 65 66 67 68 |
# File 'lib/glimmer/launcher.rb', line 63 def launch(application, jruby_options: [], env_vars: {}, glimmer_options: {}) = .join(' ') + ' ' if .any? env_vars_string = env_vars.map {|k,v| "#{k}=#{v}"}.join(' ') env_vars_string = [env_vars_string, glimmer_option_env_vars()].join(' ') system "#{env_vars_string} jruby #{}#{} -r #{glimmer_lib} -S #{application}" end |
.platform_os ⇒ Object
27 28 29 |
# File 'lib/glimmer/launcher.rb', line 27 def platform_os OPERATING_SYSTEMS_SUPPORTED.detect {|os| OS.send("#{os}?")} end |
.swt_jar_file ⇒ Object
31 32 33 |
# File 'lib/glimmer/launcher.rb', line 31 def swt_jar_file @swt_jar_file ||= File.(File.join(__FILE__, '..', '..', '..', 'vendor', 'swt', platform_os, 'swt.jar')) end |
Instance Method Details
#launch ⇒ Object
78 79 80 81 82 83 84 |
# File 'lib/glimmer/launcher.rb', line 78 def launch if @application_paths.empty? display_usage else launch_application end end |