emplace 0.1.2 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -3
  3. data/lib/emplace.rb +58 -24
  4. data/test/emplace-test.rb +38 -0
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c8158bcce017c1025b1e02761b723075378c74da
4
- data.tar.gz: d06d1fae6b5e89aaa3331e2e1222a0d1a23ccb0b
3
+ metadata.gz: 65d254de88cfa79c37429e9ed5265604ae0c13f0
4
+ data.tar.gz: dfd2d00dcbcc61ceefff90a47122ffff0e485251
5
5
  SHA512:
6
- metadata.gz: 260be5c8b0783295e93943605d2a2b8719e643a6844255ee0f65898bdaf53409d029775d6470cd9a9477f890bf24a2a804081cf6a6b79a81d5508b00f7acd7c7
7
- data.tar.gz: b8013900af59d44da9635c75bc07aa9314eb86d07604003b29575d2db874464d88d6255ea896e9d8541902592809294ef4bef2f5c7ecbe086448d0a4569fa5c1
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.cmake
25
- Emplace.build
26
- Emplace.package('package-name')
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 cmake
5
- sh "cmake -G \"#{cmake_generator}\" ."
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 . --target install"
41
+ sh "cmake --build #{build_dir} --target install"
42
+ end
43
+ def test
44
+ sh "ctest --verbose", build_dir
9
45
  end
10
- def sh(cmd)
11
- raise $? unless system cmd
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 . --target install --config #{cfg}"
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
- platform = case RUBY_PLATFORM
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
- if ENV['TRAVIS']
111
- platform.send(:include, Travis)
112
- elsif ENV['APPVEYOR']
113
- platform.send(:include, AppVeyor)
114
- end
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.2
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-16 00:00:00.000000000 Z
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: