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.



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

def initialize
  @options = {}
end

Instance Attribute Details

#argcObject (readonly)

Returns the value of attribute argc.



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

def argc
  @argc
end

#filenameObject (readonly)

Returns the value of attribute filename.



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

def filename
  @filename
end

#optionsObject (readonly)

Returns the value of attribute options.



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

def options
  @options
end

Class Method Details

.executeObject

Start running a picrate command from the passed-in arguments



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

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

Instance Method Details

#createObject



67
68
69
70
71
# File 'lib/picrate/runner.rb', line 67

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

#executeObject

Dispatch central.



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

def execute
  parse_options('-h') if options.empty?
  show_version if options[:version]
  create if options[:create]
  install(filename) if options[:install]
end

#install(library = nil) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/picrate/runner.rb', line 82

def install(library = nil)
  library ||= 'new'
  choice = library.downcase
  case choice
  when /samples|sound|video/
    system "cd #{PICRATE_ROOT}/vendors && rake install_#{choice}"
  when /new/
    # install samples and config geany
    system "cd #{PICRATE_ROOT}/vendors && rake"
  else
    warn format('No installer for %s', library)
  end
end

#parse_options(args) ⇒ Object

Parse the command-line options. Keep it simple.



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
63
64
65
# File 'lib/picrate/runner.rb', line 31

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] [<name>]'

    # 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><Video> 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_tail('-h', '--help', 'Display this screen') do
      puts opts
      puts ''
      puts 'Run a sketch: jruby [--dev] [<sketch.rb>]'
      exit
    end
  end
  @argc = opt_parser.parse(args)
  @filename = argc.shift
end

#show_versionObject



73
74
75
76
77
78
79
80
# File 'lib/picrate/runner.rb', line 73

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