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 +4 -4
- data/datapimp.gemspec +1 -0
- data/lib/datapimp/cli/create.rb +4 -1
- data/lib/datapimp/cli/view.rb +24 -0
- data/lib/datapimp/sync/cloudfront_distribution.rb +23 -0
- data/lib/datapimp/sync/s3_bucket.rb +26 -4
- data/lib/datapimp/version.rb +1 -1
- data/lib/datapimp.rb +1 -0
- metadata +17 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8450023c69c542a3cc5d8bb3284eb30a3c371065
|
4
|
+
data.tar.gz: 0e5c349b02973ff2c14d38ed6c9412228bd7f533
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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'
|
data/lib/datapimp/cli/create.rb
CHANGED
@@ -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 ||=
|
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
|
-
|
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={})
|
data/lib/datapimp/version.rb
CHANGED
data/lib/datapimp.rb
CHANGED
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.
|
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
|