datapimp 1.0.9 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 79993874a9421dff20a6cd8ebcb5a2240fe0ff54
4
- data.tar.gz: 997c9057ec210a512440b8b744b7f1817c5cc80b
3
+ metadata.gz: 8450023c69c542a3cc5d8bb3284eb30a3c371065
4
+ data.tar.gz: 0e5c349b02973ff2c14d38ed6c9412228bd7f533
5
5
  SHA512:
6
- metadata.gz: d01cbe4441e8b98ba4163dc13d930d8edca6a40156f62ae1c340d17fea74540c2f89a4973c0bc85247ff4facaf252d2bca8a926a5dedbd4322ce01c79b7a6888
7
- data.tar.gz: e9b507cc01eb04d3c76d216dcc5d1c7c112655f7de80b6922b3da34af01530628fb5b170d5b1b2098f9ec4423ef8d7c5f30e0ec089684c038c0ae32e4a2837d8
6
+ metadata.gz: 64cb820bf348bc5700f1681ac9eb72041c6d8cbb803bd7fcc7819c73bf3828b2431680184cc414e217cff6e1722a0c5337b5b1d708ff4b3bd5d8e28917f00642
7
+ data.tar.gz: 26016c6f68c370a5c8ccc160191688bfa4d1b4219ee2698233b782cc61ac2613642a0df5414057de6232269a10bf829a5b47edbdb96e36d3eacedc7825dbb4db
data/datapimp.gemspec CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.add_dependency 'pry', '~> 0.10'
21
21
  spec.add_dependency 'hashie', '~> 2.0.5'
22
22
  spec.add_dependency 'commander', '~> 4.3'
23
+ spec.add_dependency 'terminal-table'
23
24
  spec.add_dependency 'fog-aws', '~> 0.1'
24
25
  spec.add_dependency 'dropbox-api', '> 0.4.5'
25
26
  spec.add_dependency 'google_drive', '~> 1.0'
@@ -4,9 +4,12 @@ command 'create s3 bucket' do |c|
4
4
 
5
5
  Datapimp::Cli.accepts_keys_for(c, :amazon)
6
6
 
7
+ c.option '--setup-website', 'Setup the bucket for website hosting'
8
+ c.option '--create-redirect-bucket', 'Setup a redirect bucket'
9
+
7
10
  c.action do |args, options|
8
11
  raise 'Must specify bucket name' unless args.first
9
- Datapimp::Sync::S3Bucket.new(remote: args.first).run_create_action()
12
+ Datapimp::Sync::S3Bucket.new(remote: args.first, redirect: !!(options.create_redirect_bucket), setup_website: !!(options.setup_website)).run_create_action()
10
13
  end
11
14
  end
12
15
 
@@ -0,0 +1,24 @@
1
+ command 'view amazon setup' do |c|
2
+ c.syntax = 'datapimp view amazon setup'
3
+ c.description = 'view the amazon (s3 + cloudfront) setup'
4
+
5
+ Datapimp::Cli.accepts_keys_for(c, :amazon)
6
+
7
+ c.action do |args, options|
8
+ bucket = Datapimp::Sync::S3Bucket.new(remote: args.first)
9
+ cloudfront = bucket.cloudfront
10
+ require 'terminal-table'
11
+
12
+ rows = []
13
+ rows << ["Bucket Name", bucket.remote]
14
+ rows << ["Website Hostname", bucket.website_hostname]
15
+ rows << ["Website URL", bucket.website_url]
16
+ rows << ["Cloudfront Hostname", cloudfront.domain]
17
+
18
+ table = Terminal::Table.new :rows => rows, :headings => %w(Setting Value)
19
+
20
+ puts table
21
+ end
22
+ end
23
+
24
+
@@ -0,0 +1,23 @@
1
+ module Datapimp
2
+ module Sync
3
+ class CloudfrontDistribution
4
+ include Datapimp::Logging
5
+
6
+ attr_accessor :bucket
7
+
8
+ def initialize(options={})
9
+ @bucket = options.fetch(:bucket)
10
+ end
11
+
12
+ def cloudfront
13
+ @cloudfront ||= Datapimp::Sync.amazon.cdn.distributions.detect do |dist|
14
+ dist.comment == bucket
15
+ end
16
+ end
17
+
18
+ def method_missing(meth, *args, &block)
19
+ cloudfront.send(meth, *args, &block)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -5,7 +5,25 @@ module Datapimp
5
5
 
6
6
  # returns the s3 bucket via fog
7
7
  def s3
8
- @s3 ||= Datapimp::Sync.amazon.storage.directories.get(remote)
8
+ @s3 ||= storage.directories.get(remote).tap do |bucket|
9
+ if setup_website == true
10
+ bucket.public = true
11
+ bucket.save
12
+ storage.put_bucket_website(remote, 'index.html', key: 'error.html')
13
+ end
14
+
15
+ if redirect == true
16
+ binding.pry
17
+ end
18
+ end
19
+ end
20
+
21
+ def cloudfront
22
+ @cloudfront ||= Datapimp::Sync::CloudfrontDistribution.new(bucket: remote)
23
+ end
24
+
25
+ def storage
26
+ Datapimp::Sync.amazon.storage
9
27
  end
10
28
 
11
29
  def website_hostname
@@ -114,11 +132,15 @@ module Datapimp
114
132
  def run_create_action(options={})
115
133
  directories = Datapimp::Sync.amazon.storage.directories
116
134
 
117
- if existing = directories.get(remote)
118
- return existing
135
+ bucket = if existing = directories.get(remote)
136
+ existing
119
137
  else
120
- directories.create(key:remote)
138
+ directories.create(key:remote, public: true)
121
139
  end
140
+
141
+ storage.put_bucket_website(remote, :IndexDocument => 'index.html', :ErrorDocument => 'error.html')
142
+
143
+ bucket
122
144
  end
123
145
 
124
146
  def run(action, options={})
@@ -1,3 +1,3 @@
1
1
  module Datapimp
2
- VERSION = "1.0.9"
2
+ VERSION = "1.0.10"
3
3
  end
data/lib/datapimp.rb CHANGED
@@ -36,3 +36,4 @@ require 'datapimp/sync'
36
36
  require 'datapimp/sync/dropbox_folder'
37
37
  require 'datapimp/sync/google_drive_folder'
38
38
  require 'datapimp/sync/s3_bucket'
39
+ require 'datapimp/sync/cloudfront_distribution'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datapimp
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Soeder
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '4.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: terminal-table
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: fog-aws
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -374,6 +388,7 @@ files:
374
388
  - lib/datapimp/cli/setup.rb
375
389
  - lib/datapimp/cli/support/data_sync.rb
376
390
  - lib/datapimp/cli/sync.rb
391
+ - lib/datapimp/cli/view.rb
377
392
  - lib/datapimp/clients/amazon.rb
378
393
  - lib/datapimp/clients/dropbox.rb
379
394
  - lib/datapimp/clients/github.rb
@@ -389,6 +404,7 @@ files:
389
404
  - lib/datapimp/sources/json.rb
390
405
  - lib/datapimp/sources/nokogiri.rb
391
406
  - lib/datapimp/sync.rb
407
+ - lib/datapimp/sync/cloudfront_distribution.rb
392
408
  - lib/datapimp/sync/dropbox_delta.rb
393
409
  - lib/datapimp/sync/dropbox_folder.rb
394
410
  - lib/datapimp/sync/google_drive_folder.rb