capsaicin 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ pkg
2
+ doc
3
+ .loadpath
4
+ .project
5
+ text/fixtures
@@ -2,6 +2,12 @@
2
2
 
3
3
  Joe Khoobyar's spicy capistrano extensions.
4
4
 
5
+ == Project website(s)
6
+
7
+ http://capsaicin.rubyforge.com
8
+ http://rubyforge.com/projects/capsaicin
9
+ http://github.com/joekhoobyar/capsaicin
10
+
5
11
  == Copyright
6
12
 
7
13
  Copyright (c) 2009 Joe Khoobyar. See LICENSE for details.
data/Rakefile CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  require 'rubygems'
4
4
  require 'rake/rdoctask'
5
- require 'rake/testtask'
6
5
 
7
6
  begin
8
7
  require 'jeweler'
@@ -23,34 +22,26 @@ rescue LoadError
23
22
  puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
24
23
  end
25
24
 
26
- # These are new tasks
27
- begin
28
- require 'rake/contrib/sshpublisher'
29
- namespace :rubyforge do
30
-
31
- desc "Release gem and RDoc documentation to RubyForge"
32
- task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
33
-
34
- namespace :release do
35
- desc "Publish RDoc to RubyForge."
36
- task :docs => [:rdoc] do
37
- config = YAML.load(
38
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
39
- )
40
-
41
- host = "#{config['username']}@rubyforge.org"
42
- remote_dir = "/var/www/gforge-projects/capsaicin/"
43
- local_dir = 'doc'
25
+ require 'rake/testtask'
26
+ Rake::TestTask.new(:test) do |test|
27
+ test.libs << 'lib' << 'test'
28
+ test.pattern = 'test/**/*_test.rb'
29
+ test.verbose = true
30
+ end
44
31
 
45
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
46
- end
47
- end
32
+ begin
33
+ require 'rcov/rcovtask'
34
+ Rcov::RcovTask.new do |test|
35
+ test.libs << 'test'
36
+ test.pattern = 'test/**/*_test.rb'
37
+ test.verbose = true
48
38
  end
49
39
  rescue LoadError
50
- puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
40
+ task :rcov do
41
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
42
+ end
51
43
  end
52
44
 
53
-
54
45
  # --------- RDoc Documentation ---------
55
46
  desc "Generate RDoc documentation"
56
47
  Rake::RDocTask.new(:rdoc) do |rdoc|
@@ -63,10 +54,30 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
63
54
  rdoc.rdoc_files.include('lib/**/*.rb')
64
55
  end
65
56
 
66
- Rake::TestTask.new do |t|
67
- t.libs << "test"
68
- t.libs << "lib"
57
+ task :default => :build
58
+
59
+ Jeweler::GemcutterTasks.new
60
+ Jeweler::RubyforgeTasks.new do |rubyforge|
61
+ rubyforge.doc_task = "rdoc"
62
+ rubyforge.remote_doc_path = ''
69
63
  end
70
64
 
71
- task :default => :build
65
+ task :default => :test
66
+
67
+ require 'rake/rdoctask'
68
+ Rake::RDocTask.new do |rdoc|
69
+ if File.exist?('VERSION.yml')
70
+ config = YAML.load(File.read('VERSION.yml'))
71
+ version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
72
+ else
73
+ version = ""
74
+ end
75
+ rdoc.options << '--line-numbers' << '--inline-source' <<
76
+ '--main' << 'README.rdoc' <<
77
+ '--charset' << 'utf-8'
72
78
 
79
+ rdoc.rdoc_dir = 'rdoc'
80
+ rdoc.title = "Capsaicin #{version}"
81
+ rdoc.rdoc_files.include('README*')
82
+ rdoc.rdoc_files.include('lib/**/*.rb')
83
+ end
@@ -1,4 +1,5 @@
1
1
  ---
2
+ :patch: 8
3
+ :build:
2
4
  :major: 0
3
5
  :minor: 1
4
- :patch: 7
@@ -0,0 +1,71 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{capsaicin}
8
+ s.version = "0.1.8"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Joe Khoobyar"]
12
+ s.date = %q{2010-05-03}
13
+ s.description = %q{Spicy capistrano extensions for various needs}
14
+ s.email = %q{joe@ankhcraft.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".gitignore",
21
+ "LICENSE",
22
+ "README.rdoc",
23
+ "Rakefile",
24
+ "VERSION.yml",
25
+ "capsaicin.gemspec",
26
+ "lib/capistrano/recipes/deploy/strategy/local_copy.rb",
27
+ "lib/capsaicin.rb",
28
+ "lib/capsaicin/bundle.rb",
29
+ "lib/capsaicin/files.rb",
30
+ "lib/capsaicin/files/local.rb",
31
+ "lib/capsaicin/files/remote.rb",
32
+ "lib/capsaicin/invocation.rb",
33
+ "lib/capsaicin/namespace.rb",
34
+ "lib/capsaicin/service.rb",
35
+ "lib/capsaicin/service/command.rb",
36
+ "lib/capsaicin/service/crm.rb",
37
+ "lib/capsaicin/service/lsb.rb",
38
+ "lib/capsaicin/service/windows.rb",
39
+ "lib/capsaicin/sys.rb",
40
+ "lib/capsaicin/ui.rb",
41
+ "test/helper.rb",
42
+ "test/test_local_files.rb"
43
+ ]
44
+ s.homepage = %q{http://github.com/joekhoobyar/capsaicin}
45
+ s.rdoc_options = ["--charset=UTF-8"]
46
+ s.require_paths = ["lib"]
47
+ s.rubyforge_project = %q{capsaicin}
48
+ s.rubygems_version = %q{1.3.6}
49
+ s.summary = %q{Joe Khoobyar's spicy capistrano extensions}
50
+ s.test_files = [
51
+ "test/helper.rb",
52
+ "test/test_local_files.rb"
53
+ ]
54
+
55
+ if s.respond_to? :specification_version then
56
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
57
+ s.specification_version = 3
58
+
59
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
60
+ s.add_runtime_dependency(%q<capistrano>, [">= 2.0"])
61
+ s.add_runtime_dependency(%q<archive-tar-minitar>, [">= 0.5"])
62
+ else
63
+ s.add_dependency(%q<capistrano>, [">= 2.0"])
64
+ s.add_dependency(%q<archive-tar-minitar>, [">= 0.5"])
65
+ end
66
+ else
67
+ s.add_dependency(%q<capistrano>, [">= 2.0"])
68
+ s.add_dependency(%q<archive-tar-minitar>, [">= 0.5"])
69
+ end
70
+ end
71
+
@@ -0,0 +1,67 @@
1
+ require 'capistrano/recipes/deploy/strategy/base'
2
+ require 'tempfile'
3
+
4
+ module Capistrano
5
+ module Deploy
6
+ module Strategy
7
+ class LocalCopy < Base
8
+
9
+ def deploy!
10
+ logger.debug "compressing local copy to #{filename}"
11
+ local_files.tar_cz filename, '.', :verbose=>false do |item|
12
+ if (item=item[2..-1]) and item.length > 0
13
+ name = File.basename item
14
+ name == "." || name == ".." || copy_prune.include?(name) ||
15
+ copy_exclude.any?{|p| File.fnmatch(p, item, File::FNM_DOTMATCH)} ||
16
+ (! File.directory?(item) && copy_directory_only.any?{|p| item[0,p.length+1]==p+'/'})
17
+ end
18
+ end
19
+ files.upload filename, remote_filename
20
+ begin
21
+ files.mkdir_p configuration[:release_path]
22
+ files.tar_xz remote_filename, :chdir=>configuration[:release_path], :verbose=>true
23
+ ensure
24
+ files.rm_f remote_filename rescue nil
25
+ end
26
+ ensure
27
+ FileUtils.rm filename rescue nil
28
+ FileUtils.rm_rf destination rescue nil
29
+ end
30
+
31
+ def check!
32
+ end
33
+
34
+ private
35
+
36
+ def local_copy_dir
37
+ @local_copy_dir ||= configuration.fetch(:local_copy_dir, '.')
38
+ end
39
+
40
+ def copy_exclude
41
+ @copy_exclude ||= Array(configuration.fetch(:copy_exclude, %w(.*)))
42
+ end
43
+
44
+ def copy_prune
45
+ @copy_prune ||= Array(configuration.fetch(:copy_exclude, %w(.svn .git)))
46
+ end
47
+
48
+ def copy_directory_only
49
+ @copy_directory_only ||= Array(configuration.fetch(:copy_directory_only, %w(log tmp)))
50
+ end
51
+
52
+ def filename
53
+ @filename ||= File.join(Dir.tmpdir, "#{configuration.fetch(:application, 'local_copy')}.tgz")
54
+ end
55
+
56
+ def remote_dir
57
+ @remote_dir ||= configuration[:copy_remote_dir] || "/tmp"
58
+ end
59
+
60
+ def remote_filename
61
+ @remote_filename ||= File.join(remote_dir, File.basename(filename))
62
+ end
63
+ end
64
+
65
+ end
66
+ end
67
+ end
@@ -3,6 +3,10 @@ unless Capistrano::Configuration.respond_to?(:instance)
3
3
  end
4
4
  require 'capistrano'
5
5
 
6
+ unless Symbol.method_defined? :intern
7
+ Symbol.class_eval { def intern; self end }
8
+ end
9
+
6
10
  module Capsaicin; end
7
11
 
8
12
  require File.join(File.dirname(__FILE__), %w(capsaicin sys))
@@ -47,15 +47,13 @@ module Capsaicin
47
47
  end
48
48
 
49
49
  def tar_c(dest, src, options={}, &filter)
50
- logger and
51
- logger.trace "tar -cf #{dest} " + Array(src).map { |s| s.gsub ' ', '\\ ' }.join(' ')
50
+ logger and logger.trace "tar -cf #{dest} #{Array(src).map{|s| s.gsub ' ', '\\ '}.join(' ')}"
52
51
  _tar File.open(dest, 'wb'), src, options, &filter
53
52
  end
54
53
 
55
54
  def tar_cz(dest, src, options={}, &filter)
56
55
  require 'zlib' unless defined? Zlib::GzipWriter
57
- logger and
58
- logger.trace "tar -czf #{dest} " + Array(src).map { |s| s.gsub ' ', '\\ ' }.join(' ')
56
+ logger and logger.trace "tar -czf #{dest} #{Array(src).map{|s| s.gsub ' ', '\\ ' }.join(' ')}"
59
57
  _tar Zlib::GzipWriter.new(File.open(dest, 'wb')), src, options, &filter
60
58
  end
61
59
 
@@ -72,13 +70,13 @@ module Capsaicin
72
70
 
73
71
  def tar_x(src, options={}, &block)
74
72
  logger and logger.trace "tar -xf #{src}"
75
- _untar File.open(src, 'wb'), options, &block
73
+ _untar File.open(src, 'wb'), options[:chdir]||'.', options, &block
76
74
  end
77
75
 
78
76
  def tar_xz(src, options={}, &block)
79
77
  require 'zlib' unless defined? Zlib::GzipWriter
80
78
  logger and logger.trace "tar -xzf #{src}"
81
- _untar Zlib::GzipReader.new(File.open(src, 'rb')), options, &block
79
+ _untar Zlib::GzipReader.new(File.open(src, 'rb')), options[:chdir]||'.', options, &block
82
80
  end
83
81
 
84
82
  private
@@ -138,19 +138,19 @@ module Capsaicin
138
138
  _r 'tar -cjf', Array(src).unshift(dest)
139
139
  end
140
140
 
141
- def tar_x(dest, options={}, &filter)
141
+ def tar_x(src, options={}, &filter)
142
142
  filter and abort "tar_x: remote mode does not support a filtering proc"
143
- _r 'tar -xf', [dest]
143
+ _r "tar #{'-C '+_q(options[:chdir]) if options[:chdir]} -xf", [src]
144
144
  end
145
145
 
146
- def tar_xz(dest, options={}, &filter)
146
+ def tar_xz(src, options={}, &filter)
147
147
  filter and abort "tar_xz: remote mode does not support a filtering proc"
148
- _r 'tar -xzf', [dest]
148
+ _r "tar #{'-C '+_q(options[:chdir]) if options[:chdir]} -xzf", [src]
149
149
  end
150
150
 
151
- def tar_xj(dest, src, options={}, &filter)
151
+ def tar_xj(src, options={}, &filter)
152
152
  filter and abort "tar_xj: remote mode does not support a filtering proc"
153
- _r 'tar -xjf', Array(src).unshift(dest)
153
+ _r "tar #{'-C '+_q(options[:chdir]) if options[:chdir]} -xjf", [src]
154
154
  end
155
155
 
156
156
  def tar_t(src, options={}, &filter)
@@ -168,7 +168,6 @@ module Capsaicin
168
168
  _t 'tar -tjf', [src]
169
169
  end
170
170
 
171
-
172
171
  private
173
172
 
174
173
  def _t(cmd, args=nil, min=nil)
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capsaicin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 8
9
+ version: 0.1.8
5
10
  platform: ruby
6
11
  authors:
7
12
  - Joe Khoobyar
@@ -9,29 +14,35 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-06-15 00:00:00 -04:00
17
+ date: 2010-05-03 00:00:00 -04:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: capistrano
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 2
29
+ - 0
23
30
  version: "2.0"
24
- version:
31
+ type: :runtime
32
+ version_requirements: *id001
25
33
  - !ruby/object:Gem::Dependency
26
34
  name: archive-tar-minitar
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
30
37
  requirements:
31
38
  - - ">="
32
39
  - !ruby/object:Gem::Version
40
+ segments:
41
+ - 0
42
+ - 5
33
43
  version: "0.5"
34
- version:
44
+ type: :runtime
45
+ version_requirements: *id002
35
46
  description: Spicy capistrano extensions for various needs
36
47
  email: joe@ankhcraft.com
37
48
  executables: []
@@ -42,10 +53,13 @@ extra_rdoc_files:
42
53
  - LICENSE
43
54
  - README.rdoc
44
55
  files:
56
+ - .gitignore
45
57
  - LICENSE
46
58
  - README.rdoc
47
59
  - Rakefile
48
60
  - VERSION.yml
61
+ - capsaicin.gemspec
62
+ - lib/capistrano/recipes/deploy/strategy/local_copy.rb
49
63
  - lib/capsaicin.rb
50
64
  - lib/capsaicin/bundle.rb
51
65
  - lib/capsaicin/files.rb
@@ -75,18 +89,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
75
89
  requirements:
76
90
  - - ">="
77
91
  - !ruby/object:Gem::Version
92
+ segments:
93
+ - 0
78
94
  version: "0"
79
- version:
80
95
  required_rubygems_version: !ruby/object:Gem::Requirement
81
96
  requirements:
82
97
  - - ">="
83
98
  - !ruby/object:Gem::Version
99
+ segments:
100
+ - 0
84
101
  version: "0"
85
- version:
86
102
  requirements: []
87
103
 
88
104
  rubyforge_project: capsaicin
89
- rubygems_version: 1.3.4
105
+ rubygems_version: 1.3.6
90
106
  signing_key:
91
107
  specification_version: 3
92
108
  summary: Joe Khoobyar's spicy capistrano extensions