guard-autoupload 0.3.6 → 1.0.0
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 +7 -0
- data/.gitignore +1 -1
- data/Gemfile +12 -0
- data/Gemfile.lock +65 -0
- data/Guardfile +23 -0
- data/LICENSE.txt +22 -0
- data/README.md +23 -18
- data/Rakefile +1 -2
- data/guard-autoupload.gemspec +23 -19
- data/lib/guard/autoupload.rb +121 -116
- data/lib/guard/autoupload/ftpsession.rb +1 -1
- data/lib/guard/autoupload/scpsession.rb +1 -1
- data/lib/guard/autoupload/templates/Guardfile +11 -8
- data/lib/guard/autoupload/version.rb +5 -0
- metadata +58 -32
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
data/Gemfile
CHANGED
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
|
-
|
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
|
-
|
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
|
-
|
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
|
2
|
-
Bundler::GemHelper.install_tasks
|
1
|
+
require "bundler/gem_tasks"
|
data/guard-autoupload.gemspec
CHANGED
@@ -1,23 +1,27 @@
|
|
1
|
-
#
|
2
|
-
|
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 |
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
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
|
-
|
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
|
-
|
16
|
-
|
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
|
data/lib/guard/autoupload.rb
CHANGED
@@ -1,136 +1,141 @@
|
|
1
|
-
$LOAD_PATH.unshift File.dirname(__FILE__)
|
2
|
-
|
3
1
|
require 'guard'
|
4
|
-
require '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
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
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
|
-
|
84
|
-
|
85
|
-
|
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
|
-
|
92
|
-
|
57
|
+
local_file = File.join(@local, path)
|
58
|
+
path.sub!(/^#{@local_subpath}/, '')
|
59
|
+
remote_file = File.join(@remote, path)
|
93
60
|
|
94
|
-
|
95
|
-
|
61
|
+
if(File.directory?(local_file))
|
62
|
+
next
|
96
63
|
end
|
97
64
|
|
98
|
-
|
99
|
-
|
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
|
-
|
103
|
-
|
104
|
-
|
83
|
+
msg = "Uploaded:\n#{paths.join("\n")}"
|
84
|
+
UI.info(msg)
|
85
|
+
::Guard::Notifier.notify "uploaded", :title => "Uploaded"
|
86
|
+
end
|
105
87
|
|
106
|
-
|
107
|
-
|
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
|
-
|
111
|
-
|
112
|
-
|
113
|
-
@session.close
|
114
|
-
end
|
115
|
-
end
|
107
|
+
def verbose?
|
108
|
+
@verbose || false
|
109
|
+
end
|
116
110
|
|
117
|
-
|
111
|
+
def quiet?
|
112
|
+
@quiet || false
|
113
|
+
end
|
118
114
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
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
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
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
|
-
|
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
|
@@ -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
|
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
|
-
|
6
|
-
|
7
|
-
|
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
|
-
|
10
|
+
# something else than default.
|
11
11
|
:user => "username",
|
12
12
|
:password => "password",
|
13
13
|
:remote => "remote_path",
|
14
|
-
:verbose =>
|
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
|
-
|
20
|
-
|
21
|
-
|
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
|
+
|
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.
|
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:
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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: '
|
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
|
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:
|
100
|
-
rubygems_version:
|
124
|
+
rubyforge_project:
|
125
|
+
rubygems_version: 2.2.2
|
101
126
|
signing_key:
|
102
|
-
specification_version:
|
127
|
+
specification_version: 4
|
103
128
|
summary: Autoupload plugin - uploads local changes to remote host.
|
104
129
|
test_files: []
|
130
|
+
has_rdoc:
|