Class: Sequent::Rake::MigrationFiles

Inherits:
Object
  • Object
show all
Defined in:
lib/sequent/rake/migration_files.rb

Constant Summary collapse

MIGRATION_DIRECTORY =
File.realpath(File.join(__dir__, '../../../db/migrate'))

Instance Method Summary collapse

Instance Method Details

#copy(to) ⇒ 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
# File 'lib/sequent/rake/migration_files.rb', line 8

def copy(to)
  FileUtils.mkdir_p(to)
  now = Time.current.strftime('%Y%m%d%H%M%S')
  current_entries = current_migration_files(to)

  Dir
    .entries(MIGRATION_DIRECTORY)
    .reject { |dir| dir.start_with?('.') }
    .sort
    .each_with_index do |file, index|
      full_file_name = File.join(MIGRATION_DIRECTORY, file)

      if File.directory?(full_file_name)
        copy_directory(file, MIGRATION_DIRECTORY, to)
      else
        _timestamp, *file_parts = file.split('_')
        next if current_entries.include?(file_parts.join('_'))

        file_name = [(now.to_i + index).to_s, *file_parts].join('_')
        destination_file_name = File.join(to, file_name)
        FileUtils.cp(full_file_name, destination_file_name, preserve: true, verbose: true)
      end
    end
end