Class: Erdf::CLI

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

Class Method Summary collapse

Class Method Details

.start(*args) ⇒ Object



8
9
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
49
50
# File 'lib/erdf/cli.rb', line 8

def self.start(*args)

  if ARGV.empty?
    puts 'Error: Args missing'
    puts ' > Help'
    puts ' > ----'
    puts '   erdf file <filename> <output_file.png>'
    puts '   erdf database erde database postgres://postgres:postgres@localhost/rioosdb?search_path=shard_0,public ./schema.png <output_file.png>'
  exit
  end

  command = args.shift.strip

  case command
  when "version"
    puts 'erdf 0.6.1'
    exit
  when "file"
    file = Pathname(args.shift.strip)
    input = file.read
    text_transformer = Erdf::TextTransformer.new(input)
    hash_schema = text_transformer.to_hash
  when "database"
    url = args.shift.strip
    database_transformer = Erdf::DatabaseTransformer.new(url)
    hash_schema = database_transformer.to_hash
  else
    printf('Error: "%s"  - command not found', command)
    puts ''
    puts ' > Help'
    puts ' > ----'
    puts '   erdf file <filename> <output_file.png>'
    puts '   erdf database erde database postgres://postgres:postgres@localhost/rioosdb?search_path=shard_0,public ./schema.png <output_file.png>'
    exit
  end

  hash_transformer = Erdf::HashTransformer.new(hash_schema)
  dot_schema = hash_transformer.to_dot

  output_file = args.shift.strip

  layouted_graph, dot_log = Open3.capture3("dot -Tpng -o #{output_file}", stdin_data: dot_schema)
end