lib/datapimp/cli/create.rb in datapimp-1.0.8 vs lib/datapimp/cli/create.rb in datapimp-1.0.9
- old
+ new
@@ -1,46 +1,93 @@
\ No newline at end of file
+command 'create s3 bucket' do |c|
+ c.syntax = 'datapimp create s3 bucket BUCKETNAME'
+ c.description = 'create an s3 bucket to use for website hosting'
+
+ Datapimp::Cli.accepts_keys_for(c, :amazon)
+
+ c.action do |args, options|
+ raise 'Must specify bucket name' unless args.first
+ Datapimp::Sync::S3Bucket.new(remote: args.first).run_create_action()
+ end
+end
+
+command 'create cloudfront distribution' do |c|
+ c.syntax = "datapimp create cloudfront distribution"
+ c.description = "create a cloudfront distribution to link to a specific bucket"
+
+ Datapimp::Cli.accepts_keys_for(c, :amazon)
+
+ c.option '--bucket NAME', String, 'The name of the bucket that will provide the content'
+ c.option '--domains DOMAINS', Array, 'What domains will be pointing to this bucket?'
+
+ c.action do |args, options|
+ bucket = Datapimp::Sync::S3Bucket.new(remote: options.bucket)
+
+ cdn_options = {
+ enabled: true,
+ custom_origin: {
+ 'DNSName'=> bucket.website_hostname,
+ 'OriginProtocolPolicy'=>'http-only'
+ },
+ comment: options.bucket,
+ caller_reference: Time.now.to_i.to_s,
+ cname: Array(options.domains).join(","),
+ default_root_object: 'index.html'
+ }
+
+ distributions = Datapimp::Sync.amazon.cdn.distributions
+
+ distribution = distributions.find {|d| d.comment == options.bucket }
+
+ if !distribution
+ distribution = Datapimp::Sync.amazon.cdn.distributions.create(cdn_options)
+ end
+
+ log "Cloudfront distribution created: #{ distribution.domain } status: #{ distribution.status }"
+ end
+end