datapimp 1.0.9 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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