rye 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES.txt CHANGED
@@ -7,10 +7,12 @@ TODO
7
7
  * Add S3 support for Rye::Box.upload / download
8
8
 
9
9
 
10
- #### 0.7.1 (2009-05-31) #############################
10
+ #### 0.7.1 (2009-06-01) #############################
11
11
 
12
12
  * CHANGE: Removed broken grep method from Rye::Rap
13
+ * FIXED: Bug which prevented setting relative paths in non-home directory
13
14
  * ADDED: Rye::Cmd#add_command helper for adding new command methods.
15
+ * ADDED: pre-command-hook now sends the hostname to the block
14
16
 
15
17
 
16
18
  #### 0.7.0 (2009-05-30) #############################
data/lib/rye/box.rb CHANGED
@@ -32,7 +32,8 @@ module Rye
32
32
  def host; @rye_host; end
33
33
  def opts; @rye_opts; end
34
34
  def safe; @rye_safe; end
35
-
35
+ def user; (@rye_opts || {})[:user]; end
36
+
36
37
  def host=(val); @rye_host = val; end
37
38
  def opts=(val); @rye_opts = val; end
38
39
  def safe=(val); @rye_safe = val; end
@@ -137,14 +138,26 @@ module Rye
137
138
  # rbox.pwd # => /usr/bin ($ cd /usr/bin && pwd)
138
139
  #
139
140
  def [](key=nil)
140
- @rye_current_working_directory = key
141
+ if key.nil? || key.index('/') == 0
142
+ @rye_current_working_directory = key
143
+ else
144
+ # Append to non-absolute paths
145
+ newpath = File.join(@rye_current_working_directory, key)
146
+ @rye_current_working_directory = File.expand_path(newpath)
147
+ end
141
148
  self
142
149
  end
143
150
  # Like [] except it returns an empty Rye::Rap object to mimick
144
151
  # a regular command method. Call with nil key (or no arg) to
145
152
  # reset.
146
153
  def cd(key=nil)
147
- @rye_current_working_directory = key
154
+ if key.nil? || key.index('/') == 0
155
+ @rye_current_working_directory = key
156
+ else
157
+ # Append to non-absolute paths
158
+ newpath = File.join(@rye_current_working_directory, key)
159
+ @rye_current_working_directory = File.expand_path(newpath)
160
+ end
148
161
  ret = Rye::Rap.new(self)
149
162
  end
150
163
 
@@ -308,9 +321,6 @@ module Rye
308
321
  end
309
322
  alias :add_env :setenv # deprecated?
310
323
 
311
- # The name of the user that opened the SSH connection
312
- def user; (@rye_opts || {})[:user]; end
313
-
314
324
  # See Rye.keys
315
325
  def keys; Rye.keys; end
316
326
 
@@ -473,8 +483,11 @@ module Rye
473
483
 
474
484
 
475
485
  # Supply a block to be called before every command. It's called
476
- # with three arguments: command name, an Array of arguments, user name
477
- #
486
+ # with three arguments: command name, an Array of arguments, user name, hostname
487
+ # e.g.
488
+ # rbox.pre_command_hook do |cmd,args,user,host|
489
+ # ...
490
+ # end
478
491
  def pre_command_hook(&block)
479
492
  @rye_pre_command_hook = block if block
480
493
  @rye_pre_command_hook
@@ -591,7 +604,7 @@ module Rye
591
604
  debug "Executing: %s" % cmd_clean
592
605
 
593
606
  if @rye_pre_command_hook.is_a?(Proc)
594
- @rye_pre_command_hook.call(cmd, args, opts[:user])
607
+ @rye_pre_command_hook.call(cmd, args, user, host)
595
608
  end
596
609
 
597
610
  ## NOTE: Do not raise a CommandNotFound exception in this method.
data/lib/rye/cmd.rb CHANGED
@@ -155,17 +155,20 @@ module Rye;
155
155
  # An optional block can be provided which will be called instead
156
156
  # of calling a system command.
157
157
  def Cmd.add_command(meth, path=nil, *hard_args, &block)
158
+
158
159
  path ||= meth.to_s
159
160
  if block
160
161
  hard_args.unshift(path) unless path.nil? # Don't lose an argument
161
162
  define_method(meth) do |*args|
162
- hard_args += args
163
- block.call(*hard_args)
163
+ local_args = hard_args.clone
164
+ local_args += args
165
+ block.call(*local_args)
164
166
  end
165
167
  else
166
168
  define_method(meth) do |*args|
167
- hard_args += args
168
- cmd(path, *hard_args)
169
+ local_args = hard_args.clone
170
+ local_args += args
171
+ cmd(path, *local_args)
169
172
  end
170
173
  end
171
174
  end
data/rye.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  @spec = Gem::Specification.new do |s|
2
2
  s.name = "rye"
3
3
  s.rubyforge_project = "rye"
4
- s.version = "0.7.1"
4
+ s.version = "0.7.2"
5
5
  s.summary = "Rye: Safely run SSH commands on a bunch of machines at the same time (from Ruby)."
6
6
  s.description = s.summary
7
7
  s.author = "Delano Mandelbaum"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rye
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delano Mandelbaum
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-31 00:00:00 -04:00
12
+ date: 2009-06-01 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency