RubiGen::Commands::Destroy

Undo the actions performed by a generator. Rewind the action manifest and attempt to completely erase the results of each action.

Public Instance Methods

complex_template(*args) click to toggle source
     # File lib/rubigen/commands.rb, line 575
575:       def complex_template(*args)
576:         # nothing should be done here
577:       end
directory(relative_path) click to toggle source

Remove each directory in the given path from right to left. Remove each subdirectory if it exists and is a directory.

     # File lib/rubigen/commands.rb, line 539
539:       def directory(relative_path)
540:         parts = relative_path.split('/')
541:         until parts.empty?
542:           partial = File.join(parts)
543:           path = destination_path(partial)
544:           if File.exist?(path)
545:             if Dir[File.join(path, '*')].empty?
546:               logger.rmdir partial
547:               unless options[:pretend]
548:                 if options[:svn]
549:                   # If the directory has been marked to be added
550:                   # but has not yet been checked in, revert and delete
551:                   if options[:svn][relative_path]
552:                     system("svn revert #{path}")
553:                     FileUtils.rmdir(path)
554:                   else
555:                   # If the directory is not in the status list, it
556:                   # has no modifications so we can simply remove it
557:                     system("svn rm #{path}")
558:                   end
559:                 # I don't think git needs to remove directories?..
560:                 # or maybe they have special consideration...
561:                 else
562:                   FileUtils.rmdir(path)
563:                 end
564:               end
565:             else
566:               logger.notempty partial
567:             end
568:           else
569:             logger.missing partial
570:           end
571:           parts.pop
572:         end
573:       end
file(relative_source, relative_destination, file_options = {}) click to toggle source

Remove a file if it exists and is a file.

     # File lib/rubigen/commands.rb, line 494
494:       def file(relative_source, relative_destination, file_options = {})
495:         destination = destination_path(relative_destination)
496:         if File.exist?(destination)
497:           logger.rm relative_destination
498:           unless options[:pretend]
499:             if options[:svn]
500:               # If the file has been marked to be added
501:               # but has not yet been checked in, revert and delete
502:               if options[:svn][relative_destination]
503:                 system("svn revert #{destination}")
504:                 FileUtils.rm(destination)
505:               else
506:               # If the directory is not in the status list, it
507:               # has no modifications so we can simply remove it
508:                 system("svn rm #{destination}")
509:               end
510:             elsif options[:git]
511:               if options[:git][:new][relative_destination]
512:                 # file has been added, but not committed
513:                 system("git reset HEAD #{relative_destination}")
514:                 FileUtils.rm(destination)
515:               elsif options[:git][:modified][relative_destination]
516:                 # file is committed and modified
517:                 system("git rm -f #{relative_destination}")
518:               else
519:                 # If the directory is not in the status list, it
520:                 # has no modifications so we can simply remove it
521:                 system("git rm #{relative_destination}")
522:               end
523:             else
524:               FileUtils.rm(destination)
525:             end
526:           end
527:         else
528:           logger.missing relative_destination
529:           return
530:         end
531:       end
Also aliased as: template
migration_template(relative_source, relative_destination, template_options = {}) click to toggle source

When deleting a migration, it knows to delete every file named “[0-9]*_#{file_name}”.

     # File lib/rubigen/commands.rb, line 580
580:       def migration_template(relative_source, relative_destination, template_options = {})
581:         migration_directory relative_destination
582: 
583:         migration_file_name = template_options[:migration_file_name] || file_name
584:         unless migration_exists?(migration_file_name)
585:           stdout.puts "There is no migration named #{migration_file_name}"
586:           return
587:         end
588: 
589: 
590:         existing_migrations(migration_file_name).each do |file_path|
591:           file(relative_source, file_path, template_options)
592:         end
593:       end
route_resources(*resources) click to toggle source
     # File lib/rubigen/commands.rb, line 595
595:       def route_resources(*resources)
596:         resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
597:         look_for = "\n  map.resources #{resource_list}\n"
598:         logger.route "map.resources #{resource_list}"
599:         gsub_file 'config/routes.rb', /(#{look_for})/i, ''
600:       end
template(relative_source, relative_destination, file_options = {}) click to toggle source

Templates are deleted just like files and the actions take the same parameters, so simply alias the file method.

Alias for: file

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.