#!/usr/bin/env ruby

if ARGV.length < 2
  $stderr.puts "Usage #{$PROGRAM_NAME} MIGRATION_NAME DIRECTORY [DIRECTORY]"
  $stderr.puts "e.g., #{$PROGRAM_NAME} add-server-ssl-crl config/foreman.migrations"
  exit 1
end

migration_name = ARGV[0]
directories = ARGV[1..-1]
content = ($stdin.tty? || $stdin.closed?) ? nil : $stdin.read

directories.each do |directory|
  unless File.directory?(directory)
    $stderr.puts "Directory #{directory} not found"
    exit 2
  end

  if File.basename(directory) == 'foreman.migrations'
    # Used by the foreman scenario
    format = '+%Y%m%d%H%M%S'
    to_replace = '-'
    glue = '_'
  else
    # Recommended format by kafo
    format = '+%y%m%d%H%M%S'
    to_replace = '-'
    glue = '-'
  end

  timestamp = `TZ=UTC date #{format}`.strip
  filename = File.join(directory, "#{timestamp}#{glue}#{migration_name.gsub(to_replace, glue)}.rb")

  File.open(filename, 'w') do |file|
    file.puts(content) if content
  end
  puts "Created #{filename}"
end
