datapimp 1.0.5 → 1.0.6
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/.gitignore +1 -0
- data/datapimp.gemspec +2 -1
- data/lib/datapimp/cli/run.rb +12 -0
- data/lib/datapimp/sync/dropbox_folder.rb +40 -6
- data/lib/datapimp/version.rb +1 -1
- metadata +20 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0a7816f33ece7bc79ca55d86e01ffafb666ae1a
|
4
|
+
data.tar.gz: 2a56cb9f675a9f5ea532f163cdf841a3a9e612a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 398f2a75829491e5ff4823eb5fc1acc98cbdb94d87c481845b431bb8533afc62946819fdccdc83ff2e9be4372ce4af11eab29f0fda466fd0553113ffc669e57f
|
7
|
+
data.tar.gz: de27174ba144c621e18eccf32993beae4f9dce4857d0014413fbfcd572b35d6764d116356c10db740998aba7c4c5ae57ce8957cec0e7bb69b2203cedf112147a
|
data/.gitignore
CHANGED
data/datapimp.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_dependency 'hashie', '~> 2.0.5'
|
22
22
|
spec.add_dependency 'commander', '~> 4.3'
|
23
23
|
spec.add_dependency 'fog-aws', '~> 0.1'
|
24
|
-
spec.add_dependency 'dropbox-api', '0.4.5'
|
24
|
+
spec.add_dependency 'dropbox-api', '> 0.4.5'
|
25
25
|
spec.add_dependency 'google_drive', '~> 1.0'
|
26
26
|
spec.add_dependency 'google-api-client', '~> 0.7'
|
27
27
|
spec.add_dependency 'rack-contrib', '~> 1.2'
|
@@ -34,6 +34,7 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.add_dependency 'octokit', '~> 3.0'
|
35
35
|
spec.add_dependency 'activesupport', '~> 4.0'
|
36
36
|
spec.add_dependency 'github-fs', '~> 0'
|
37
|
+
spec.add_dependency 'colored', '> 0.0'
|
37
38
|
|
38
39
|
# these are locked to specific versions so that
|
39
40
|
# we can use the native extensions for traveling ruby
|
@@ -1,21 +1,25 @@
|
|
1
1
|
module Datapimp
|
2
2
|
class Sync::DropboxFolder < Hashie::Mash
|
3
|
+
# Provides easy access to the Dropbox client
|
3
4
|
def dropbox
|
4
5
|
@dropbox ||= Datapimp::Sync.dropbox
|
5
6
|
end
|
6
7
|
|
8
|
+
# Provides access to the Dropbox API Delta which will tell us
|
9
|
+
# how to modify the state of `local_path` to match what exists
|
10
|
+
# on Dropbox.
|
7
11
|
def delta
|
8
12
|
@delta ||= dropbox.delta(cursor, remote_path)
|
9
13
|
end
|
10
14
|
|
15
|
+
# A Pointer to the local path we will be syncing with the Dropbox remote
|
11
16
|
def local_path
|
12
17
|
Pathname(local)
|
13
18
|
end
|
14
19
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
20
|
+
# The Dropbox Delta API uses a cursor to keep track of the last state
|
21
|
+
# the local filesystem has synced with. We store this in the syncable folder
|
22
|
+
# itself
|
19
23
|
def cursor
|
20
24
|
cursor_path.exist? && cursor_path.read
|
21
25
|
end
|
@@ -24,14 +28,44 @@ module Datapimp
|
|
24
28
|
local_path.join('.dropbox-cursor')
|
25
29
|
end
|
26
30
|
|
27
|
-
def
|
31
|
+
def remote_path
|
32
|
+
dropbox.ls(remote)
|
33
|
+
rescue(Dropbox::API::Error::NotFound)
|
34
|
+
nil
|
35
|
+
end
|
36
|
+
|
37
|
+
def remote_path_parent
|
38
|
+
parent, _ = File.split(remote)
|
39
|
+
dropbox.ls(parent)
|
40
|
+
rescue(Dropbox::API::Error::NotFound)
|
41
|
+
nil
|
42
|
+
end
|
43
|
+
|
44
|
+
def remote_path_missing?
|
45
|
+
remote_path.nil?
|
46
|
+
end
|
47
|
+
|
48
|
+
def run(action, options={})
|
28
49
|
action = action.to_sym
|
29
50
|
|
30
51
|
if action == :push
|
52
|
+
if remote_path_missing?
|
53
|
+
dropbox.mkdir(remote)
|
54
|
+
end
|
31
55
|
|
32
|
-
|
56
|
+
Dir[local_path.join("**/*")].each do |f|
|
57
|
+
# Upload the file
|
58
|
+
binding.pry
|
59
|
+
end
|
33
60
|
|
61
|
+
elsif action == :pull
|
62
|
+
# TODO
|
63
|
+
# Implement the Delta call
|
34
64
|
end
|
35
65
|
end
|
66
|
+
|
67
|
+
def ensure_remote_folder_exists
|
68
|
+
end
|
36
69
|
end
|
37
70
|
end
|
71
|
+
|
data/lib/datapimp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Soeder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -70,14 +70,14 @@ dependencies:
|
|
70
70
|
name: dropbox-api
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 0.4.5
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.4.5
|
83
83
|
- !ruby/object:Gem::Dependency
|
@@ -248,6 +248,20 @@ dependencies:
|
|
248
248
|
- - "~>"
|
249
249
|
- !ruby/object:Gem::Version
|
250
250
|
version: '0'
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: colored
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - ">"
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: '0.0'
|
258
|
+
type: :runtime
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - ">"
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: '0.0'
|
251
265
|
- !ruby/object:Gem::Dependency
|
252
266
|
name: nokogiri
|
253
267
|
requirement: !ruby/object:Gem::Requirement
|
@@ -356,6 +370,7 @@ files:
|
|
356
370
|
- lib/datapimp/cli/config.rb
|
357
371
|
- lib/datapimp/cli/create.rb
|
358
372
|
- lib/datapimp/cli/list.rb
|
373
|
+
- lib/datapimp/cli/run.rb
|
359
374
|
- lib/datapimp/cli/setup.rb
|
360
375
|
- lib/datapimp/cli/support/data_sync.rb
|
361
376
|
- lib/datapimp/cli/sync.rb
|
@@ -411,7 +426,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
411
426
|
version: '0'
|
412
427
|
requirements: []
|
413
428
|
rubyforge_project:
|
414
|
-
rubygems_version: 2.
|
429
|
+
rubygems_version: 2.4.5
|
415
430
|
signing_key:
|
416
431
|
specification_version: 4
|
417
432
|
summary: A collection of API development patterns that I have accumulated in my career
|