drb_fileclient 0.4.6 → 0.6.0

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
  SHA256:
3
- metadata.gz: 4dd24921abefc7ad1f0f6f252f33bf8a342a718d00fb8850a8068869007c7a5c
4
- data.tar.gz: 6ed79b375fa269fc33b28a26ffeafe1223b9f0c18aeac071397116c7d3f1fb81
3
+ metadata.gz: 9ec57e89e0d0588cc4ab855a9fb3047a950e57b53497b585e658593668660146
4
+ data.tar.gz: e26f60db52598b80752b173d08d1113bd1ffdfd155b6d5a9bdb3bbf835346b76
5
5
  SHA512:
6
- metadata.gz: 975d6904d5dad3172dd48c9a752da8b24bba28fa4b49db0c536e10beb15d5ae62f72e55da26441f4e9fe70adc3540b79fb4f3d7706f3742c3bf3c6ac37ac4ba9
7
- data.tar.gz: e6e20757af201845c09d60d94cb07487f621045fa376b55683b673e879414c1b6acd48b2d6bd6f35fa5fab7080308d97e41f60a76d56e450660280b9596083ee
6
+ metadata.gz: d2ceaa76749231d9a4b2c5670ba91d70db4c395c52f41d0871a51bc6430a2259dd426496fc0bca426154937174cfe088179ffbcd18500590936b556f25d2a73b
7
+ data.tar.gz: 6d6f2121e40ac1a2c536421745d1f038b7cd03e2ab9a83cd0489b2d7e7ebbe59469160705a4bdb5800c6454e7690233c731a1b5b1786f0beea1008e21cc3579f
checksums.yaml.gz.sig CHANGED
Binary file
@@ -4,82 +4,120 @@
4
4
 
5
5
  require 'drb'
6
6
  require 'zip'
7
+ require 'c32'
7
8
 
8
9
 
9
10
  class DRbFileClient
11
+ using ColouredText
10
12
 
13
+ def initialize(location=nil, host: nil, port: '61010', debug: false)
14
+
15
+ @debug = debug
11
16
 
12
- def initialize(location=nil, host: nil, port: '61010')
13
-
14
17
  if location then
15
-
18
+
16
19
  host = location[/(?<=^dfs:\/\/)[^\/:]+/]
17
20
  port = location[/(?<=^dfs:\/\/)[^:]+:(\d+)/,1] || '61010'
18
21
  @directory = location[/(?<=^dfs:\/\/)[^\/]+\/(.*)/,1]
19
-
22
+
20
23
  end
21
-
24
+
22
25
  DRb.start_service
23
-
26
+
24
27
  end
25
-
28
+
26
29
  def chdir(raw_path)
27
-
30
+
28
31
  return Dir.chdir raw_path unless @directory or raw_path =~ /^dfs:\/\//
29
-
32
+
30
33
  if raw_path[0] == '/' then
31
34
  directory = raw_path[1..-1]
32
35
  elsif raw_path =~ /^dfs:\/\//
33
36
  @file, directory = parse_path(raw_path)
34
- else
37
+ else
35
38
  directory = File.join(@directory, raw_path)
36
- end
37
-
39
+ end
40
+
38
41
  if @file.exists? directory then
39
42
  @directory = directory
40
43
  else
41
44
  'No such file or directory'
42
45
  end
43
-
46
+
44
47
  end
45
48
 
46
- def cp(raw_path, raw_path2)
47
-
48
- unless @directory or raw_path =~ /^dfs:\/\// then
49
- return FileUtils.cp raw_path, raw_path2
49
+ def chmod(permissions, raw_path)
50
+
51
+ if raw_path =~ /^dfs:\/\// then
52
+
53
+ @file, path = parse_path(raw_path)
54
+ @file.chmod permissions, path
55
+
56
+ else
57
+ return FileUtils.chmod(permissions, raw_path)
50
58
  end
51
-
59
+ end
60
+
61
+ def cp(raw_path, raw_path2)
62
+
63
+ puts 'inside cp'.info if @debug
64
+
52
65
  if raw_path =~ /^dfs:\/\// then
53
-
66
+
67
+ if @debug then
68
+ puts ('raw_path: ' + raw_path.inspect).debug
69
+ puts ('raw_path2: ' + raw_path2.inspect).debug
70
+ end
71
+
54
72
  if raw_path[/^dfs:\/\/([^\/]+)/] == raw_path2[/^dfs:\/\/([^\/]+)/] then
55
-
73
+
56
74
  _, path = parse_path(raw_path)
57
75
  @file, path2 = parse_path(raw_path2)
58
- @file.cp path, path
59
-
60
- else
61
-
76
+ @file.cp path, path2
77
+
78
+ elsif raw_path2[/^dfs:\/\//]
79
+
62
80
  @file, path = parse_path(raw_path)
63
81
  file2, path2 = parse_path(raw_path2)
82
+ puts ('path: ' + path.inspect).debug if @debug
83
+ puts ('path2: ' + path.inspect).debug if @debug
64
84
  content = @file.read path
65
-
85
+
66
86
  file2.write path2, content
67
87
 
88
+ else
89
+
90
+ @file, path = parse_path(raw_path)
91
+ #file2, path2 = parse_path(raw_path2)
92
+ puts ('path: ' + path.inspect).debug if @debug
93
+ puts ('path2: ' + path2.inspect).debug if @debug
94
+ content = @file.read path
95
+
96
+ File.write raw_path2, content
97
+
68
98
  end
69
-
99
+
100
+ elsif raw_path2 =~ /dfs:\/\// then
101
+
102
+ puts 'option2'.info if @debug
103
+
104
+ file2, path2 = parse_path(raw_path2)
105
+ puts ('path2: ' + path2.inspect).debug if @debug
106
+ file2.write path2, File.read(raw_path)
107
+
70
108
  else
71
-
72
- @file.cp File.join(@directory, raw_path),
73
- File.join(@directory, raw_path2)
74
-
75
- end
76
-
77
- end
78
-
79
- def directory?(filename=@filename)
80
-
109
+
110
+ puts 'option3'.info if @debug
111
+ FileUtils.cp raw_path, raw_path2
112
+
113
+ end
114
+
115
+ end
116
+
117
+ def directory?(filename=@filename)
118
+
81
119
  return File.directory? filename unless @directory or filename =~ /^dfs:\/\//
82
-
120
+
83
121
  if filename =~ /^dfs:\/\// then
84
122
  @file, filename2 = parse_path(filename)
85
123
  else
@@ -88,13 +126,13 @@ class DRbFileClient
88
126
  end
89
127
 
90
128
  @file.directory?(filename2)
91
-
92
- end
93
-
94
- def exists?(filename=@filename)
95
-
129
+
130
+ end
131
+
132
+ def exists?(filename=@filename)
133
+
96
134
  return File.exists? filename unless @directory or filename =~ /^dfs:\/\//
97
-
135
+
98
136
  if filename =~ /^dfs:\/\// then
99
137
  @file, filename2 = parse_path(filename)
100
138
  else
@@ -103,136 +141,136 @@ class DRbFileClient
103
141
  end
104
142
 
105
143
  @file.exists?(filename2)
106
-
144
+
107
145
  end
108
-
146
+
109
147
  alias exist? exists?
110
-
148
+
111
149
  def ls(raw_path)
112
-
150
+
113
151
  return Dir[raw_path] unless @directory or raw_path =~ /^dfs:\/\//
114
-
152
+
115
153
  if raw_path[0] == '/' then
116
154
  path = raw_path[1..-1]
117
155
  elsif raw_path =~ /^dfs:\/\//
118
156
  @file, path = parse_path(raw_path)
119
- else
157
+ else
120
158
  path = File.join(@directory, raw_path)
121
- end
122
-
159
+ end
160
+
123
161
  @file.ls path
124
-
125
- end
126
-
162
+
163
+ end
164
+
127
165
  def mkdir(name)
128
-
166
+
129
167
  return FileUtils.mkdir name unless @directory or name =~ /^dfs:\/\//
130
-
168
+
131
169
  @file, path = parse_path(name)
132
170
  @file.mkdir path
133
171
  end
134
-
172
+
135
173
  def mkdir_p(raw_path)
136
-
174
+
137
175
  unless @directory or raw_path =~ /^dfs:\/\// then
138
- return FileUtils.mkdir_p raw_path
139
- end
140
-
176
+ return FileUtils.mkdir_p raw_path
177
+ end
178
+
141
179
  if raw_path =~ /^dfs:\/\// then
142
180
  @file, filepath = parse_path(raw_path)
143
181
  else
144
182
  filepath = File.join(@directory, raw_path)
145
183
  end
146
-
184
+
147
185
  @file.mkdir_p filepath
148
- end
149
-
186
+ end
187
+
150
188
  def mv(raw_path, raw_path2)
151
-
189
+
152
190
  unless @directory or raw_path =~ /^dfs:\/\// then
153
- return FileUtils.mv raw_path, raw_path2
191
+ return FileUtils.mv raw_path, raw_path2
154
192
  end
155
-
193
+
156
194
  if raw_path =~ /^dfs:\/\// then
157
195
  _, path = parse_path(raw_path)
158
196
  else
159
197
  path = File.join(@directory, raw_path)
160
198
  end
161
-
199
+
162
200
  if raw_path2 =~ /^dfs:\/\// then
163
201
  _, path2 = parse_path(raw_path2)
164
202
  else
165
203
  path2 = File.join(@directory, raw_path2)
166
204
  end
167
-
205
+
168
206
  @file.mv path, path2
169
- end
170
-
207
+ end
208
+
171
209
  def pwd()
172
-
210
+
173
211
  return Dir.pwd unless @directory
174
-
212
+
175
213
  '/' + @directory if @file
176
-
177
- end
214
+
215
+ end
178
216
 
179
217
  def read(filename=@filename)
180
-
218
+
181
219
  return File.read filename, s unless @directory or filename =~ /^dfs:\/\//
182
-
220
+
183
221
  if filename =~ /^dfs:\/\// then
184
222
  @file, path = parse_path(filename)
185
223
  else
186
224
  path = File.join(@directory, filename)
187
225
  end
188
-
226
+
189
227
  @file.read path
190
228
  end
191
-
229
+
192
230
  def rm(path)
193
-
231
+
194
232
  return FileUtils.rm path unless @directory or path =~ /^dfs:\/\//
195
-
233
+
196
234
  if path =~ /^dfs:\/\// then
197
235
  @file, path2 = parse_path( path)
198
236
  else
199
237
  path2 = File.join(@directory, path)
200
238
  end
201
-
239
+
202
240
  @file.rm path2
203
-
204
- end
205
-
241
+
242
+ end
243
+
206
244
  def write(filename=@filename, s)
207
-
245
+
208
246
  return File.write filename, s unless @directory or filename =~ /^dfs:\/\//
209
-
247
+
210
248
  if filename =~ /^dfs:\/\// then
211
249
  @file, path = parse_path(filename)
212
250
  else
213
251
  path = File.join(@directory, filename)
214
252
  end
215
-
216
- @file.write path, s
217
-
253
+
254
+ @file.write path, s
255
+
218
256
  end
219
-
257
+
220
258
  def zip(filename_zip, a)
221
-
259
+
222
260
  puts '@directory: ' + @directory.inspect if @debug
223
-
261
+
224
262
  unless @directory or filename_zip =~ /^dfs:\/\// then
225
-
263
+
226
264
  Zip::File.open(zipfile_zip, Zip::File::CREATE) do |x|
227
265
 
228
- a.each do |filename, buffer|
266
+ a.each do |filename, buffer|
229
267
  x.get_output_stream(filename) {|os| os.write buffer }
230
268
  end
231
269
 
232
270
  end
233
-
271
+
234
272
  end
235
-
273
+
236
274
  if filename_zip =~ /^dfs:\/\// then
237
275
  @file, filepath = parse_path(filename_zip)
238
276
  else
@@ -240,16 +278,16 @@ class DRbFileClient
240
278
  end
241
279
 
242
280
  @file.zip filepath, a
243
-
281
+
244
282
  end
245
283
 
246
284
  private
247
-
285
+
248
286
  def parse_path(filename)
249
287
 
250
288
  host = filename[/(?<=^dfs:\/\/)[^\/:]+/]
251
289
  @host = host if host
252
-
290
+
253
291
  port = filename[/(?<=^dfs:\/\/)[^:]+:(\d+)/,1] || '61010'
254
292
 
255
293
  file_server = DRbObject.new nil, "druby://#{host || @host}:#{port}"
@@ -257,24 +295,25 @@ class DRbFileClient
257
295
 
258
296
  end
259
297
 
260
- end
298
+ end
261
299
 
262
300
  class DfsFile
263
-
301
+
264
302
  @client = DRbFileClient.new
265
-
266
- def self.directory?(filename) @client.directory?(filename) end
267
- def self.exists?(filename) @client.exists?(filename) end
268
- def self.chdir(path) @client.chdir(path) end
269
- def self.cp(path, path2) @client.cp(path, path2) end
270
- def self.ls(path) @client.ls(path) end
271
- def self.mkdir(name) @client.mkdir(name) end
272
- def self.mkdir_p(path) @client.mkdir_p(path) end
273
- def self.mv(path, path2) @client.mv(path, path2) end
274
- def self.pwd() @client.pwd() end
303
+
304
+ def self.directory?(filename) @client.directory?(filename) end
305
+ def self.exists?(filename) @client.exists?(filename) end
306
+ def self.chdir(path) @client.chdir(path) end
307
+ def self.chmod(num, filename) @client.chmod(num, filename) end
308
+ def self.cp(path, path2) @client.cp(path, path2) end
309
+ def self.ls(path) @client.ls(path) end
310
+ def self.mkdir(name) @client.mkdir(name) end
311
+ def self.mkdir_p(path) @client.mkdir_p(path) end
312
+ def self.mv(path, path2) @client.mv(path, path2) end
313
+ def self.pwd() @client.pwd() end
275
314
  def self.read(filename) @client.read(filename) end
276
- def self.rm(filename) @client.rm(filename) end
315
+ def self.rm(filename) @client.rm(filename) end
277
316
  def self.write(filename, s) @client.write(filename, s) end
278
317
  def self.zip(filename, a) @client.zip(filename, a) end
279
-
318
+
280
319
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drb_fileclient
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -11,31 +11,31 @@ cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
13
  MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkwMjE4MTMyMjE4WhcN
15
- MjAwMjE4MTMyMjE4WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDPLIWE
17
- 1LxL0Rs9thm/+dEKOLimLGMrg805TqNbDMVg3zSxx/hu5DDgZw+kZxHBrhdAOGgL
18
- N9q1wHikBL3KRBlfpZn6DLL1J6RxsJmTEdhEY0IGT1sVlNYnW3IYK9nfaeJccSAA
19
- Siqt1Wg2T7O6UOTq3jg4qWSp7jT8W/CYeN+drJNvTPXf5mlBcgWhzbCJLjAMdMoG
20
- tEiBzlAGs5ys/6jk9JDVK/ll3QGq5ldzVmW+eV6z54MIXJTBRZKf43Eb5h28BNa5
21
- MoWLdj2T0nKApQDnJjwbsKdb0qq5wOAbvz49NgGfEt+azogI2DFst3JC6tt62E1C
22
- i1/6+xD70d5NpiQQlui027F8JdQbyk+3k8JMDKEI/mx+SWw41wvy1+wjiGm18X2y
23
- PC2h2eGzDdS1Rf+RwYnmw4hwmsMysEnuJyy3odhmiuYL64Uj7GKGmFuigkff2pui
24
- FSuSFUAZVcaFpqjozYvREn1iQiYCsbTs/zu1Hwyz5oZHsLlpI+J5iF6IsxkCAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUZflEC5fi
26
- H1TSltk+4vyAjijZuQ0wJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwMTE3MjExMTUxWhcN
15
+ MjMwMTE3MjExMTUxWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC1sfsT
17
+ Jfjs0K5yhTPZsHAcniDvpZsgsTzASYu0IbH63AZ1o3dBV7IzF6KrziLoJ4LZ7UQK
18
+ yJ6PnHUSTKBZJccpxIErNb3YlU3wYhF4aFqVxZBjt/IWVyGk62GtgbkuFGcsC2DP
19
+ sxL4/WYtZvSrDCnY/XDEK8LUO6/MQ6cF2aT3OHmXSz3zuDW83yuIWrTXbKJnjuKn
20
+ V7zM0prSGfLGNM+DlIgAGrspj+D+aofhVZ1vcsy7tHHSazErTtp88ONCoJrBv8UZ
21
+ Zw+fZV14rwhqftK7jYH0XL7kBZYILVkpehNXRFOwojnkg/Z6IECYxz2alNYwDWUB
22
+ lPzxgCPJsHoQCtustc2UHE/Ik+8QVJIHimpwquzhwECGq9MSUlYau48XlB8nBHlN
23
+ 3YckYd3CjdbB/4UkCjlQOBrb0UT7HQHm+f5uCa2hXKkpWFKJNO99FBR75FAJWbQt
24
+ JfYUJzGrp2z95pc6cDvaqzXPVA48JVVWF6uUqCeoVOCcz3rISfZT5X6Y+I8CAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUWpxb19+x
26
+ FM42Y6G5h22m4V4WOQ8wJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
27
  c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEAehovpYSCjyALI2nsoZgOXuhu2FLJqUQBuoJ71qhb
29
- Taqk2GGL7H3rw+230F7JFa6+mEDhvPRtPpvFouUWCVkWt/cFjCSi6wMtPtWI1npX
30
- Z24Rq7o4qhnGnNOgF4GUIAB9wKkuGpHpGu3Pm6sSsoY53RSdOIrUbATq7d9R+nDC
31
- IuHsUhqWu0JHuIcJAt2nFdNhpAM1xI8xmpBB/ZAPmuBgCIGACRUj9zDwCcvQTexg
32
- VpPvUCkhqF2HslhSBvMt0uWior6rx2NF1XjLcaNZ3D/RYODI+c8bzGuG/kiy49T1
33
- GiV9YurS5UW2Pbpy6GnkvDWNOGwV3SuIeVzo0kcGh/O4zRzC0UHWXzfMshQZq+vj
34
- jYmP2hJqU6kqXV8nvKfwDTVov3W49/Nx2NgvhKFga4gMlwRryZCYpWSNJ/2PnKke
35
- Q2NfvYKLI+E2SiA6gvWccHs5PVlVg/BMshm3jnuqHGeuzxtSivRoTcRKfedcs6CL
36
- NlXQCltmwWchk+xRD5gmICCy
28
+ BgkqhkiG9w0BAQsFAAOCAYEAoKkYN6WZurnK5O9oEqj+ugBPm9Gh5I75oLQCUyIw
29
+ sHsBR0clXN+Lta4plvzonH3xKx9ddzX+KWZS0tHxcm072zV6sKEKFYcQiUzQyTwc
30
+ Hyfp6E3950UwJi3KO4o3RPZC1U5/fOvnuZgVAbGqcJQf/t/SfD5M3pBymbK2QszM
31
+ fG8W6bQ2kbkv7JbD3B0Sjb1eCDy3/s/eMmbjl1Wg48al1LWQDUMGAmadqLrnFEs0
32
+ 3arfhEofWPCcGw0u45L6omLCU8VWJFupyvQKDwEmkVAD9MMbnUuIsMWMkW4qFwl4
33
+ 0xIrbpFWN8ZHrlc29DrrNH9IKcgsI6Fmc4jOxrqnlushuHG3uthM1hGChljvOMaB
34
+ rs55jJl1U2ICzKSTmV28mLdtigYtJHOzuXrdZSLICM9FSvRkBWOnBz2YaDCA2NXP
35
+ FGcgjmmz5fOIqq2sBxk6JW1yo2G43yIUzymWOYKT2Jh6RR0Gg3z66wWwYpFpx8yR
36
+ 00JTBNVAgW+s2sLpeBtyMDbb
37
37
  -----END CERTIFICATE-----
38
- date: 2019-02-18 00:00:00.000000000 Z
38
+ date: 2022-01-17 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: zip
@@ -57,8 +57,28 @@ dependencies:
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
59
  version: 2.0.2
60
+ - !ruby/object:Gem::Dependency
61
+ name: c32
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 0.3.0
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.3'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 0.3.0
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '0.3'
60
80
  description:
61
- email: james@jamesrobertson.eu
81
+ email: digital.robertson@gmail.com
62
82
  executables: []
63
83
  extensions: []
64
84
  extra_rdoc_files: []
@@ -83,7 +103,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
103
  - !ruby/object:Gem::Version
84
104
  version: '0'
85
105
  requirements: []
86
- rubygems_version: 3.0.1
106
+ rubyforge_project:
107
+ rubygems_version: 2.7.10
87
108
  signing_key:
88
109
  specification_version: 4
89
110
  summary: Reads or writes files from a remote DRb server. Simple as DfsFile.read or
metadata.gz.sig CHANGED
Binary file