guard-autoupload 0.3.6 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2a76d209ee938526ce9381c587699b936fd4e29f
4
+ data.tar.gz: ac65618097d9d518ba890d75b879146cd1f430aa
5
+ SHA512:
6
+ metadata.gz: 390b6e1683a9dc0ee7b3e5bfa1530d59b7d16e24174d28b658012f8e824bc9a95910637934ab8b1f40f3ed1188602903152a15652da2f7f6a2d9f984c6f1fcac
7
+ data.tar.gz: e6ac7b7886cc8285a7e09fa475a6b17c9f0762e9cd36af8b8a930f9a5f10f334bc338b6c432544665ed45923abc11dbc4ff2e63ff4a3d972dbec6026e6bc23a1
data/.gitignore CHANGED
@@ -58,7 +58,6 @@ local.properties
58
58
  *.tlb
59
59
  *.tli
60
60
  *.tlh
61
- *.tmp
62
61
  *.vspscc
63
62
  .builds
64
63
  *.dotCover
@@ -164,3 +163,4 @@ pip-log.txt
164
163
 
165
164
  # Ignore built gems
166
165
  *.gem
166
+ /.idea/
data/Gemfile CHANGED
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ gem 'rake'
6
+
7
+ require 'rbconfig'
8
+ gem 'wdm', '>= 0.1.0' if RbConfig::CONFIG['target_os'] =~ /mswin|mingw|cygwin/i
9
+
10
+ group :development do
11
+ gem 'guard'
12
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,65 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ guard-autoupload (0.4.1)
5
+ guard (~> 2.6)
6
+ net-sftp (~> 2.1)
7
+ net-ssh-simple (~> 1.6)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ blockenspiel (0.4.5)
13
+ celluloid (0.15.2)
14
+ timers (~> 1.1.0)
15
+ celluloid-io (0.15.0)
16
+ celluloid (>= 0.15.0)
17
+ nio4r (>= 0.5.0)
18
+ coderay (1.1.0)
19
+ ffi (1.9.3)
20
+ formatador (0.2.4)
21
+ guard (2.6.0)
22
+ formatador (>= 0.2.4)
23
+ listen (~> 2.7)
24
+ lumberjack (~> 1.0)
25
+ pry (>= 0.9.12)
26
+ thor (>= 0.18.1)
27
+ hashie (2.1.1)
28
+ listen (2.7.2)
29
+ celluloid (>= 0.15.2)
30
+ celluloid-io (>= 0.15.0)
31
+ rb-fsevent (>= 0.9.3)
32
+ rb-inotify (>= 0.9)
33
+ lumberjack (1.0.5)
34
+ method_source (0.8.2)
35
+ net-scp (1.1.2)
36
+ net-ssh (>= 2.6.5)
37
+ net-sftp (2.1.2)
38
+ net-ssh (>= 2.6.5)
39
+ net-ssh (2.8.0)
40
+ net-ssh-simple (1.6.5)
41
+ blockenspiel (~> 0.4.3)
42
+ hashie (>= 1.1.0)
43
+ net-scp (~> 1.1.0)
44
+ net-ssh (~> 2.8.0)
45
+ nio4r (1.0.0)
46
+ pry (0.9.12.6)
47
+ coderay (~> 1.0)
48
+ method_source (~> 0.8)
49
+ slop (~> 3.4)
50
+ rake (10.3.1)
51
+ rb-fsevent (0.9.4)
52
+ rb-inotify (0.9.3)
53
+ ffi (>= 0.5.0)
54
+ slop (3.5.0)
55
+ thor (0.19.1)
56
+ timers (1.1.0)
57
+
58
+ PLATFORMS
59
+ ruby
60
+
61
+ DEPENDENCIES
62
+ bundler (~> 1.5)
63
+ guard
64
+ guard-autoupload!
65
+ rake
data/Guardfile ADDED
@@ -0,0 +1,23 @@
1
+ # Configuartion Options for guard-autoupload
2
+
3
+ opts = {
4
+ :protocol => :scp, # Protocol used to connect to remote host.
5
+ # Possible values are :scp, :sftp and :ftp.
6
+ # Of these :scp is the preferred one for
7
+ # its stability.
8
+ :host => "localhost",
9
+ # :port => 22, # Uncomment this if you need to set port to
10
+ # something else than default.
11
+ :user => "jyrkililja",
12
+ :remote => "/Users/jyrkililja/projects/guard-development/test/",
13
+ :verbose => true, # if true you get all outputs
14
+ :quiet => false # if true outputs only on exceptions.
15
+ }
16
+
17
+ guard :autoupload, opts do
18
+ watch(/^./)
19
+ ignore [%r{^.idea},
20
+ %r{^Guardfile}, #ignore the root guardfile
21
+ %r{__jb_old__}, %r{__jb_bak__} # ruby idea ingores
22
+ ]
23
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Jyrki Lilja
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,11 +1,23 @@
1
- guard-autoupload
2
- ================
1
+ # guard-autoupload
3
2
 
4
3
  Autoupload plugin used for uploading all local changes to remote host.
5
4
  Uses either SFTP or FTP.
6
5
 
7
- Usage
8
- -----
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ gem 'guard-autoupload'
11
+
12
+ And then execute:
13
+
14
+ $ bundle
15
+
16
+ Or install it yourself as:
17
+
18
+ $ gem install guard-autoupload
19
+
20
+ ## Usage
9
21
 
10
22
  Sample guardfile:
11
23
 
@@ -30,22 +42,15 @@ Sample guardfile:
30
42
  # accidentally upload the credentials.
31
43
  end
32
44
 
33
- Dependencies
34
- ------------
35
-
36
- - guard
37
- - Net::SFTP
38
- - Net::SSH::Simple
39
-
40
- Installation
41
- ------------
42
-
43
- Finally the gem has been uploaded to rubygems. Install it with
45
+ ## Contributing
44
46
 
45
- gem install guard-autoupload
47
+ 1. Fork it ( https://github.com/jyrkij/guard-autoupload/fork )
48
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
49
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
50
+ 4. Push to the branch (`git push origin my-new-feature`)
51
+ 5. Create new Pull Request
46
52
 
47
- Author
48
- ------
53
+ ## Author
49
54
 
50
55
  This guard plugin was written by Jyrki Lilja and is used at FocusFlow.
51
56
  The code is hevily based on [vincenthu's guard-flopbox][gsftp] and
data/Rakefile CHANGED
@@ -1,2 +1 @@
1
- require 'bundler'
2
- Bundler::GemHelper.install_tasks
1
+ require "bundler/gem_tasks"
@@ -1,23 +1,27 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'guard/autoupload/version'
3
5
 
4
- Gem::Specification.new do |s|
5
- s.name = "guard-autoupload"
6
- s.version = "0.3.6"
7
- s.authors = ["Jyrki Lilja"]
8
- s.email = ["jyrki dot lilja at outlook dot com"]
9
- s.homepage = "https://github.com/jyrkij/guard-autosync"
10
- s.summary = %q{Autoupload plugin - uploads local changes to remote host.}
11
- s.description = %q{Uses either SFTP or FTP.}
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "guard-autoupload"
8
+ spec.version = Guard::AutouploadVersion::VERSION
9
+ spec.authors = ["Jyrki Lilja"]
10
+ spec.email = ["jyrki.lilja@focus.fi"]
11
+ spec.summary = %q{Autoupload plugin - uploads local changes to remote host.}
12
+ spec.description = %q{Uses either SFTP or FTP.}
13
+ spec.homepage = "https://github.com/jyrkij/guard-autosync"
14
+ spec.license = "MIT"
12
15
 
13
- s.rubyforge_project = "guard-autoupload"
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency 'guard', '~> 2.6'
22
+ spec.add_runtime_dependency 'net-sftp', '~> 2.1'
23
+ spec.add_runtime_dependency 'net-ssh-simple', '~> 1.6'
14
24
 
15
- s.files = `git ls-files`.split("\n")
16
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
- s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
18
- s.require_paths = ["lib"]
19
-
20
- s.add_dependency('guard')
21
- s.add_dependency('net-sftp')
22
- s.add_dependency('net-ssh-simple')
25
+ spec.add_development_dependency "bundler", "~> 1.5"
26
+ spec.add_development_dependency "rake", "~> 10.3"
23
27
  end
@@ -1,136 +1,141 @@
1
- $LOAD_PATH.unshift File.dirname(__FILE__)
2
-
3
1
  require 'guard'
4
- require 'guard/guard'
5
- require 'autoupload/scpsession.rb'
6
- require 'autoupload/sftpsession.rb'
7
- require 'autoupload/ftpsession.rb'
2
+ require 'guard/plugin'
3
+ require 'guard/autoupload/scpsession.rb'
4
+ require 'guard/autoupload/sftpsession.rb'
5
+ require 'guard/autoupload/ftpsession.rb'
6
+ require 'kconv'
8
7
 
9
8
  module Guard
10
- class Autoupload < Guard
11
- def initialize(watchers = [], options = {})
12
- super
13
-
14
- @instance = self
15
- if options[:protocol] == :scp
16
- @session = SCPSession.new(
17
- options[:host],
18
- options[:port] || 22,
19
- options[:user],
20
- options[:password],
21
- self
22
- )
23
- elsif options[:protocol] == :sftp
24
- @session = SFTPSession.new(
25
- options[:host],
26
- options[:port] || 22,
27
- options[:user],
28
- options[:password],
29
- @instance
30
- )
31
- elsif options[:protocol] == :ftp
32
- @session = FTPSession.new(
33
- options[:host],
34
- options[:port] || 21,
35
- options[:user],
36
- options[:password]
37
- )
38
- else
39
- throw :task_has_failed
40
- end
41
-
42
- @remote = options[:remote]
43
- @local = Dir.pwd
44
- @verbose = options[:verbose]
45
- @quiet = options[:quiet] unless verbose?
46
- output = options.dup
47
- output[:password] = options[:password].gsub(/./, '*') if options.include? :password
48
- log "Initialized with watchers #{watchers.inspect}" if verbose?
49
- log "Initialized with options #{output.inspect}" unless quiet?
50
- end
51
-
52
- def run_on_change(paths)
53
- paths.each do |path|
54
- local_file = File.join(@local, path)
55
- remote_file = File.join(@remote, path)
56
-
57
- attempts = 0
58
-
59
- begin
60
- log "Upload #{local_file} => #{remote_file}" if verbose?
61
- @session.upload!(local_file, remote_file)
62
- log "Uploaded #{path}" unless quiet?
63
- rescue => ex
64
- log "Exception on uploading #{path}\n#{ex.inspect}"
65
- log ex.backtrace.join("\n") if verbose?
66
- attempts += 1
67
- remote_dir = File.dirname(remote_file)
68
- recursively_create_dirs(remote_dir)
69
- retry if attempts < 3
70
- log "Exceeded 3 attempts to upload #{path}"
71
- throw :task_has_failed
72
- end
73
- end
74
-
75
- msg = "Uploaded:\n#{paths.join("\n")}"
76
- ::Guard::Notifier.notify msg, :title => "Uploaded"
77
- end
78
-
79
- def run_on_removals(paths)
80
- paths.each do |path|
81
- remote_file = File.join(@remote, path)
9
+ class Autoupload < Plugin
10
+ def initialize(options = {})
11
+ super
12
+
13
+ @instance = self
14
+ if options[:protocol] == :scp
15
+ @session = SCPSession.new(
16
+ options[:host],
17
+ options[:port] || 22,
18
+ options[:user],
19
+ options[:password],
20
+ self
21
+ )
22
+ elsif options[:protocol] == :sftp
23
+ @session = SFTPSession.new(
24
+ options[:host],
25
+ options[:port] || 22,
26
+ options[:user],
27
+ options[:password],
28
+ @instance
29
+ )
30
+ elsif options[:protocol] == :ftp
31
+ @session = FTPSession.new(
32
+ options[:host],
33
+ options[:port] || 21,
34
+ options[:user],
35
+ options[:password]
36
+ )
37
+ else
38
+ throw :task_has_failed
39
+ end
40
+
41
+ @remote = options[:remote]
42
+ @local = Dir.pwd
43
+ @local_subpath = options[:local] || ''
44
+ @verbose = options[:verbose]
45
+ @quiet = options[:quiet] unless verbose?
46
+ output = options.dup
47
+ output[:password] = options[:password].gsub(/./, '*') if options.include? :password
48
+
49
+ UI.info("Initialized with watchers #{watchers.inspect}") if verbose?
50
+ UI.info("Initialized with options #{output.inspect}") unless quiet?
51
+ end
82
52
 
83
- begin
84
- log "Delete #{remote_file}" if verbose?
85
- @session.remove!(remote_file)
86
- rescue => ex
87
- log "Exception on deleting #{path}\n#{ex.inspect}"
88
- log ex.backtrace.join("\n") if verbose?
89
- end
53
+ def run_on_change(paths)
54
+ paths.each do |path|
55
+ path = path.encode(Kconv::UTF8, Encoding::UTF8_MAC) if RUBY_PLATFORM.include? "darwin"
90
56
 
91
- log "Deleted #{path}" unless quiet?
92
- end
57
+ local_file = File.join(@local, path)
58
+ path.sub!(/^#{@local_subpath}/, '')
59
+ remote_file = File.join(@remote, path)
93
60
 
94
- msg = "Deleted:\n#{paths.join("\n")}"
95
- ::Guard::Notifier.notify msg, :title => "Deleted"
61
+ if(File.directory?(local_file))
62
+ next
96
63
  end
97
64
 
98
- def verbose?
99
- @verbose || false
65
+ attempts = 0
66
+
67
+ begin
68
+ UI.info("Upload #{local_file} => #{remote_file}") if verbose?
69
+ @session.upload!(local_file, remote_file)
70
+ UI.info("Uploaded #{path}") unless quiet?
71
+ rescue => ex
72
+ UI.error("Exception on uploading #{path}\n#{ex.inspect.toutf8}")
73
+ UI.error(ex.backtrace.join("\n")) if verbose?
74
+ attempts += 1
75
+ remote_dir = File.dirname(remote_file)
76
+ recursively_create_dirs(remote_dir)
77
+ retry if attempts < 3
78
+ UI.info("Exceeded 3 attempts to upload #{path}")
79
+ throw :task_has_failed
100
80
  end
81
+ end
101
82
 
102
- def quiet?
103
- @quiet || false
104
- end
83
+ msg = "Uploaded:\n#{paths.join("\n")}"
84
+ UI.info(msg)
85
+ ::Guard::Notifier.notify "uploaded", :title => "Uploaded"
86
+ end
105
87
 
106
- def log(message)
107
- puts "[#{Time.now}] #{message}"
88
+ def run_on_removals(paths)
89
+ paths.each do |path|
90
+ path.sub!(/^#{@local_subpath}/, '')
91
+ remote_file = File.join(@remote, path)
92
+
93
+ begin
94
+ UI.info("Delete #{remote_file}") if verbose?
95
+ @session.remove!(remote_file)
96
+ rescue => ex
97
+ UI.error("Exception on deleting #{path}\n#{ex.inspect.toutf8}")
98
+ UI.error(ex.backtrace.join("\n")) if verbose?
108
99
  end
100
+
101
+ UI.info("Deleted #{path}") unless quiet?
102
+ end
103
+
104
+ ::Guard::Notifier.notify "Deleted", :title => "Deleted"
105
+ end
109
106
 
110
- def stop
111
- log "Tearing down connections" unless quiet?
112
- if @session.is_a? SCPSession
113
- @session.close
114
- end
115
- end
107
+ def verbose?
108
+ @verbose || false
109
+ end
116
110
 
117
- private
111
+ def quiet?
112
+ @quiet || false
113
+ end
118
114
 
119
- def recursively_create_dirs(remote_dir)
120
- new_dir = @remote
121
- remote_dir.gsub(@remote, "").split("/").each do |dir|
122
- new_dir = File.join(new_dir, dir)
115
+ def stop
116
+ UI.info("Tearing down connections") unless quiet?
117
+ if @session.is_a? SCPSession
118
+ @session.close
119
+ end
120
+ end
121
+
122
+ private
123
123
 
124
- begin
125
- log "Creating #{new_dir}" if verbose?
126
- @session.mkdir!(new_dir)
127
- rescue => ex
128
- log "Cannot create directory #{new_dir}\n#{ex.inspect}"
129
- log ex.backtrace.join("\n") if verbose?
130
- end
131
- end
124
+ def recursively_create_dirs(remote_dir)
125
+ new_dir = @remote
126
+ remote_dir.gsub(@remote, "").split("/").each do |dir|
127
+ new_dir = File.join(new_dir, dir)
132
128
 
133
- log "Created directory #{remote_dir}" unless quiet?
129
+ begin
130
+ UI.info("Creating #{new_dir}") if verbose?
131
+ @session.mkdir!(new_dir)
132
+ rescue => ex
133
+ UI.info("Cannot create directory #{new_dir}\n#{ex.inspect.toutf8}")
134
+ UI.info(ex.backtrace.join("\n")) if verbose?
134
135
  end
136
+ end
137
+
138
+ UI.info("Created directory #{remote_dir}") unless quiet?
135
139
  end
140
+ end
136
141
  end
@@ -9,7 +9,7 @@ class FTPSession
9
9
  @user = user
10
10
  @password = password
11
11
  @last_timestamp = Time.new(0)
12
- @session.connect(@host)
12
+ @session.connect(@host, port)
13
13
  @session.login(@user, @password)
14
14
  end
15
15
 
@@ -12,7 +12,7 @@ class SCPSession
12
12
  end
13
13
 
14
14
  def ss
15
- Thread.current[:simplessh] ||= Net::SSH::Simple.new({:user => @user, :password => @password.clone})
15
+ Thread.current[:simplessh] ||= Net::SSH::Simple.new({:user => @user, :password => @password})
16
16
  end
17
17
 
18
18
  def upload!(local, remote)
@@ -2,21 +2,24 @@
2
2
 
3
3
  opts = {
4
4
  :protocol => :scp, # Protocol used to connect to remote host.
5
- # Possible values are :scp, :sftp and :ftp.
6
- # Of these :scp is the preferred one for
7
- # its stability.
5
+ # Possible values are :scp, :sftp and :ftp.
6
+ # Of these :scp is the preferred one for
7
+ # its stability.
8
8
  :host => "remote_host",
9
9
  # :port => 22, # Uncomment this if you need to set port to
10
- # something else than default.
10
+ # something else than default.
11
11
  :user => "username",
12
12
  :password => "password",
13
13
  :remote => "remote_path",
14
- :verbose => false, # if true you get all outputs
14
+ :verbose => true, # if true you get all outputs
15
15
  :quiet => false # if true outputs only on exceptions.
16
16
  }
17
17
 
18
18
  guard :autoupload, opts do
19
- watch(/^((?!Guardfile$).)*$/)
20
- # Matches every other file but Guardfile. This way we don't
21
- # accidentally upload the credentials.
19
+ watch(/^./)
20
+ ignore [%r{^.idea},
21
+ %r{^Guardfile}, #ignore the root guardfile
22
+ %r{__jb_old__}, %r{__jb_bak__} # ruby idea ingores
23
+ ]
22
24
  end
25
+
@@ -0,0 +1,5 @@
1
+ module Guard
2
+ module AutouploadVersion
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
metadata CHANGED
@@ -1,74 +1,98 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-autoupload
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jyrki Lilja
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-13 00:00:00.000000000 Z
11
+ date: 2014-04-28 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: guard
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
19
+ version: '2.6'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '0'
26
+ version: '2.6'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: net-sftp
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - "~>"
36
32
  - !ruby/object:Gem::Version
37
- version: '0'
33
+ version: '2.1'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - "~>"
44
39
  - !ruby/object:Gem::Version
45
- version: '0'
40
+ version: '2.1'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: net-ssh-simple
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - "~>"
52
46
  - !ruby/object:Gem::Version
53
- version: '0'
47
+ version: '1.6'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - "~>"
60
53
  - !ruby/object:Gem::Version
61
- version: '0'
54
+ version: '1.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.5'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.5'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.3'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.3'
62
83
  description: Uses either SFTP or FTP.
63
84
  email:
64
- - jyrki dot lilja at outlook dot com
85
+ - jyrki.lilja@focus.fi
65
86
  executables: []
66
87
  extensions: []
67
88
  extra_rdoc_files: []
68
89
  files:
69
- - .gitattributes
70
- - .gitignore
90
+ - ".gitattributes"
91
+ - ".gitignore"
71
92
  - Gemfile
93
+ - Gemfile.lock
94
+ - Guardfile
95
+ - LICENSE.txt
72
96
  - README.md
73
97
  - Rakefile
74
98
  - guard-autoupload.gemspec
@@ -77,28 +101,30 @@ files:
77
101
  - lib/guard/autoupload/scpsession.rb
78
102
  - lib/guard/autoupload/sftpsession.rb
79
103
  - lib/guard/autoupload/templates/Guardfile
104
+ - lib/guard/autoupload/version.rb
80
105
  homepage: https://github.com/jyrkij/guard-autosync
81
- licenses: []
106
+ licenses:
107
+ - MIT
108
+ metadata: {}
82
109
  post_install_message:
83
110
  rdoc_options: []
84
111
  require_paths:
85
112
  - lib
86
113
  required_ruby_version: !ruby/object:Gem::Requirement
87
- none: false
88
114
  requirements:
89
- - - ! '>='
115
+ - - ">="
90
116
  - !ruby/object:Gem::Version
91
117
  version: '0'
92
118
  required_rubygems_version: !ruby/object:Gem::Requirement
93
- none: false
94
119
  requirements:
95
- - - ! '>='
120
+ - - ">="
96
121
  - !ruby/object:Gem::Version
97
122
  version: '0'
98
123
  requirements: []
99
- rubyforge_project: guard-autoupload
100
- rubygems_version: 1.8.24
124
+ rubyforge_project:
125
+ rubygems_version: 2.2.2
101
126
  signing_key:
102
- specification_version: 3
127
+ specification_version: 4
103
128
  summary: Autoupload plugin - uploads local changes to remote host.
104
129
  test_files: []
130
+ has_rdoc: