Class: Migsupo::Generator::MigrationGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/migsupo/generator/migration_generator.rb

Instance Method Summary collapse

Constructor Details

#initialize(rails_version: nil) ⇒ MigrationGenerator

Returns a new instance of MigrationGenerator.



9
10
11
12
# File 'lib/migsupo/generator/migration_generator.rb', line 9

def initialize(rails_version: nil)
  @rails_version = rails_version
  @builder       = MigrationBuilder.new(rails_version: rails_version)
end

Instance Method Details

#generate(diff, output_dir:, dry_run: false) ⇒ Object



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
# File 'lib/migsupo/generator/migration_generator.rb', line 14

def generate(diff, output_dir:, dry_run: false)
  return [] if diff.empty?

  base_ts = base_timestamp
  groups  = group_operations(diff.operations)
  files   = []

  groups.each_with_index do |ops, i|
    class_name = Naming.class_name(ops)
    timestamp  = (base_ts + i).to_s
    file_name  = Naming.file_name(timestamp: timestamp, class_name: class_name)
    content    = @builder.build(ops, class_name: class_name)

    if dry_run
      puts "# #{file_name}"
      puts content
      puts
    else
      file_path = File.join(output_dir, file_name)
      File.write(file_path, content)
      files << file_path
    end
  end

  files
end