Class: TimelineSetter::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/timeline_setter/cli.rb

Instance Method Summary (collapse)

Constructor Details

- (CLI) initialize

A new instance of CLI



6
7
8
# File 'lib/timeline_setter/cli.rb', line 6

def initialize
  parse_options!
end

Instance Method Details

- (Object) compile!



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/timeline_setter/cli.rb', line 72

def compile!
  if @options[:assets]
    FileUtils.cp_r(Dir.glob("#{TimelineSetter::ROOT}/public/*"), outdir)
  end

  File.open(timeline_page_path, 'w+') do |doc|
    doc.write html
  end

  puts "== Files copied to #{outdir}"

  if @options[:open]
    puts "== Opening ..."
    %x[ open #{timeline_page_path} ]
  end
end

- (Object) events



56
57
58
# File 'lib/timeline_setter/cli.rb', line 56

def events
  TimelineSetter::Parser.new sheet
end

- (Object) html



60
61
62
# File 'lib/timeline_setter/cli.rb', line 60

def html
  TimelineSetter::Timeline.new(events.events).send(@options[:min] ? :timeline_min : :timeline)
end

- (Object) outdir



64
65
66
# File 'lib/timeline_setter/cli.rb', line 64

def outdir
  @options[:output] ? @options[:output] : "#{`pwd`.strip}/"
end

- (Object) parse_options!



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/timeline_setter/cli.rb', line 10

def parse_options!
  @options = {}
  option_parser = OptionParser.new do |opts|
    opts. = "TimelineSetter: A tool to generate HTML timelines from CSVs.\n\nUsage:\n"

    opts.on('-c', '--csv CSV', 'CSV input file') do |c|
      @options[:csv] = c
    end
    opts.on('-o', '--output OUTPUT', 'Output directory to install timeline into.') do |o|
      @options[:output] = o
    end
    opts.on('-a', '--with-assets', 'Output timeline supporting assets as well') do |a|
      @options[:assets] = a
    end
    opts.on('-O', '--open', 'Open generated timeline in a browser') do |o|
      @options[:open] = o
    end
    opts.on('-m', '--min', 'Create a minified one-page version of the timeline') do |m|
      @options[:min] = m
    end


    opts.on_tail("-h", "--help", "Show this message") do
      puts opts
      exit
    end
  end
  option_parser.parse!

  if @options.empty?
    puts option_parser.on_tail
    exit
  else
    compile!
  end
end

- (Object) sheet



52
53
54
# File 'lib/timeline_setter/cli.rb', line 52

def sheet
  File.open(@options[:csv]).read
end

- (Object) timeline_page_path



68
69
70
# File 'lib/timeline_setter/cli.rb', line 68

def timeline_page_path
  File.join(outdir, 'timeline.html')
end