synkronos 1.0.0 → 1.1.1

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: 20e981713f42cdfdf277235f2db57173791b8ff3
4
- data.tar.gz: 6a41c3ef69fd0f3197a1ae5418f32c2ba2ce0279
3
+ metadata.gz: f88380317e1c6c0230bfbfd441f5d7f7ab791dd4
4
+ data.tar.gz: ea771fe593f8ac7cb1f5e3745f5f72a40586373c
5
5
  SHA512:
6
- metadata.gz: cc578f28d0b0072b106b3b0c61af58f2455a8cc999e8370827f62a0a1dc4e6049e2b94a0a94e8447521114cc94c32bd6dfdfb15988df3b96247cb14559685a50
7
- data.tar.gz: 98fef1195d48cd6ed9957a520db7c4ecfbb409ca99f522ac7b0fb02f093232d2ca55148555b465ade72147ec3e0eab4206edf49d94c5002d3a4a18c3016800ba
6
+ metadata.gz: 12834d5d256c13cad342aefb51ba57b230a4de8b7fa41f433e283b75f517645b8a8faab30832fc0d872d1c499c345f0b464a18ee254821faae5fa8605bd94403
7
+ data.tar.gz: a96a6487af1d14bc96040baf6cc5602424f9d99396648a11a603d9c371338347836e0118ad2f7efc6a633c51c42918864916703546cc00f3d71b90653a7de933
data/.gitignore CHANGED
@@ -12,3 +12,4 @@
12
12
  *.o
13
13
  *.a
14
14
  mkmf.log
15
+ .DS_Store
data/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  # Synkronos
2
2
  [![Version ](https://img.shields.io/gem/v/synkronos.svg?style=flat)](https://rubygems.org/gems/synkronos)
3
- [![Build Status](https://img.shields.io/travis/akhramov/synkronos/master.svg?style=flat)](https://travis-ci.org/akhramov/synkronos.svg)
3
+ [![Build Status](https://img.shields.io/travis/akhramov/synkronos/master.svg?style=flat)](https://travis-ci.org/akhramov/synkronos)
4
4
 
5
5
  Synkronos is a life-time folder synchronization tool.
6
- It's based on rsync and works only under MacOSX yet.
6
+ It's based on rsync and works only under MacOSX and Linux platforms yet.
7
7
 
8
8
  ## Installation
9
9
  ___
@@ -36,5 +36,6 @@ ___
36
36
 
37
37
  $ synkronos --ssh --src /path/to/src --dest user@host:/path/to/dest
38
38
 
39
- * Tracking changes in remote directory using ssh
39
+ * Tracking changes in remote directory using ssh:
40
+
40
41
  $ synkronos --ssh --src user@host:/path/to/src --dest /path/to/dest
data/ext/mkrf_conf.rb ADDED
@@ -0,0 +1,21 @@
1
+ require 'rubygems/command.rb'
2
+ require 'rubygems/dependency_installer.rb'
3
+ begin
4
+ Gem::Command.build_args = ARGV
5
+ rescue NoMethodError
6
+ end
7
+ inst = Gem::DependencyInstaller.new
8
+ begin
9
+ case RUBY_PLATFORM
10
+ when /darwin/
11
+ darwin_gem = ['rb-fsevent', '>= 0.9.4']
12
+ inst.install(*darwin_gem) unless Gem::Specification::find_all_by_name(*darwin_gem).any?
13
+ when /linux/
14
+ linux_gem = ['rb-inotify', '>= 0.9.5']
15
+ inst.install(*linux_gem) unless Gem::Specification::find_all_by_name(*linux_gem).any?
16
+ end
17
+ end
18
+
19
+ f = File.open(File.join(File.dirname(__FILE__), "Rakefile"), "w") # create dummy rakefile to indicate success
20
+ f.write("task :default\n")
21
+ f.close
data/lib/synkronos.rb CHANGED
@@ -1,7 +1,7 @@
1
- require "synkronos/version"
2
- require 'synkronos/options'
3
- require 'synkronos/rsync/rsync'
4
- require 'rb-fsevent'
1
+ require_relative "synkronos/version"
2
+ require_relative 'synkronos/options'
3
+ require_relative 'synkronos/rsync/rsync'
4
+ require_relative 'synkronos/platform_specific/platform_specific'
5
5
 
6
6
  module Synkronos
7
7
  def self.run(args)
@@ -9,10 +9,10 @@ module Synkronos
9
9
  rsync_args = [opts[:src], opts[:dest], opts[:ssh], opts[:port]]
10
10
  Rsync.sync(*rsync_args)
11
11
 
12
- fsevent = FSEvent.new
13
- fsevent.watch(opts[:src], {latency: 1}) do
12
+ event = Synk.new
13
+ event.eye(opts[:src]) do
14
14
  Rsync.sync(*rsync_args)
15
15
  end
16
- fsevent.run
16
+ event.run
17
17
  end
18
18
  end
@@ -33,7 +33,6 @@ module Synkronos
33
33
 
34
34
  opt_parser.parse!(args)
35
35
  abort "You must provide source and destination path" unless options[:src] or options[:dest]
36
- options[:src] += '/' unless options[:src].end_with?('/')
37
36
  options
38
37
  end
39
38
  end
@@ -0,0 +1,8 @@
1
+ Synk = case RUBY_PLATFORM
2
+ when /darwin/
3
+ require_relative('platforms/darwin')
4
+ FSEvent
5
+ when /linux/
6
+ require_relative('platforms/linux')
7
+ INotify::Notifier
8
+ end
@@ -0,0 +1,6 @@
1
+ require 'rb-fsevent'
2
+ class FSEvent
3
+ def eye(src, &block)
4
+ watch(src, {latency: 1}, &block)
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require 'rb-inotify'
2
+ class INotify::Notifier
3
+ def eye(src, &block)
4
+ watch(src, :all_events, :recursive, &block)
5
+ end
6
+ end
@@ -8,6 +8,7 @@ module Synkronos
8
8
  #
9
9
  class Rsync
10
10
  def self.sync(src, dest, ssh = false, port = 22)
11
+ src += '/' unless src.end_with?('/')
11
12
  cmd = "rsync -a --delete #{ssh ? "-e 'ssh -p #{port}'" : nil} #{src} #{dest}"
12
13
  Open3.popen3(cmd) do |_, _, stderr, wait_thr|
13
14
  abort(stderr.read) unless wait_thr.value.success?
@@ -1,3 +1,3 @@
1
1
  module Synkronos
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.1"
3
3
  end
@@ -3,7 +3,6 @@ require 'spec_helper'
3
3
  shared_examples 'file synchronizator' do |actions|
4
4
  it 'moves a file from src to dest' do
5
5
  expect(File).not_to exist("#{dest}/file")
6
-
7
6
  actions.call(src, dest)
8
7
  expect(File).to exist("#{dest}/file")
9
8
  expect(File.read("#{dest}/file")).to include('Under the spreading chestnut tree')
data/synkronos.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.summary = %q{Synchronize your folders with synkronos }
12
12
  spec.description = <<-EOS
13
13
  Synkronos is a life-time folder synchronization tool.
14
- It's based on rsync and works only under MacOSX yet.
14
+ It's based on rsync and works only under MacOSX and Linux yet.
15
15
  EOS
16
16
 
17
17
  spec.homepage = "https://github.com/akhramov/synkronos"
@@ -24,11 +24,10 @@ Gem::Specification.new do |spec|
24
24
  spec.bindir = 'bin'
25
25
  spec.executables << 'synkronos'
26
26
 
27
- spec.add_development_dependency "bundler", "~> 1.6"
28
- spec.add_development_dependency "rake", "~> 10.0"
29
- spec.add_development_dependency 'rspec', '~> 3.0.0'
30
-
31
- spec.add_dependency 'rb-fsevent', '~> 0.9.4'
27
+ spec.add_development_dependency "bundler", '~> 1.6', ">= 1.6"
28
+ spec.add_development_dependency "rake", '~> 10.0', '>= 10.0'
29
+ spec.add_development_dependency 'rspec', '~> 3.0.0', '>= 3.0.0'
32
30
 
33
31
  spec.required_ruby_version = '>= 1.8.6'
32
+ spec.extensions = 'ext/mkrf_conf.rb'
34
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: synkronos
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artyom Khramov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-18 00:00:00.000000000 Z
11
+ date: 2014-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.6'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: '1.6'
20
23
  type: :development
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,9 @@ dependencies:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.6'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '1.6'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: rake
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -31,6 +37,9 @@ dependencies:
31
37
  - - "~>"
32
38
  - !ruby/object:Gem::Version
33
39
  version: '10.0'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '10.0'
34
43
  type: :development
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -38,6 +47,9 @@ dependencies:
38
47
  - - "~>"
39
48
  - !ruby/object:Gem::Version
40
49
  version: '10.0'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '10.0'
41
53
  - !ruby/object:Gem::Dependency
42
54
  name: rspec
43
55
  requirement: !ruby/object:Gem::Requirement
@@ -45,6 +57,9 @@ dependencies:
45
57
  - - "~>"
46
58
  - !ruby/object:Gem::Version
47
59
  version: 3.0.0
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 3.0.0
48
63
  type: :development
49
64
  prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -52,27 +67,17 @@ dependencies:
52
67
  - - "~>"
53
68
  - !ruby/object:Gem::Version
54
69
  version: 3.0.0
55
- - !ruby/object:Gem::Dependency
56
- name: rb-fsevent
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 0.9.4
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
70
+ - - ">="
67
71
  - !ruby/object:Gem::Version
68
- version: 0.9.4
72
+ version: 3.0.0
69
73
  description: " Synkronos is a life-time folder synchronization tool. \n It's
70
- based on rsync and works only under MacOSX yet.\n"
74
+ based on rsync and works only under MacOSX and Linux yet.\n"
71
75
  email:
72
76
  - futu.fata@gmail.com
73
77
  executables:
74
78
  - synkronos
75
- extensions: []
79
+ extensions:
80
+ - ext/mkrf_conf.rb
76
81
  extra_rdoc_files: []
77
82
  files:
78
83
  - ".gitignore"
@@ -82,8 +87,12 @@ files:
82
87
  - README.md
83
88
  - Rakefile
84
89
  - bin/synkronos
90
+ - ext/mkrf_conf.rb
85
91
  - lib/synkronos.rb
86
92
  - lib/synkronos/options.rb
93
+ - lib/synkronos/platform_specific/platform_specific.rb
94
+ - lib/synkronos/platform_specific/platforms/darwin.rb
95
+ - lib/synkronos/platform_specific/platforms/linux.rb
87
96
  - lib/synkronos/rsync/rsync.rb
88
97
  - lib/synkronos/version.rb
89
98
  - spec/rsync/rsync_spec.rb