emplace 0.1.2 → 0.1.4

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 (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: