Class: Migr8::Actions::EditAction

Inherits:
Action
  • Object
show all
Defined in:
lib/migr8.rb

Constant Summary collapse

NAME =
"edit"
DESC =
"open migration file by $MIGR8_EDITOR"
OPTS =
[
  "-r N      : edit N-th file from latest version",
  "-e editor : editr command (such as 'emacsclient', 'open', ...)",
]
ARGS =
"[version]"

Instance Method Summary collapse

Methods inherited from Action

#cmdopterr, find_by_name, #get_command, inherited, #parse, #parser, #repository, #short_usage, subclasses, #usage

Instance Method Details

#run(options, args) ⇒ Object



1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
# File 'lib/migr8.rb', line 1636

def run(options, args)
  editor = options['e'] || ENV['MIGR8_EDITOR']
  if ! editor || editor.empty?
    _recommend_to_set_MIGR8_EDITOR('edit')
    raise cmdopterr("#{NAME}: failed to create migration file.")
  end
  version = num = nil
  if options['r']
    num = options['r'].to_i
  else
    if args.length == 0
      #raise cmdopterr("#{NAME}: '-r N' option or version required.")
      num = 1
    elsif args.length > 1
      raise cmdopterr("#{NAME}: too much arguments.")
    elsif args.length == 1
      version = args.first
    else
      raise "** unreachable"
    end
  end
  #
  repo = repository()
  if num
    migs = repo.migrations_in_history_file()
    mig = migs[-num]  or
      raise cmdopterr("#{NAME} -n #{num}: migration file not found.")
    version = mig.version
  else
    mig = repo.load_migration(version)  or
      raise cmdopterr("#{NAME}: #{version}: version not found.")
  end
  puts "# #{editor} #{repo.migration_filepath(version)}"
  system("#{editor} #{repo.migration_filepath(version)}")
end