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!



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/timeline_setter/cli.rb', line 78

def compile!
  FileUtils.mkdir_p outdir unless File.exists? outdir
  if !@options[:no_assets] || !@options[:min]
    FileUtils.cp_r(Dir.glob("#{TimelineSetter::ROOT}/public/*"), outdir)
    # Concatenate JSTs to timeline-setter.js and remove templates.js
    `cat #{outdir}/javascripts/templates.js >> #{outdir}/javascripts/timeline-setter.js && rm -rf #{outdir}/javascripts/templates*`
  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



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

def events
  TimelineSetter::Parser.new sheet
end

- (Object) html



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

def html
  TimelineSetter::Timeline.new({
    :events => events.events,
    :interval => @options[:interval] || ''
  }).send(@options[:min] ? :timeline_min : :timeline)
end

- (Object) outdir



70
71
72
# File 'lib/timeline_setter/cli.rb', line 70

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
46
47
48
# File 'lib/timeline_setter/cli.rb', line 10

def parse_options!
  @options = {}
  option_parser = OptionParser.new do |opts|
    opts.banner = "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', '--without-assets', 'Output timeline without supporting assets') do |a|
      @options[:no_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('-i', '--interval INTERVAL', 'Override automatic interval notches with a custom interval.') do |i|
      @options[:interval] = i
    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



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

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

- (Object) timeline_page_path



74
75
76
# File 'lib/timeline_setter/cli.rb', line 74

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