sambala 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/sambala.rb +26 -7
- data/lib/sambala_gardener.rb +24 -2
- data/test/tc_sambala_main.rb +6 -3
- metadata +3 -3
data/lib/sambala.rb
CHANGED
@@ -20,6 +20,25 @@
|
|
20
20
|
# with the +queue_results+ method, returning an array containing your commands and their respective results.
|
21
21
|
#
|
22
22
|
# When in doubt about what each command does, please refer to smbclient man page for help.
|
23
|
+
# ///////////////////////////////////////////////////////////////////////////////////////
|
24
|
+
#
|
25
|
+
# Example:
|
26
|
+
#
|
27
|
+
# samba = Sambala.new( :domain => 'NTDOMAIN',
|
28
|
+
# :host => 'sambaserver',
|
29
|
+
# :share => 'sambashare',
|
30
|
+
# :user => 'walrus',
|
31
|
+
# :password => 'eggman',
|
32
|
+
# :threads => 2 )
|
33
|
+
#
|
34
|
+
# samba.cd('myfolder') # => true
|
35
|
+
# samba.put(:from => 'aLocalFile.txt') # => [false, "aLocalFile.txt does not exist\r\n"]
|
36
|
+
#
|
37
|
+
#
|
38
|
+
# For detailed documentation refer to the online ruby-doc:
|
39
|
+
# http://sambala.rubyforge.org/ruby-doc/
|
40
|
+
#
|
41
|
+
# ///////////////////////////////////////////////////////////////////////////////////////
|
23
42
|
#
|
24
43
|
# Author:: lp (mailto:lp@spiralix.org)
|
25
44
|
# Copyright:: 2008 Louis-Philippe Perron - Released under the terms of the MIT license
|
@@ -56,7 +75,7 @@ class Sambala
|
|
56
75
|
@options = options; gardener_ok
|
57
76
|
rescue
|
58
77
|
@gardener.close unless @gardener.nil? || @gardener.class != 'Gardener'
|
59
|
-
raise RuntimeError.exception("Unknown Process Failed!!")
|
78
|
+
raise RuntimeError.exception("Unknown Process Failed!! (#{$!.to_s})")
|
60
79
|
end
|
61
80
|
end
|
62
81
|
|
@@ -68,7 +87,7 @@ class Sambala
|
|
68
87
|
# === Example
|
69
88
|
# samba.cd('aFolder/anOtherFolder/') # => true
|
70
89
|
def cd(to='.')
|
71
|
-
execute_all('cd',to)
|
90
|
+
execute_all('cd',clean_path(to))
|
72
91
|
end
|
73
92
|
|
74
93
|
# The +du+ instance method does exactly what _du_ usually does: estimates file space usage.
|
@@ -117,7 +136,7 @@ class Sambala
|
|
117
136
|
# samba.get(:from => 'aFile.txt') # => [true, "getting file \\aFile.txt.rb of size 3877 as test.rb (99.6 kb/s) (average 89.9 kb/s)\r\n"]
|
118
137
|
def get(opts={:from => nil, :to => nil, :queue => false})
|
119
138
|
opts[:to].nil? ? strng = opts[:from] : strng = opts[:from] + ' ' + opts[:to]
|
120
|
-
execute('get', strng, opts[:queue])
|
139
|
+
execute('get', clean_path(strng), opts[:queue])
|
121
140
|
end
|
122
141
|
|
123
142
|
# The +lcd+ instance method changes the current working directory on the local machine to the directory specified.
|
@@ -128,7 +147,7 @@ class Sambala
|
|
128
147
|
# === Example
|
129
148
|
# samba.lcd('aLocalFolder/anOtherFolder/') # => true
|
130
149
|
def lcd(to='.')
|
131
|
-
execute_all('lcd', to)
|
150
|
+
execute_all('lcd', clean_path(to))
|
132
151
|
end
|
133
152
|
|
134
153
|
# The +lowercase+ method toggles lowercasing of filenames for the get command.
|
@@ -188,7 +207,7 @@ class Sambala
|
|
188
207
|
# === Example
|
189
208
|
# samba.mkdir('aFolder/aNewFolder') # => true
|
190
209
|
def mkdir(path, queue=false)
|
191
|
-
execute('mkdir' ,path, queue)[0]
|
210
|
+
execute('mkdir' , clean_path(path), queue)[0]
|
192
211
|
end
|
193
212
|
alias md mkdir
|
194
213
|
|
@@ -218,7 +237,7 @@ class Sambala
|
|
218
237
|
|
219
238
|
def put(opts={:from => nil, :to => nil, :queue => false})
|
220
239
|
opts[:to].nil? ? strng = opts[:from] : strng = opts[:from] + ' ' + opts[:to]
|
221
|
-
execute('put' ,strng, opts[:queue])
|
240
|
+
execute('put' , clean_path(strng), opts[:queue])
|
222
241
|
end
|
223
242
|
|
224
243
|
# The +recurse+ method toggles directory recursion
|
@@ -240,7 +259,7 @@ class Sambala
|
|
240
259
|
# === Example
|
241
260
|
# samba.rmdir('mydir') # => true
|
242
261
|
def rmdir(path,queue=false)
|
243
|
-
execute('rmdir' , path, queue)[0]
|
262
|
+
execute('rmdir' , clean_path(path), queue)[0]
|
244
263
|
end
|
245
264
|
|
246
265
|
# The +volume+ method returns remote volume information.
|
data/lib/sambala_gardener.rb
CHANGED
@@ -13,6 +13,19 @@ class Sambala
|
|
13
13
|
module Gardener
|
14
14
|
require 'timeout'
|
15
15
|
|
16
|
+
# The +clean_path+ method cleans the slashes, as backslashes, for the Windows servers.
|
17
|
+
# === Parameters
|
18
|
+
# * _path_ = the path to be cleaned
|
19
|
+
# === Example
|
20
|
+
# cleaned = clean_path('/My/Path/') # => '\My\Path'
|
21
|
+
def clean_path(path)
|
22
|
+
if @posix_support
|
23
|
+
return path
|
24
|
+
else
|
25
|
+
return path.gsub(/\//,'\\')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
16
29
|
# The +execute+ method splits the execution according to the operation mode: queue or interactive.
|
17
30
|
# === Parameters
|
18
31
|
# * _command_ = the command as a string
|
@@ -68,15 +81,16 @@ class Sambala
|
|
68
81
|
init_gardener; sleep 1
|
69
82
|
begin
|
70
83
|
Timeout.timeout(2) { @init_status = @gardener.init_status }
|
71
|
-
init = @init_status
|
84
|
+
init = Array.new(@init_status)
|
72
85
|
init.map! { |result| result[:success] }
|
73
86
|
throw :gardener if init.uniq.size == 1 and init[0] == true
|
74
87
|
rescue Timeout::Error
|
75
88
|
end
|
76
89
|
kill_gardener_and_incr
|
77
90
|
end
|
78
|
-
raise SmbInitError.exception("Couldn't set smbclient properly")
|
91
|
+
raise SmbInitError.exception("Couldn't set smbclient properly (#{$!.to_s})")
|
79
92
|
end
|
93
|
+
@posix_support = posix?(@init_status[0][:message])
|
80
94
|
end
|
81
95
|
|
82
96
|
# The +init_gardener+ method initialize a gardener class object
|
@@ -138,6 +152,14 @@ class Sambala
|
|
138
152
|
@options[:threads] -= 1 unless @options[:threads] == 1; @options[:init_timeout] += 1
|
139
153
|
end
|
140
154
|
|
155
|
+
def posix?(init_message)
|
156
|
+
if init_message =~ /windows/i
|
157
|
+
return false
|
158
|
+
else
|
159
|
+
return true
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
141
163
|
end
|
142
164
|
|
143
165
|
end
|
data/test/tc_sambala_main.rb
CHANGED
@@ -4,7 +4,7 @@ require 'sambala'
|
|
4
4
|
|
5
5
|
TESTFILE = 'sambala_test'
|
6
6
|
TESTDIR = 'sambala_temp'
|
7
|
-
WELCOME =
|
7
|
+
WELCOME = <<TITLE
|
8
8
|
.|'''.| '|| '||
|
9
9
|
||.. ' .... .. .. .. || ... .... || ....
|
10
10
|
''|||. '' .|| || || || ||' || '' .|| || '' .||
|
@@ -12,7 +12,8 @@ WELCOME = "
|
|
12
12
|
|'....|' '|..'|' .|| || ||. '|...' '|..'|' .||. '|..'|'
|
13
13
|
|
14
14
|
|
15
|
-
/////////////////////////////////////////////////////////////
|
15
|
+
/////////////////////////////////////////////////////////////
|
16
|
+
TITLE
|
16
17
|
|
17
18
|
class TestSambalaMain < Test::Unit::TestCase
|
18
19
|
|
@@ -31,7 +32,7 @@ class TestSambalaMain < Test::Unit::TestCase
|
|
31
32
|
ls_two = check_ls
|
32
33
|
assert(ls_one != ls_two)
|
33
34
|
check_lcd_put_get
|
34
|
-
|
35
|
+
|
35
36
|
check_cd('..')
|
36
37
|
check_rmdir(TESTDIR)
|
37
38
|
end
|
@@ -125,6 +126,8 @@ class TestSambalaMain < Test::Unit::TestCase
|
|
125
126
|
assert_kind_of(Array,re)
|
126
127
|
assert_equal(true,re[0])
|
127
128
|
|
129
|
+
check_exist(TESTFILE)
|
130
|
+
|
128
131
|
@samba.local("rm #{TESTFILE}")
|
129
132
|
after2_2 = @samba.local('ls')
|
130
133
|
assert(before2 == after2_2)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sambala
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Louis-Philippe Perron
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-02-03 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 1.3.
|
23
|
+
version: 1.3.2
|
24
24
|
version:
|
25
25
|
description:
|
26
26
|
email: lp@spiralix.org
|