yard-sftp 1.0.3 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -0
- data/README.md +2 -1
- data/lib/yard-sftp/version.rb +1 -1
- data/lib/yard/core_ext/file.rb +61 -43
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 374d10d47e1269d06b96f8b4d8974159567aa3f7
|
4
|
+
data.tar.gz: fa22ce24200815406771c182fdc691f4e25e7db1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dd658d85251d41ee2da9ad07c1c29bac12d9cd6357ff17b93718d7b839faea2b7d0de17be477d552260b50bd7fd078a50c01b298d5ea56ac522ff369b6fdb53d
|
7
|
+
data.tar.gz: 46b8664f4c46d375d7682e91c616d756d27ac499749095e1226efc47fa25269a06f58d3dcedb9bfc4484a5e8a893be0a914dfaec72bd3681d464897b75316a57
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.0.0-p247
|
data/README.md
CHANGED
data/lib/yard-sftp/version.rb
CHANGED
data/lib/yard/core_ext/file.rb
CHANGED
@@ -2,7 +2,6 @@ require 'fileutils'
|
|
2
2
|
require 'colored'
|
3
3
|
require 'yaml'
|
4
4
|
require 'net/sftp'
|
5
|
-
YAML::ENGINE.yamler = 'psych'
|
6
5
|
|
7
6
|
class File
|
8
7
|
|
@@ -15,8 +14,7 @@ class File
|
|
15
14
|
FileUtils.mkdir_p(dir) unless directory?(dir)
|
16
15
|
open(file, *args, &block)
|
17
16
|
|
18
|
-
#
|
19
|
-
sftp_create_base_directory
|
17
|
+
sftp_create_path("#{BASE_DIR}")
|
20
18
|
sftp_file(file)
|
21
19
|
end
|
22
20
|
|
@@ -24,86 +22,106 @@ class File
|
|
24
22
|
#
|
25
23
|
# @return [Hash] opts Hash
|
26
24
|
def self.sftp_config
|
27
|
-
begin
|
28
25
|
opts = YAML.load_file('.yardsftp')
|
29
26
|
rescue Psych::SyntaxError
|
30
27
|
abort 'Your .yardsftp file did not parse as expected!'.red.underline
|
31
28
|
rescue Errno::ENOENT
|
32
29
|
abort 'Your .yardsftp file is missing!'.red.underline
|
33
|
-
end
|
34
|
-
|
35
|
-
return opts
|
36
30
|
end
|
37
31
|
|
38
32
|
# Creates or returns sftp instance
|
39
33
|
#
|
40
34
|
# @return [Object] sftp instance
|
41
35
|
def self.sftp
|
42
|
-
|
36
|
+
tries ||= 3
|
37
|
+
connection ||= Net::SFTP.start(HOST, USER, :password => PWD)
|
38
|
+
rescue Errno::EADDRINUSE
|
39
|
+
log.progress('SSH Connection Error - retrying', nil)
|
40
|
+
retry unless (tries -= 1).zero?
|
43
41
|
end
|
44
42
|
|
45
43
|
# Uploads file
|
44
|
+
#
|
45
|
+
# @param opts [String] file_path path of the file
|
46
46
|
def self.sftp_file(file_path)
|
47
|
-
|
48
|
-
|
47
|
+
paths = sftp_split_all(file_path)
|
48
|
+
paths.pop
|
49
|
+
return if paths.include?(".yardoc")
|
49
50
|
|
50
|
-
unless
|
51
|
-
|
51
|
+
unless paths.empty?
|
52
|
+
sftp_create_paths(paths)
|
52
53
|
end
|
53
54
|
|
54
|
-
|
55
|
+
log.progress("Uploading #{file_path}", nil)
|
56
|
+
sftp.upload!(file_path, "#{BASE_DIR}/#{file_path}")
|
55
57
|
end
|
56
58
|
|
57
|
-
# Creates
|
59
|
+
# Creates paths relevant for file
|
58
60
|
#
|
59
|
-
# @param opts [Array]
|
60
|
-
def self.
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
61
|
+
# @param opts [Array] paths Array of paths
|
62
|
+
def self.sftp_create_paths(paths)
|
63
|
+
# Check if path doesn't already exists
|
64
|
+
if sftp_path_exists?("#{BASE_DIR}/#{paths.join('/')}")
|
65
|
+
sftp_clean_path("#{BASE_DIR}/#{paths.join('/')}")
|
66
|
+
else
|
67
|
+
# Iterate through each path and create
|
68
|
+
paths.each.with_index do |p, i|
|
69
|
+
case i
|
70
|
+
when 0
|
71
|
+
sftp_create_path("#{BASE_DIR}/#{p}")
|
72
|
+
when 1
|
73
|
+
sftp_create_path("#{BASE_DIR}/#{paths[0]}/#{p}")
|
74
|
+
else
|
75
|
+
sftp_create_path("#{BASE_DIR}/#{paths.take(i).join('/')}/#{p}")
|
76
|
+
end
|
68
77
|
end
|
69
|
-
|
70
|
-
sftp_create_directory(path)
|
71
78
|
end
|
72
79
|
end
|
73
80
|
|
74
|
-
# Creates
|
75
|
-
|
76
|
-
|
77
|
-
|
81
|
+
# Creates path if it doesn't exist
|
82
|
+
#
|
83
|
+
# @param opts [String] path the path of directory
|
84
|
+
def self.sftp_create_path(path)
|
85
|
+
unless sftp_path_exists?(path)
|
86
|
+
log.progress("Creating directory: #{path}", nil)
|
87
|
+
sftp.mkdir!(path)
|
78
88
|
end
|
79
89
|
end
|
80
90
|
|
81
|
-
#
|
91
|
+
# Removes files from path if older than upload time
|
82
92
|
#
|
83
93
|
# @param opts [String] path the path of directory
|
84
|
-
def self.
|
85
|
-
|
86
|
-
|
94
|
+
def self.sftp_clean_path(path)
|
95
|
+
sftp.dir.foreach(path) do |f|
|
96
|
+
if !File.extname("#{path}/#{f.name}").empty? && f.attributes.mtime < UPLOAD_TIME
|
97
|
+
sftp_remove_path("#{path}/#{f.name}")
|
98
|
+
end
|
87
99
|
end
|
88
100
|
end
|
89
101
|
|
90
|
-
# Checks if the
|
102
|
+
# Checks if the path exists
|
91
103
|
#
|
92
104
|
# @param opts [String] path the path of directory
|
93
|
-
|
94
|
-
|
105
|
+
# @return [Boolean] returns boolean of result
|
106
|
+
def self.sftp_path_exists?(path)
|
95
107
|
sftp.stat!(path)
|
96
|
-
rescue
|
108
|
+
rescue Net::SFTP::StatusException
|
97
109
|
return false
|
98
110
|
else
|
99
111
|
return true
|
100
|
-
end
|
101
112
|
end
|
102
113
|
|
103
|
-
#
|
114
|
+
# Removes file
|
104
115
|
#
|
105
|
-
# @param opts [String] path the path of
|
106
|
-
|
116
|
+
# @param opts [String] path the path of file
|
117
|
+
def self.sftp_remove_path(path)
|
118
|
+
sftp.remove!(path)
|
119
|
+
end
|
120
|
+
|
121
|
+
# Splits path
|
122
|
+
#
|
123
|
+
# @param opts [String] path the path of file
|
124
|
+
# @return [Array] returns array of file path
|
107
125
|
def self.sftp_split_all(path)
|
108
126
|
head, tail = File.split(path)
|
109
127
|
return [tail] if head == '.' || tail == '/'
|
@@ -116,6 +134,6 @@ class File
|
|
116
134
|
HOST = OPTS['yard-sftp']['host']
|
117
135
|
USER = OPTS['yard-sftp']['username']
|
118
136
|
PWD = OPTS['yard-sftp']['password']
|
119
|
-
|
120
|
-
|
137
|
+
BASE_DIR = OPTS['yard-sftp']['base_path'] + '/' + OPTS['yard-sftp']['base_folder']
|
138
|
+
UPLOAD_TIME = Time.now.to_i
|
121
139
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yard-sftp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Chrisp
|
@@ -87,6 +87,7 @@ extensions: []
|
|
87
87
|
extra_rdoc_files: []
|
88
88
|
files:
|
89
89
|
- .gitignore
|
90
|
+
- .ruby-version
|
90
91
|
- .travis.yml
|
91
92
|
- Gemfile
|
92
93
|
- LICENCE.md
|