emplace 0.1.2 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -3
- data/lib/emplace.rb +58 -24
- data/test/emplace-test.rb +38 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 65d254de88cfa79c37429e9ed5265604ae0c13f0
|
4
|
+
data.tar.gz: dfd2d00dcbcc61ceefff90a47122ffff0e485251
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6cace8085c721261221cc229027048048061c52c2a1de5cb758ae08ba2f547006772d67a296af1bc384781aa99854d0e71f6d060f62ba883f938b70132d3a4a0
|
7
|
+
data.tar.gz: 63002826a5a33275b78ef9c4ad6461bb3fd04b561dc5bc639033b266b3e8d6e9c6204deff837d0ee530b7398769d033e5dbedab9f8fbac0355dab1fa9cbefc13
|
data/README.md
CHANGED
@@ -21,9 +21,11 @@ Or install it yourself as:
|
|
21
21
|
## Usage
|
22
22
|
|
23
23
|
require 'emplace'
|
24
|
-
Emplace.
|
25
|
-
|
26
|
-
|
24
|
+
project = Emplace.new 'project-name'
|
25
|
+
project.cmake!
|
26
|
+
project.build!
|
27
|
+
project.test!
|
28
|
+
project.package!
|
27
29
|
|
28
30
|
## Contributing
|
29
31
|
|
data/lib/emplace.rb
CHANGED
@@ -1,14 +1,56 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
1
3
|
module Emplace
|
2
4
|
|
5
|
+
class Project
|
6
|
+
def initialize(name, impl = Emplace.load_env)
|
7
|
+
@name = name
|
8
|
+
@impl = impl
|
9
|
+
end
|
10
|
+
def clean!
|
11
|
+
@impl.clean
|
12
|
+
end
|
13
|
+
def cmake!
|
14
|
+
@impl.cmake @name
|
15
|
+
end
|
16
|
+
def build!
|
17
|
+
@impl.build
|
18
|
+
end
|
19
|
+
def test!
|
20
|
+
@impl.test
|
21
|
+
end
|
22
|
+
def package!
|
23
|
+
@impl.package @name
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
3
27
|
class CmakeBuild
|
4
|
-
def
|
5
|
-
|
28
|
+
def build_dir
|
29
|
+
'build'
|
30
|
+
end
|
31
|
+
def dist_dir
|
32
|
+
'dist'
|
33
|
+
end
|
34
|
+
def install_dir(name)
|
35
|
+
"#{dist_dir}/#{name}"
|
36
|
+
end
|
37
|
+
def cmake(name)
|
38
|
+
sh "cmake . -B#{build_dir} -DCMAKE_INSTALL_PREFIX=#{install_dir(name)} -G \"#{cmake_generator}\""
|
6
39
|
end
|
7
40
|
def build
|
8
|
-
sh "cmake --build
|
41
|
+
sh "cmake --build #{build_dir} --target install"
|
42
|
+
end
|
43
|
+
def test
|
44
|
+
sh "ctest --verbose", build_dir
|
9
45
|
end
|
10
|
-
def
|
11
|
-
|
46
|
+
def clean
|
47
|
+
FileUtils.rm_rf build_dir
|
48
|
+
FileUtils.rm_rf dist_dir
|
49
|
+
end
|
50
|
+
def sh(cmd, dir = '.')
|
51
|
+
Dir.chdir(dir) {
|
52
|
+
raise $? unless system cmd
|
53
|
+
}
|
12
54
|
end
|
13
55
|
end
|
14
56
|
|
@@ -23,7 +65,7 @@ module Emplace
|
|
23
65
|
"#{name}-#{system_name}.tgz"
|
24
66
|
end
|
25
67
|
def package(name)
|
26
|
-
sh "tar czf #{package_name(name)} #{name}"
|
68
|
+
sh "tar czf #{package_name(name)} #{name}", dist_dir
|
27
69
|
end
|
28
70
|
end
|
29
71
|
|
@@ -84,19 +126,18 @@ module Emplace
|
|
84
126
|
end
|
85
127
|
def build
|
86
128
|
if cfg = ENV['CONFIGURATION']
|
87
|
-
sh "cmake --build
|
129
|
+
sh "cmake --build #{build_dir} --target install --config #{cfg}"
|
88
130
|
else
|
89
131
|
super
|
90
132
|
end
|
91
133
|
end
|
92
134
|
def package(name)
|
93
|
-
sh "7z a #{package_name(name)} #{name}"
|
135
|
+
sh "7z a #{package_name(name)} #{name}", dist_dir
|
94
136
|
end
|
95
137
|
end
|
96
138
|
|
97
|
-
private
|
98
139
|
def self.load_env
|
99
|
-
|
140
|
+
case RUBY_PLATFORM
|
100
141
|
when /mswin|mingw/
|
101
142
|
Windows
|
102
143
|
when /darwin/
|
@@ -105,21 +146,14 @@ module Emplace
|
|
105
146
|
Linux
|
106
147
|
else
|
107
148
|
Unix
|
108
|
-
end
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
platform.new.tap {|impl|
|
117
|
-
(impl.methods - Object.methods).each {|m|
|
118
|
-
define_singleton_method(m) {|*args,&block| impl.method(m).call(*args, &block) }
|
119
|
-
}
|
120
|
-
}
|
149
|
+
end.tap {|platform|
|
150
|
+
if ENV['TRAVIS']
|
151
|
+
platform.send(:include, Travis)
|
152
|
+
elsif ENV['APPVEYOR']
|
153
|
+
platform.send(:include, AppVeyor)
|
154
|
+
end
|
155
|
+
}.new
|
121
156
|
end
|
122
157
|
|
123
|
-
IMPL = load_env
|
124
158
|
end
|
125
159
|
|
data/test/emplace-test.rb
CHANGED
@@ -22,18 +22,56 @@ class TestEmplace < Test::Unit::TestCase
|
|
22
22
|
assert_equal 'Visual Studio 14 Win64', AppVeyor.new.cmake_generator
|
23
23
|
end
|
24
24
|
|
25
|
+
def testProjectTravis
|
26
|
+
travis = Travis.new
|
27
|
+
project = Emplace::Project.new 'foo', travis
|
28
|
+
project.cmake!
|
29
|
+
project.build!
|
30
|
+
project.test!
|
31
|
+
project.package!
|
32
|
+
assert_equal [
|
33
|
+
'cmake . -Bbuild -DCMAKE_INSTALL_PREFIX=dist/foo -G "Unix Makefiles"',
|
34
|
+
'cmake --build build --target install',
|
35
|
+
'ctest --verbose',
|
36
|
+
'tar czf foo-linux-x86_64-cc.tgz foo'
|
37
|
+
], travis.commands
|
38
|
+
end
|
39
|
+
|
40
|
+
def testProjectAppVeyor
|
41
|
+
appveyor = AppVeyor.new
|
42
|
+
project = Emplace::Project.new 'foo', appveyor
|
43
|
+
project.cmake!
|
44
|
+
project.build!
|
45
|
+
project.test!
|
46
|
+
project.package!
|
47
|
+
assert_equal [
|
48
|
+
'cmake . -Bbuild -DCMAKE_INSTALL_PREFIX=dist/foo -G "Visual Studio 14 Win64"',
|
49
|
+
'cmake --build build --target install --config CFG',
|
50
|
+
'ctest --verbose',
|
51
|
+
'7z a foo-win-x64-msvc-cfg.zip foo'
|
52
|
+
], appveyor.commands
|
53
|
+
end
|
54
|
+
|
25
55
|
class Travis < Emplace::Linux
|
56
|
+
attr_reader :commands
|
26
57
|
include Emplace::Travis
|
27
58
|
def arch
|
28
59
|
'x86_64'
|
29
60
|
end
|
61
|
+
def sh(cmd, dir='')
|
62
|
+
(@commands ||= []) << cmd
|
63
|
+
end
|
30
64
|
end
|
31
65
|
|
32
66
|
class AppVeyor < Emplace::Windows
|
67
|
+
attr_reader :commands
|
33
68
|
include Emplace::AppVeyor
|
34
69
|
def arch
|
35
70
|
'x64'
|
36
71
|
end
|
72
|
+
def sh(cmd, dir='')
|
73
|
+
(@commands ||= []) << cmd
|
74
|
+
end
|
37
75
|
end
|
38
76
|
|
39
77
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emplace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Calhoun
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Keeps settings for running cmake builds on Travis-CI and AppVeyor.
|
14
14
|
email:
|