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.
Files changed (2) hide show
  1. data/lib/burke.rb +153 -0
  2. 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
+