rake_monkey 1.0
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.
- data/COPYING +1 -0
- data/LICENSE +1 -0
- data/README +50 -0
- data/Rakefile +37 -0
- data/lib/rake_monkey.rb +30 -0
- data/resources/defaults.yaml +2 -0
- data/tools/rakehelp.rb +106 -0
- metadata +60 -0
data/COPYING
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
No copying restrictions/license given.
|
data/LICENSE
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
No license given.
|
data/README
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
== Rake_monkey GemPlugin
|
|
2
|
+
|
|
3
|
+
This gem monkey patches the Rake::TaskManager mixin.
|
|
4
|
+
It allows the deletion and redefinition of existing Rake
|
|
5
|
+
tasks.
|
|
6
|
+
|
|
7
|
+
== Install
|
|
8
|
+
|
|
9
|
+
Include the gem as an svn:external under vendor/gems/.
|
|
10
|
+
|
|
11
|
+
or
|
|
12
|
+
|
|
13
|
+
Install as a gem and require in your application.
|
|
14
|
+
|
|
15
|
+
== Description
|
|
16
|
+
|
|
17
|
+
Rake tasks cannot be overridden, they are concatenated.
|
|
18
|
+
|
|
19
|
+
desc "first task"
|
|
20
|
+
task :override_me do
|
|
21
|
+
puts "first task"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
desc "override override_me"
|
|
25
|
+
task :override_me do
|
|
26
|
+
puts "override first task"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
john@emopop:~/svn/topics/ > rake override_me
|
|
30
|
+
(in /Users/john/svn/topics)
|
|
31
|
+
first task
|
|
32
|
+
override first task
|
|
33
|
+
|
|
34
|
+
== Usage
|
|
35
|
+
|
|
36
|
+
To redefine an existing task:
|
|
37
|
+
|
|
38
|
+
desc "Override an existing task"
|
|
39
|
+
redefine_task :existing_task do
|
|
40
|
+
...
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
To delete an existing task:
|
|
44
|
+
|
|
45
|
+
delete_task :existing_task
|
|
46
|
+
|
|
47
|
+
== Contact
|
|
48
|
+
|
|
49
|
+
Name: John Dewey
|
|
50
|
+
Email: john (at) dewey.cx
|
data/Rakefile
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'rake'
|
|
2
|
+
require 'rake/testtask'
|
|
3
|
+
require 'rake/clean'
|
|
4
|
+
require 'rake/gempackagetask'
|
|
5
|
+
require 'rake/rdoctask'
|
|
6
|
+
require 'tools/rakehelp'
|
|
7
|
+
require 'fileutils'
|
|
8
|
+
include FileUtils
|
|
9
|
+
|
|
10
|
+
setup_tests
|
|
11
|
+
setup_clean ["pkg", "lib/*.bundle", "*.gem", ".config"]
|
|
12
|
+
|
|
13
|
+
setup_rdoc ['README', 'LICENSE', 'COPYING', 'lib/**/*.rb', 'doc/**/*.rdoc']
|
|
14
|
+
|
|
15
|
+
desc "Does a full compile, test run"
|
|
16
|
+
task :default => [:test, :package]
|
|
17
|
+
|
|
18
|
+
version="1.0"
|
|
19
|
+
name="rake_monkey"
|
|
20
|
+
|
|
21
|
+
setup_gem(name, version) do |spec|
|
|
22
|
+
spec.summary = "The rake_monkey GemPlugin"
|
|
23
|
+
spec.description = spec.summary
|
|
24
|
+
spec.author = "John Dewey <john@dewey.cx>"
|
|
25
|
+
spec.add_dependency('gem_plugin', '>= 0.2.2')
|
|
26
|
+
spec.files += Dir.glob("resources/**/*")
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
task :install => [:test, :package] do
|
|
31
|
+
sh %{sudo gem install pkg/#{name}-#{version}.gem}
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
task :uninstall => [:clean] do
|
|
35
|
+
sh %{sudo gem uninstall #{name}}
|
|
36
|
+
end
|
|
37
|
+
|
data/lib/rake_monkey.rb
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
##
|
|
2
|
+
# Monkey patching Rake.
|
|
3
|
+
module Rake
|
|
4
|
+
module TaskManager
|
|
5
|
+
##
|
|
6
|
+
# Clear all existing actions for the given task, then set the action.
|
|
7
|
+
def redefine_task(task_class, args, &block)
|
|
8
|
+
task_name, deps = resolve_args(args)
|
|
9
|
+
@tasks.delete(task_name.to_s)
|
|
10
|
+
define_task(task_class, args, &block)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def delete_task(task_class, args)
|
|
14
|
+
task_name, deps = resolve_args(args)
|
|
15
|
+
@tasks.delete(task_name.to_s)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
##
|
|
21
|
+
# Method which redefines a given rake task.
|
|
22
|
+
def redefine_task(args, &block)
|
|
23
|
+
Rake.application.redefine_task(Rake::Task, args, &block)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
##
|
|
27
|
+
# Method which deletes a given rake task.
|
|
28
|
+
def delete_task(args)
|
|
29
|
+
Rake.application.delete_task(Rake::Task, args)
|
|
30
|
+
end
|
data/tools/rakehelp.rb
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
|
|
2
|
+
def make(makedir)
|
|
3
|
+
Dir.chdir(makedir) do
|
|
4
|
+
sh(PLATFORM =~ /win32/ ? 'nmake' : 'make')
|
|
5
|
+
end
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def extconf(dir)
|
|
10
|
+
Dir.chdir(dir) do ruby "extconf.rb" end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def setup_tests
|
|
15
|
+
Rake::TestTask.new do |t|
|
|
16
|
+
t.libs << "test"
|
|
17
|
+
t.test_files = FileList['test/test*.rb']
|
|
18
|
+
t.verbose = true
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def setup_clean otherfiles
|
|
24
|
+
files = ['build/*', '**/*.o', '**/*.so', '**/*.a', 'lib/*-*', '**/*.log'] + otherfiles
|
|
25
|
+
CLEAN.include(files)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def setup_rdoc files
|
|
30
|
+
Rake::RDocTask.new do |rdoc|
|
|
31
|
+
rdoc.rdoc_dir = 'doc/rdoc'
|
|
32
|
+
rdoc.options << '--line-numbers'
|
|
33
|
+
rdoc.rdoc_files.add(files)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def setup_extension(dir, extension)
|
|
39
|
+
ext = "ext/#{dir}"
|
|
40
|
+
ext_so = "#{ext}/#{extension}.#{Config::CONFIG['DLEXT']}"
|
|
41
|
+
ext_files = FileList[
|
|
42
|
+
"#{ext}/*.c",
|
|
43
|
+
"#{ext}/*.h",
|
|
44
|
+
"#{ext}/extconf.rb",
|
|
45
|
+
"#{ext}/Makefile",
|
|
46
|
+
"lib"
|
|
47
|
+
]
|
|
48
|
+
|
|
49
|
+
task "lib" do
|
|
50
|
+
directory "lib"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
desc "Builds just the #{extension} extension"
|
|
54
|
+
task extension.to_sym => ["#{ext}/Makefile", ext_so ]
|
|
55
|
+
|
|
56
|
+
file "#{ext}/Makefile" => ["#{ext}/extconf.rb"] do
|
|
57
|
+
extconf "#{ext}"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
file ext_so => ext_files do
|
|
61
|
+
make "#{ext}"
|
|
62
|
+
cp ext_so, "lib"
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def base_gem_spec(pkg_name, pkg_version)
|
|
68
|
+
pkg_version = pkg_version
|
|
69
|
+
pkg_name = pkg_name
|
|
70
|
+
pkg_file_name = "#{pkg_name}-#{pkg_version}"
|
|
71
|
+
Gem::Specification.new do |s|
|
|
72
|
+
s.name = pkg_name
|
|
73
|
+
s.version = pkg_version
|
|
74
|
+
s.platform = Gem::Platform::RUBY
|
|
75
|
+
s.has_rdoc = true
|
|
76
|
+
s.extra_rdoc_files = [ "README" ]
|
|
77
|
+
|
|
78
|
+
s.files = %w(COPYING LICENSE README Rakefile) +
|
|
79
|
+
Dir.glob("{bin,doc/rdoc,test,lib}/**/*") +
|
|
80
|
+
Dir.glob("ext/**/*.{h,c,rb}") +
|
|
81
|
+
Dir.glob("examples/**/*.rb") +
|
|
82
|
+
Dir.glob("tools/*.rb")
|
|
83
|
+
|
|
84
|
+
s.require_path = "lib"
|
|
85
|
+
s.extensions = FileList["ext/**/extconf.rb"].to_a
|
|
86
|
+
s.bindir = "bin"
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def setup_gem(pkg_name, pkg_version)
|
|
91
|
+
spec = base_gem_spec(pkg_name, pkg_version)
|
|
92
|
+
yield spec if block_given?
|
|
93
|
+
|
|
94
|
+
Rake::GemPackageTask.new(spec) do |p|
|
|
95
|
+
p.gem_spec = spec
|
|
96
|
+
# win32 chokes on this
|
|
97
|
+
p.need_tar = true if RUBY_PLATFORM !~ /mswin/
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def setup_win32_gem(pkg_name, pkg_version)
|
|
102
|
+
spec = base_gem_spec(pkg_name, pkg_version)
|
|
103
|
+
yield spec if block_given?
|
|
104
|
+
|
|
105
|
+
Gem::Builder.new(spec).build
|
|
106
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
rubygems_version: 0.9.4
|
|
3
|
+
specification_version: 1
|
|
4
|
+
name: rake_monkey
|
|
5
|
+
version: !ruby/object:Gem::Version
|
|
6
|
+
version: "1.0"
|
|
7
|
+
date: 2007-12-15 00:00:00 -08:00
|
|
8
|
+
summary: The rake_monkey GemPlugin
|
|
9
|
+
require_paths:
|
|
10
|
+
- lib
|
|
11
|
+
email:
|
|
12
|
+
homepage:
|
|
13
|
+
rubyforge_project:
|
|
14
|
+
description: The rake_monkey GemPlugin
|
|
15
|
+
autorequire:
|
|
16
|
+
default_executable:
|
|
17
|
+
bindir: bin
|
|
18
|
+
has_rdoc: true
|
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
|
20
|
+
requirements:
|
|
21
|
+
- - ">"
|
|
22
|
+
- !ruby/object:Gem::Version
|
|
23
|
+
version: 0.0.0
|
|
24
|
+
version:
|
|
25
|
+
platform: ruby
|
|
26
|
+
signing_key:
|
|
27
|
+
cert_chain:
|
|
28
|
+
post_install_message:
|
|
29
|
+
authors:
|
|
30
|
+
- John Dewey <john@dewey.cx>
|
|
31
|
+
files:
|
|
32
|
+
- COPYING
|
|
33
|
+
- LICENSE
|
|
34
|
+
- README
|
|
35
|
+
- Rakefile
|
|
36
|
+
- lib/rake_monkey.rb
|
|
37
|
+
- tools/rakehelp.rb
|
|
38
|
+
- resources/defaults.yaml
|
|
39
|
+
test_files: []
|
|
40
|
+
|
|
41
|
+
rdoc_options: []
|
|
42
|
+
|
|
43
|
+
extra_rdoc_files:
|
|
44
|
+
- README
|
|
45
|
+
executables: []
|
|
46
|
+
|
|
47
|
+
extensions: []
|
|
48
|
+
|
|
49
|
+
requirements: []
|
|
50
|
+
|
|
51
|
+
dependencies:
|
|
52
|
+
- !ruby/object:Gem::Dependency
|
|
53
|
+
name: gem_plugin
|
|
54
|
+
version_requirement:
|
|
55
|
+
version_requirements: !ruby/object:Gem::Version::Requirement
|
|
56
|
+
requirements:
|
|
57
|
+
- - ">="
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: 0.2.2
|
|
60
|
+
version:
|