datapimp 1.0.5 → 1.0.6

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: 4d7e2b49635e76cb47589374bf1909bb93e0a3a2
4
- data.tar.gz: ba5f1eb21d0e9755c801cc6ffde1f57224b1b5f0
3
+ metadata.gz: f0a7816f33ece7bc79ca55d86e01ffafb666ae1a
4
+ data.tar.gz: 2a56cb9f675a9f5ea532f163cdf841a3a9e612a8
5
5
  SHA512:
6
- metadata.gz: 67e296e6b402025e9fa06ababedd0cbc6e5ac9ad04696ef3e0b01d57cb682afcf1ae84b117ecf48bf77fa7b2c1bad9eda4eb984fab5815ade44f8d36fc9b8362
7
- data.tar.gz: 7f38981c5eda4cad1968de659483875b878c9f04a2aab9391eeb1298e172932c0261b31f93de2bb044eef49729b21916db391a0b941ee177cdca827ad7752ef9
6
+ metadata.gz: 398f2a75829491e5ff4823eb5fc1acc98cbdb94d87c481845b431bb8533afc62946819fdccdc83ff2e9be4372ce4af11eab29f0fda466fd0553113ffc669e57f
7
+ data.tar.gz: de27174ba144c621e18eccf32993beae4f9dce4857d0014413fbfcd572b35d6764d116356c10db740998aba7c4c5ae57ce8957cec0e7bb69b2203cedf112147a
data/.gitignore CHANGED
@@ -19,3 +19,4 @@ tmp
19
19
  dev-branch/
20
20
  distro/
21
21
  datapimp.json
22
+ .ruby-version
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
@@ -0,0 +1,12 @@
1
+ command "run" do |c|
2
+ c.syntax = "datapimp run FILE"
3
+ c.description = "runs a script in the context of the datapimp config"
4
+
5
+ c.action do |args, options|
6
+ args.each do |arg|
7
+ code += Pathname(arg).read
8
+ end
9
+
10
+ eval(code)
11
+ end
12
+ end
@@ -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
- def remote_path
16
- Datapimp::Sync.dropbox.ls(remote)
17
- end
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 run(action)
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
- elsif action == :pull
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
+
@@ -1,3 +1,3 @@
1
1
  module Datapimp
2
- VERSION = "1.0.5"
2
+ VERSION = "1.0.6"
3
3
  end
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.5
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-01 00:00:00.000000000 Z
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.2.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