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