themejuice/tj

View on GitHub
lib/theme-juice/commands/delete.rb

Summary

Maintainability
A
25 mins
Test Coverage
# encoding: UTF-8

module ThemeJuice
  module Commands
    class Delete < Command

      def initialize(opts = {})
        super

        init_project

        runner do |tasks|
          tasks << Tasks::DeleteConfirm.new
          tasks << Tasks::Database.new
          if @env.nginx
            tasks << Tasks::Nginx.new
          else
            tasks << Tasks::Apache.new
          end
          tasks << Tasks::VMLocation.new
          tasks << Tasks::SyncedFolder.new
          tasks << Tasks::DNS.new
          if @project.vm_restart
            tasks << Tasks::VMRestart.new
          else
            tasks << Tasks::VMProvision.new
          end
          tasks << Tasks::DeleteSuccess.new
        end
      end

      private

      def init_project
        @project.name       = @opts.fetch("name")       { name }
        @project.url        = @opts.fetch("url")        { url }
        @project.db_drop    = @opts.fetch("db_drop")    { false }
        @project.vm_restart = @opts.fetch("vm_restart") { false }
        @project.vm_root
        @project.vm_location
        @project.vm_srv
      end

      def name
        name = @io.ask "What's the project name?"

        unless @list.projects.include? name
          @io.error "Project '#{name}' doesn't exist"
        end

        name
      end

      def url
        return "#{@project.name}.dev" if @env.no_landrush

        url = @io.ask "What is the project's development url?", :default => "#{@project.name}.dev"

        unless @list.urls.include? url
          @io.notice "Project url '#{url}' doesn't exist within DNS records. Skipping..."
        end

        url
      end
    end
  end
end