Class: Processing::Runner

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

Overview

Utility class to handle the different commands that the ‘picrate’ offers

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRunner

Returns a new instance of Runner.



10
11
12
# File 'lib/picrate/runner.rb', line 10

def initialize
  @options = {}
end

Instance Attribute Details

#argcObject (readonly)

Returns the value of attribute argc.



8
9
10
# File 'lib/picrate/runner.rb', line 8

def argc
  @argc
end

#filenameObject (readonly)

Returns the value of attribute filename.



8
9
10
# File 'lib/picrate/runner.rb', line 8

def filename
  @filename
end

#optionsObject (readonly)

Returns the value of attribute options.



8
9
10
# File 'lib/picrate/runner.rb', line 8

def options
  @options
end

Class Method Details

.executeObject

Start running a picrate command from the passed-in arguments



15
16
17
18
19
# File 'lib/picrate/runner.rb', line 15

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

Instance Method Details

#createObject



64
65
66
67
68
# File 'lib/picrate/runner.rb', line 64

def create
  require_relative 'creators/sketch_writer'
  # in case user supplied extension, we remove it
  SketchWriter.new(File.basename(filename, '.rb')).write
end

#execute!Object

Dispatch central.



22
23
24
25
26
27
# File 'lib/picrate/runner.rb', line 22

def execute!
  show_help if options.empty?
  show_version if options[:version]
  create if options[:create]
  install(filename) if options[:install]
end

#install(library) ⇒ Object



79
80
81
82
83
84
# File 'lib/picrate/runner.rb', line 79

def install(library)
  choice = library.downcase
  valid = Regexp.union('samples', 'sound', 'video', 'glvideo')
  return warn format('No installer for %s', choice) unless valid =~ choice
  system "cd #{PICRATE_ROOT}/vendors && rake download_and_copy_#{choice}"
end

#parse_options(args) ⇒ Object

Parse the command-line options. Keep it simple.



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/picrate/runner.rb', line 30

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

    # Define the options, and what they do
    options[:version] = false
    opts.on('-v', '--version', 'PiCrate Version') do
      options[:version] = true
    end

    options[:install] = false
    message = '<Samples><GLVideo><Video><Sound> Install samples or library'
    opts.on('-i', '--install', message) do
      options[:install] = true
    end

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

    # This displays the help screen, all programs are
    # assumed to have this option.
    opts.on('-h', '--help', 'Display this screen') do
      puts opts
      exit
    end
  end
  @argc = opt_parser.parse(args)
  @filename = argc.shift
end

#show_versionObject



70
71
72
73
74
75
76
77
# File 'lib/picrate/runner.rb', line 70

def show_version
  require 'erb'
  template = ERB.new <<-EOF
    PiCrate version <%= PiCrate::VERSION %>
    JRuby version <%= JRUBY_VERSION %>
  EOF
  puts template.result(binding)
end