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 +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
|