burke 0.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/lib/burke.rb +153 -0
- metadata +75 -0
data/lib/burke.rb
ADDED
@@ -0,0 +1,153 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rubygems/installer'
|
3
|
+
require 'rake'
|
4
|
+
require 'rake/tasklib'
|
5
|
+
|
6
|
+
desc "Build gems for all targets"
|
7
|
+
task :gems
|
8
|
+
|
9
|
+
module Burke
|
10
|
+
VERSION = '0.1.0'
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def base_spec
|
14
|
+
@base_spec ||= Gem::Specification.new
|
15
|
+
yield @base_spec if block_given?
|
16
|
+
@base_spec
|
17
|
+
end
|
18
|
+
|
19
|
+
def package_task *args, &block
|
20
|
+
Rake::GemPackageTask.new *args, &block
|
21
|
+
end
|
22
|
+
|
23
|
+
def install_task *args, &block
|
24
|
+
Rake::GemInstallTask.new *args, &block
|
25
|
+
end
|
26
|
+
|
27
|
+
def yard_task *args, &block
|
28
|
+
begin
|
29
|
+
require 'yard'
|
30
|
+
YARD::Rake::YardocTask.new *args, &block
|
31
|
+
rescue LoadError
|
32
|
+
puts "Couldn't load Yard: generation of Yard docs is disabled"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def spec_task *args, &block
|
37
|
+
begin
|
38
|
+
require 'spec/rake/spectask'
|
39
|
+
Spec::Rake::SpecTask.new *args, &block
|
40
|
+
rescue LoadError
|
41
|
+
puts "Couldn't load RSpec: running of RSpec examples is disabled"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def rcov_verify_task *args, &block
|
46
|
+
begin
|
47
|
+
require 'spec/rake/verify_rcov'
|
48
|
+
RCov::VerifyTask.new *args, &block
|
49
|
+
rescue LoadError
|
50
|
+
puts "Couldn't load RSpec and RCov: verification of code coverage with RCov is disabled"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
module Rake
|
56
|
+
class GemPackageTask < ::Rake::TaskLib
|
57
|
+
attr_reader :spec, :name
|
58
|
+
|
59
|
+
TASKS = {}
|
60
|
+
|
61
|
+
@@package_dir = 'pkg'
|
62
|
+
|
63
|
+
def initialize plaf=Gem::Platform::RUBY
|
64
|
+
@spec = Burke.base_spec.dup
|
65
|
+
@spec.platform = Gem::Platform.new plaf
|
66
|
+
@name = "gem:#{@spec.platform}"
|
67
|
+
yield self if block_given?
|
68
|
+
define
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.package_dir= path
|
72
|
+
@@package_dir = path
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.package_dir
|
76
|
+
@@package_dir
|
77
|
+
end
|
78
|
+
|
79
|
+
def before &block
|
80
|
+
@before = block
|
81
|
+
end
|
82
|
+
|
83
|
+
def extend_spec &block
|
84
|
+
@extend_spec = block
|
85
|
+
end
|
86
|
+
|
87
|
+
def after &block
|
88
|
+
@after = block
|
89
|
+
end
|
90
|
+
|
91
|
+
def gem_file
|
92
|
+
"#{spec.full_name}.gem"
|
93
|
+
end
|
94
|
+
|
95
|
+
private
|
96
|
+
def define
|
97
|
+
task :gems => name
|
98
|
+
|
99
|
+
unless ::Rake.application.last_comment
|
100
|
+
desc "Build gem for target '#{@spec.platform}'"
|
101
|
+
end
|
102
|
+
task(name) { run_task }
|
103
|
+
TASKS[name] = self
|
104
|
+
|
105
|
+
if @spec.platform == Gem::Platform::RUBY
|
106
|
+
desc "Build gem for target '#{@spec.platform}'"
|
107
|
+
task(:gem) { run_task }
|
108
|
+
end
|
109
|
+
|
110
|
+
self
|
111
|
+
end
|
112
|
+
|
113
|
+
def run_task
|
114
|
+
@before.call unless @before.nil?
|
115
|
+
@extend_spec.call spec unless @extend_spec.nil?
|
116
|
+
builder = Gem::Builder.new(@spec)
|
117
|
+
builder.build
|
118
|
+
verbose true do
|
119
|
+
mkdir @@package_dir unless File.exists? @@package_dir
|
120
|
+
mv gem_file, File.join(@@package_dir, gem_file)
|
121
|
+
end
|
122
|
+
@after.call unless @after.nil?
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
class GemInstallTask < ::Rake::TaskLib
|
127
|
+
attr_reader :name
|
128
|
+
|
129
|
+
def initialize
|
130
|
+
@name = "install"
|
131
|
+
define
|
132
|
+
end
|
133
|
+
|
134
|
+
private
|
135
|
+
def define
|
136
|
+
platform = Gem::Platform.new(RUBY_PLATFORM).to_s
|
137
|
+
t = nil
|
138
|
+
dep = nil
|
139
|
+
unless t = GemPackageTask::TASKS["gem:#{platform}"]
|
140
|
+
t = GemPackageTask::TASKS["gem:ruby"]
|
141
|
+
end
|
142
|
+
|
143
|
+
desc "Build and install gem for this platform"
|
144
|
+
task name => [t.name] do
|
145
|
+
Gem::Installer.new(File.join(GemPackageTask.package_dir, t.gem_file)).install
|
146
|
+
end
|
147
|
+
|
148
|
+
self
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
metadata
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: burke
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Aiden Nibali
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-08-22 00:00:00 +10:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rake
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
- 8
|
30
|
+
- 7
|
31
|
+
version: 0.8.7
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
description: Helper for creating nice and clean Rake files
|
35
|
+
email: dismal.denizen@gmail.com
|
36
|
+
executables: []
|
37
|
+
|
38
|
+
extensions: []
|
39
|
+
|
40
|
+
extra_rdoc_files: []
|
41
|
+
|
42
|
+
files:
|
43
|
+
- lib/burke.rb
|
44
|
+
has_rdoc: true
|
45
|
+
homepage: http://github.com/dismaldenizen/burke
|
46
|
+
licenses: []
|
47
|
+
|
48
|
+
post_install_message:
|
49
|
+
rdoc_options: []
|
50
|
+
|
51
|
+
require_paths:
|
52
|
+
- lib
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
segments:
|
65
|
+
- 0
|
66
|
+
version: "0"
|
67
|
+
requirements: []
|
68
|
+
|
69
|
+
rubyforge_project:
|
70
|
+
rubygems_version: 1.3.6
|
71
|
+
signing_key:
|
72
|
+
specification_version: 3
|
73
|
+
summary: Helper for creating nice and clean Rake files
|
74
|
+
test_files: []
|
75
|
+
|