synkronos 1.0.0 → 1.1.1

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