Class: Microstatic::Rake::AwsSiteSetupTask

Inherits:
Rake::TaskLib
  • Object
show all
Defined in:
lib/microstatic/rake/aws_site_setup_task.rb

Instance Method Summary collapse

Constructor Details

#initialize(task_env) ⇒ AwsSiteSetupTask

Returns a new instance of AwsSiteSetupTask.



6
7
8
# File 'lib/microstatic/rake/aws_site_setup_task.rb', line 6

def initialize(task_env)
  @task_env = task_env
end

Instance Method Details

#defineObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/microstatic/rake/aws_site_setup_task.rb', line 10

def define
  require 'microstatic'

  te = @task_env

  desc "set up S3 bucket and Route53 DNS entry for a new site" unless ::Rake.application.last_comment
  task te.task_name_or('aws_site_setup'), :site_name, :hosted_zone do |t,args|
    site_name = args[:site_name]
    hosted_zone = args.with_defaults(:hosted_zone => false)[:hosted_zone]

    # TODO: check site_name looks like a site name (e.g. foo.thepete.net, not just foo)
    site_name or raise "you must provide a site_name parameter to this rake task"

    te.check_for_aws_creds!
    

    # TODO: check it doesn't already exist for you
    # TODO: handle the bucket name already being taken by someone else
    S3BucketCreator.new( te.aws_creds ).create( site_name )
    
    # TODO: handle DNS record already existing
    Route53Dns.new( te.aws_creds ).add_s3_record_for_bucket( site_name, hosted_zone )
  end
end