class Hyrb::Tasks::Project::Bootstrap

Public Instance Methods

run(env) click to toggle source
# File lib/hyrb/tasks/project/bootstrap.rb, line 28
def run(env)
  prompt "Project title", env.project, :title, env.project.name.humanize
  prompt "Project description", env.project, :description

  if ! env.project.users.try(:any?) || yes?("Update users for this project?")
    invoke Developers::Download
    invoke Developers::AddToProject
  end

  if ! env.project.repo_name && yes?("Should the project have a Github repo?")
    invoke Github::CreateRepo
  end

  if ! env.project.github_team && yes?("Should the project have a Github team?")
    invoke Github::CreateProjectTeam
  end

  if env.project.github_team
    invoke Github::SyncProjectTeam
  end

  if ! env.project.room_name
    invoke Hipchat::CreateRoom if yes? "Should the project have a Hipchat room?"
  end

  if env.project.repo_name && env.project.room_name && ! env.project.has_hipchat_hook
    invoke CreateHipchatHook
  end

  if env.environment_name || yes?("Work on a project environment?")
    invoke Environment::Init

    if env.environment.host
      say "Sever for evironment exists: #{env.environment.host}", :yellow
    elsif yes?("Provision a server for this environment?")
      provisioners = {
        digital_ocean: Provision::DigitalOcean,
        rackspace: Provision::Rackspace,
      }

      provider_name = ask "Provider:", { limited_to: provisioners.keys.map(&:to_s) }
      invoke provisioners[provider_name.to_sym]
    end

    if ! env.environment.has_dns_record && yes?("Create a DNS record?")
      invoke Rackspace::CreateDNSRecord
    end

    invoke Environment::SetupExisting

    if yes? "Set up ansible for this environment?"
      invoke Ansible::CreatePlaybook
    end
  end

end