Class: Processing::Runner

Inherits:
Object
  • Object
show all
Defined in:
lib/jruby_art/runner.rb

Overview

Utility class to handle the different commands that the ‘k9’ command offers. Able to run, watch, live, create, app, and unpack

Constant Summary collapse

WIN_PATTERNS =
[
  /bccwin/i,
  /cygwin/i,
  /djgpp/i,
  /ming/i,
  /mswin/i,
  /wince/i
].freeze
INSTALL =
<<~MSG.freeze
  <Config|JRuby-Complete|Samples>
  or <Sound|Video> library
MSG

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRunner

Returns a new instance of Runner.



35
36
37
# File 'lib/jruby_art/runner.rb', line 35

def initialize
  @options = {}
end

Instance Attribute Details

#argcObject (readonly)

Returns the value of attribute argc.



33
34
35
# File 'lib/jruby_art/runner.rb', line 33

def argc
  @argc
end

#filenameObject (readonly)

Returns the value of attribute filename.



33
34
35
# File 'lib/jruby_art/runner.rb', line 33

def filename
  @filename
end

#optionsObject (readonly)

Returns the value of attribute options.



33
34
35
# File 'lib/jruby_art/runner.rb', line 33

def options
  @options
end

#osObject (readonly)

Returns the value of attribute os.



33
34
35
# File 'lib/jruby_art/runner.rb', line 33

def os
  @os
end

Class Method Details

.executeObject

Start running a jruby_art filename from the passed-in arguments



40
41
42
43
44
# File 'lib/jruby_art/runner.rb', line 40

def self.execute
  runner = new
  runner.parse_options(ARGV)
  runner.execute
end

Instance Method Details

#checkObject



163
164
165
166
# File 'lib/jruby_art/runner.rb', line 163

def check
  require_relative '../jruby_art/config'
  Config.new.check
end

#createObject



111
112
113
114
# File 'lib/jruby_art/runner.rb', line 111

def create
  require_relative '../jruby_art/creators/sketch_writer'
  SketchWriter.new(File.basename(filename, '.rb'), argc).write
end

#executeObject

Dispatch central.



47
48
49
50
51
52
53
54
55
56
# File 'lib/jruby_art/runner.rb', line 47

def execute
  parse_options('-h') if options.empty?
  show_version if options[:version]
  run_sketch if options[:run]
  watch_sketch if options[:watch]
  live if options[:live]
  create if options[:create]
  check if options[:check]
  install(filename) if options[:install]
end

#exportObject

Export as app not implemented



117
118
119
120
# File 'lib/jruby_art/runner.rb', line 117

def export
  ensure_exists(filename)
  puts 'Not implemented yet'
end

#install(library = nil) ⇒ Object



141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# File 'lib/jruby_art/runner.rb', line 141

def install(library = nil)
  require_relative 'installer'
  library ||= 'new'
  case library.downcase
  when /sound|video/
    system "cd #{K9_ROOT}/vendors && rake download_and_copy_#{choice}"
  when /samples/
    system "cd #{K9_ROOT}/vendors && rake install_samples"
  when /jruby/
    system "cd #{K9_ROOT}/vendors && rake"
  when /config/
    remove_old_config if options[:force]
    Installer.new.install
  when /new/
    # install samples and config JRubyArt
    system "cd #{K9_ROOT}/vendors && rake"
    Installer.new.install
  else
    warn format('No installer for %<library>s', library: library)
  end
end

#liveObject

Just simply run a JRubyArt filename.



129
130
131
132
# File 'lib/jruby_art/runner.rb', line 129

def live
  ensure_exists(filename)
  spin_up('live.rb', filename, argc)
end

#parse_options(args) ⇒ Object

Parse the command-line options.



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/jruby_art/runner.rb', line 59

def parse_options(args)
  opt_parser = OptionParser.new do |opts|
    # Set a banner, displayed at the top
    # of the help screen.
    opts.banner = 'Usage: k9 [options] [<filename.rb>]'
    # Define the options, and what they do

    opts.on('-v', '--version', 'JRubyArt Version') do
      options[:version] = true
    end

    opts.on('-?', '--check', 'Prints configuration') do
      options[:check] = true
    end

    opts.on('-i', '--install', INSTALL) do
      options[:install] = true
    end

    opts.on('-f', '--force', 'Force removal of old Config') do
      options[:force] = true
    end

    opts.on('-c', '--create', 'Create new outline sketch') do
      options[:create] = true
    end

    opts.on('-r', '--run', 'Run the sketch') do
      options[:run] = true
    end

    opts.on('-w', '--watch', 'Watch/run the sketch') do
      options[:watch] = true
    end

    opts.on('-l', '--live', 'As above, with pry console bound to Processing.app') do
      options[:live] = true
    end

    opts.on('-a', '--app', 'Export as app NOT IMPLEMENTED YET') do
      options[:export] = true
    end

    opts.on_tail('-h', '--help', 'Display this screen') do
      puts opts
      exit
    end
  end
  @argc = opt_parser.parse(args)
  @filename = argc.shift
end

#run_sketchObject

Just simply run a JRubyArt filename.



123
124
125
126
# File 'lib/jruby_art/runner.rb', line 123

def run_sketch
  ensure_exists(filename)
  spin_up('run.rb', filename, argc)
end

#show_helpObject

Show the standard help/usage message.



169
170
171
# File 'lib/jruby_art/runner.rb', line 169

def show_help
  puts HELP_INSTALL
end

#show_versionObject



173
174
175
176
177
178
179
180
181
182
183
184
# File 'lib/jruby_art/runner.rb', line 173

def show_version
  require 'erb'
  warning = 'WARNING: JDK12 is preferred'.freeze
  if RUBY_PLATFORM == 'java'
    warn warning unless ENV_JAVA['java.specification.version'].to_i >= 11
  end
  template = ERB.new <<-VERSION
  JRubyArt version <%= JRubyArt::VERSION %>
  Ruby version <%= RUBY_VERSION %>
  VERSION
  puts template.result(binding)
end

#watch_sketchObject

Run a filename, keeping an eye on it’s file, and reloading whenever it changes.



136
137
138
139
# File 'lib/jruby_art/runner.rb', line 136

def watch_sketch
  ensure_exists(filename)
  spin_up('watch.rb', filename, argc)
end