metarake 0.1.0 → 0.1.1
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/examples/Rakefile.fpm_and_freight +21 -0
- data/lib/metarake/builder/rake.rb +8 -4
- data/lib/metarake/publisher/freight.rb +13 -12
- data/lib/metarake/version.rb +1 -1
- metadata +4 -10
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
|
3
|
+
# Use Rake inside subproject directories to build .deb packages, and
|
4
|
+
# freight (https://github.com/rcrowley/freight/) to publish them as an
|
5
|
+
# apt repository.
|
6
|
+
|
7
|
+
require 'metarake'
|
8
|
+
require 'metarake/publisher/freight'
|
9
|
+
|
10
|
+
class PackagesMetaTask < MetaRake::Task
|
11
|
+
include MetaRake::Builder::Rake
|
12
|
+
include MetaRake::Publisher::Freight
|
13
|
+
|
14
|
+
self.target_filter = /\.deb$/
|
15
|
+
self.rake_command = 'fakeroot bundle exec rake'
|
16
|
+
self.freight_distro = ENV['FREIGHT_DISTRO'] || 'squeeze'
|
17
|
+
self.freight_conf_path = ENV['FREIGHT_CONF'] || 'freight.conf'
|
18
|
+
self.freight_command = ENV['FREIGHT_COMMAND'] || 'freight'
|
19
|
+
end
|
20
|
+
|
21
|
+
task :default => PackagesMetaTask.discover!
|
@@ -11,9 +11,13 @@ module MetaRake::Builder::Rake
|
|
11
11
|
# @see Metarake::Builder::Rake#project_target?
|
12
12
|
attr_accessor :target_filter
|
13
13
|
|
14
|
+
# Glob to find projects' Rakefiles (default: `['*/Rakefile']`)
|
15
|
+
attr_accessor :rakefile_glob
|
16
|
+
|
14
17
|
# Projects are subdirectories that have a Rakefile.
|
15
18
|
def projects
|
16
|
-
|
19
|
+
glob = rakefile_glob || ['*/Rakefile']
|
20
|
+
Dir[*glob].map { |rakefile| File.dirname(rakefile) }
|
17
21
|
end
|
18
22
|
end
|
19
23
|
|
@@ -43,9 +47,9 @@ module MetaRake::Builder::Rake
|
|
43
47
|
def project_target?(target_name)
|
44
48
|
case self.class.target_filter
|
45
49
|
when nil ; true
|
46
|
-
when Regexp ;
|
47
|
-
when Proc ;
|
48
|
-
when String ;
|
50
|
+
when Regexp ; self.class.target_filter =~ target_name
|
51
|
+
when Proc ; self.class.target_filter.call(target_name)
|
52
|
+
when String ; target_name.include?(self.class.target_filter)
|
49
53
|
end
|
50
54
|
end
|
51
55
|
|
@@ -2,7 +2,7 @@ require 'mixlib/shellout'
|
|
2
2
|
|
3
3
|
# Metarake publisher that pushes `.deb` Debian packages to a Freight
|
4
4
|
# apt repository (https://github.com/rcrowley/freight).
|
5
|
-
module MetaRake::Publisher::
|
5
|
+
module MetaRake::Publisher::Freight
|
6
6
|
extend MetaRake::Magic
|
7
7
|
|
8
8
|
module ClassMethods
|
@@ -16,38 +16,39 @@ module MetaRake::Publisher::Directory
|
|
16
16
|
attr_accessor :freight_command
|
17
17
|
|
18
18
|
# @return [Hash] freight config, plus some random shell environment.
|
19
|
-
def
|
20
|
-
@
|
19
|
+
def freight_varlib
|
20
|
+
@freight_varlib ||=
|
21
21
|
begin
|
22
|
-
raise
|
23
|
-
conf = Mixlib::ShellOut.new('env', '-i', '/bin/sh', '-c', ". #{freight_conf_path} ;
|
22
|
+
raise "#{self}.freight_conf_path is not set" unless freight_conf_path
|
23
|
+
conf = Mixlib::ShellOut.new('env', '-i', '/bin/sh', '-c', ". #{freight_conf_path} ; echo $VARLIB")
|
24
24
|
conf.run_command.error!
|
25
|
-
|
25
|
+
conf.stdout.strip
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
# True if all project targets are added to the repository
|
31
31
|
def published?
|
32
|
-
raise
|
32
|
+
raise "#{self.class}.freight_distro is not set" unless self.class.freight_distro
|
33
33
|
self.targets.map { |tgt| File.exist?(File.join(
|
34
|
-
self.class.
|
34
|
+
self.class.freight_varlib, 'apt', self.class.freight_distro,
|
35
|
+
tgt)) }.all?
|
35
36
|
end
|
36
37
|
|
37
38
|
# Add files to the freight repo and publish them
|
38
39
|
def publish!
|
39
40
|
self.targets.each do |tgt|
|
40
|
-
sh *(
|
41
|
+
sh *(freight_command('add') + [
|
41
42
|
File.join(self.to_s, tgt),
|
42
43
|
"apt/#{self.class.freight_distro}" ])
|
43
44
|
end
|
44
|
-
sh *(
|
45
|
+
sh *(freight_command('cache'))
|
45
46
|
end
|
46
47
|
|
47
48
|
private
|
48
|
-
def freight_command(
|
49
|
+
def freight_command(subcmd)
|
49
50
|
cmd = self.class.freight_command || 'freight'
|
50
51
|
cmd = cmd.split if cmd.respond_to?(:split)
|
51
|
-
cmd + [
|
52
|
+
cmd + [ subcmd, '-c', self.class.freight_conf_path ]
|
52
53
|
end
|
53
54
|
end
|
data/lib/metarake/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metarake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -90,6 +90,7 @@ files:
|
|
90
90
|
- README.md
|
91
91
|
- Rakefile
|
92
92
|
- examples/Rakefile.basic
|
93
|
+
- examples/Rakefile.fpm_and_freight
|
93
94
|
- features/basic.feature
|
94
95
|
- features/files/Rakefile.one_two_three
|
95
96
|
- features/step_definitions/basic.rb
|
@@ -113,21 +114,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
113
114
|
- - ! '>='
|
114
115
|
- !ruby/object:Gem::Version
|
115
116
|
version: '0'
|
116
|
-
segments:
|
117
|
-
- 0
|
118
|
-
hash: 2320268432724083561
|
119
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
118
|
none: false
|
121
119
|
requirements:
|
122
120
|
- - ! '>='
|
123
121
|
- !ruby/object:Gem::Version
|
124
122
|
version: '0'
|
125
|
-
segments:
|
126
|
-
- 0
|
127
|
-
hash: 2320268432724083561
|
128
123
|
requirements: []
|
129
124
|
rubyforge_project:
|
130
|
-
rubygems_version: 1.8.
|
125
|
+
rubygems_version: 1.8.25
|
131
126
|
signing_key:
|
132
127
|
specification_version: 3
|
133
128
|
summary: Rake extension to manage multiple builds
|
@@ -136,4 +131,3 @@ test_files:
|
|
136
131
|
- features/files/Rakefile.one_two_three
|
137
132
|
- features/step_definitions/basic.rb
|
138
133
|
- features/support/env.rb
|
139
|
-
has_rdoc:
|