joekhoobyar-capsaicin 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 1
4
- :patch: 6
4
+ :patch: 7
data/lib/capsaicin.rb CHANGED
@@ -3,14 +3,20 @@ unless Capistrano::Configuration.respond_to?(:instance)
3
3
  end
4
4
  require 'capistrano'
5
5
 
6
+ module Capsaicin; end
7
+
6
8
  require File.join(File.dirname(__FILE__), %w(capsaicin sys))
9
+ require File.join(File.dirname(__FILE__), %w(capsaicin namespace))
7
10
  require File.join(File.dirname(__FILE__), %w(capsaicin invocation))
8
11
  require File.join(File.dirname(__FILE__), %w(capsaicin files))
9
12
  require File.join(File.dirname(__FILE__), %w(capsaicin service))
10
13
  require File.join(File.dirname(__FILE__), %w(capsaicin ui))
11
14
 
12
- Capistrano::Configuration.send :include, Invocation
15
+ Capistrano::Configuration.send :include, Capsaicin::Invocation
16
+ Capistrano::Configuration::Namespaces::Namespace.send :include, Capsaicin::Namespace
13
17
 
18
+ Capistrano.plugin :local_sys, Capsaicin::LocalSys
19
+ Capistrano.plugin :service, Capsaicin::Service
14
20
  Capistrano.plugin :files, Capsaicin::Files
15
21
  Capistrano.plugin :local_files, Capsaicin::Files::Local
16
22
  Capistrano.plugin :remote_files, Capsaicin::Files::Remote
@@ -3,6 +3,4 @@ module Capsaicin
3
3
  module Bundle # :nodoc:
4
4
 
5
5
  end
6
-
7
- Capistrano.plugin :bundle
8
6
  end
@@ -61,7 +61,15 @@ module Capsaicin
61
61
  when :system, :local_run
62
62
  cp from, to
63
63
  else
64
- to2, to = to, "/tmp/#{File.basename to}-#{Time.now.utc.to_i}" if _via.to_s[0,4] == 'sudo'
64
+ if _via.to_s[0,4] == 'sudo'
65
+ if to[-1]==?/ || to[-1]==?\\ || directory?(to)
66
+ tof = File.basename from
67
+ to2, to = "#{to}/#{tof}", "/tmp/#{tof}-#{Time.now.utc.to_i}"
68
+ else
69
+ tof = File.basename to
70
+ to2, to = to, "/tmp/#{tof}-#{Time.now.utc.to_i}"
71
+ end
72
+ end
65
73
  @config.upload(from, to, options, &block)
66
74
  if to2
67
75
  run "chmod 0644 #{to}"
@@ -85,7 +93,14 @@ module Capsaicin
85
93
  when :system, :local_run
86
94
  FileUtils::Verbose.copy_stream StringIO.new(from), to
87
95
  else
88
- path2, path = path, "/tmp/#{File.basename path}-#{Time.now.utc.to_i}" if _via.to_s[0,4] == 'sudo'
96
+ if _via.to_s[0,4] == 'sudo'
97
+ if path[-1]==?/ || path[-1]==?\\ || directory?(path)
98
+ abort "Target path is a directory!"
99
+ else
100
+ pathf = File.basename path
101
+ path2, path = path, "/tmp/#{pathf}-#{Time.now.utc.to_i}"
102
+ end
103
+ end
89
104
  @config.put(data, path, options)
90
105
  if path2
91
106
  run "chmod 0644 #{path}"
@@ -10,6 +10,22 @@ module Capsaicin
10
10
  invoke_command *args.push(options), &block
11
11
  end
12
12
 
13
+ # Automatically uses the :run_method variable to run things.
14
+ # Equivalent to +capture *args, :via=>fetch(:run_method, :run)+
15
+ def vcapture(*args, &block)
16
+ options = Hash===args.last ? args.pop.dup : {}
17
+ options[:via] = fetch(:run_method, :run)
18
+ capture *args.push(options), &block
19
+ end
20
+
21
+ # Automatically uses the :run_method variable to run things.
22
+ # Equivalent to +stream *args, :via=>fetch(:run_method, :run)+
23
+ def vstream(*args, &block)
24
+ options = Hash===args.last ? args.pop.dup : {}
25
+ options[:via] = fetch(:run_method, :run)
26
+ stream *args.push(options), &block
27
+ end
28
+
13
29
  # Capistrano's system() override is only available from the base deployment strategy.
14
30
  # Also, we could do with a few more windows checks.
15
31
  def local_run(*args, &block)
@@ -0,0 +1,48 @@
1
+ module Capsaicin
2
+
3
+ module Namespace
4
+
5
+ # Redefine settings for the duration of an existing task.
6
+ def task_settings(task, vars)
7
+ orig_vars = vars.keys.select { |k| exists? k }.inject({}) { |h,k| h[k] = variables[k]; h }
8
+ orig_body = tasks[task].body
9
+ tasks[task].instance_variable_set(:@body, lambda do
10
+ vars.each { |k,v| Proc===v ? set(k, &v) : set(k, v) }
11
+ begin
12
+ orig_body.call
13
+ ensure
14
+ vars.keys.each do |k|
15
+ if ! orig_vars.include? k
16
+ variables.delete k
17
+ else
18
+ v = orig_vars[k]
19
+ Proc===v ? set(k, &v) : set(k, v)
20
+ end
21
+ end
22
+ end
23
+ end)
24
+ end
25
+
26
+ # Undefine tasks in a namespace.
27
+ def undef_tasks(name, list)
28
+ namespace name do
29
+ metaclass = class << self; self; end
30
+ list.each do |k|
31
+ k = k.to_sym
32
+ metaclass.send(:undef_method, k)
33
+ tasks.delete k
34
+ end
35
+ end
36
+ end
37
+
38
+ # Override tasks in a namespace to a NOOP.
39
+ def noop_tasks(name, list)
40
+ namespace name do
41
+ metaclass = class << self; self; end
42
+ list.each do |k|
43
+ tasks[k.to_sym].instance_variable_set(:@body, lambda {})
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -17,5 +17,3 @@ module Capsaicin
17
17
  end
18
18
 
19
19
  end
20
-
21
- Capistrano.plugin :service, Capsaicin::Service
data/lib/capsaicin/sys.rb CHANGED
@@ -6,6 +6,4 @@ module Capsaicin
6
6
  end
7
7
 
8
8
  end
9
-
10
- Capistrano.plugin :local_sys, LocalSys
11
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joekhoobyar-capsaicin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Khoobyar
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-06 00:00:00 -07:00
12
+ date: 2009-06-15 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -52,6 +52,7 @@ files:
52
52
  - lib/capsaicin/files/local.rb
53
53
  - lib/capsaicin/files/remote.rb
54
54
  - lib/capsaicin/invocation.rb
55
+ - lib/capsaicin/namespace.rb
55
56
  - lib/capsaicin/service.rb
56
57
  - lib/capsaicin/service/command.rb
57
58
  - lib/capsaicin/service/crm.rb