burke 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
+