build 1.0.10 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5a3384e47b1e9c9dc2419491b1d8bab595215c7f
4
- data.tar.gz: f1948300302a3260040a79df577fac46a1f98155
3
+ metadata.gz: c59b2e49cb23e01f0ce4729b592c3d91e84e0c7c
4
+ data.tar.gz: c9d16ef4c2b0d1d868d28857ddd7fdc6d0eb0f22
5
5
  SHA512:
6
- metadata.gz: 85801d07d2795ffa201e68cf0aa247dbb5915490848b89f11abc0b658a27aef4bde12fee5a6f2a2f0a59ab192b4bd745ab7df4e3f524debcca9d7b4e35acbcd1
7
- data.tar.gz: 6b16ab6afd93b4bc72eac04b960504395b44805f65b553b0ec11673ce03a73c97797997ed2ef0d245898f40b084451b5d11ca90f9549ebf99f104485ad5935c2
6
+ metadata.gz: d013e5ed507dc6ff3ed70c11f1d1fc2c3c4c4a7fa0997c2ee3ba72b89a2dd34f22fdc17dd7f046d6f0d2fd5764ae27798bc9896e866c8c8e8061623bd2ef86de
7
+ data.tar.gz: 546ca321ef164736ac482e346e518e278dd95cdd21d311fb84432508e2cb5d8719962621a0a87e8c4dfa57b12f1174635e91c066c8c9c2d7c84d13799c69a127
data/.gitignore CHANGED
@@ -20,3 +20,5 @@ tmp
20
20
  *.o
21
21
  *.a
22
22
  mkmf.log
23
+ .rspec_status
24
+
data/.rspec CHANGED
@@ -1,4 +1,4 @@
1
- --color
2
1
  --format documentation
3
2
  --backtrace
4
3
  --warnings
4
+ --require spec_helper
data/Rakefile CHANGED
@@ -1,8 +1,9 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
3
 
4
- RSpec::Core::RakeTask.new(:spec) do |task|
5
- task.rspec_opts = ["--require", "simplecov"] if ENV['COVERAGE']
6
- end
4
+ # Load all rake tasks:
5
+ import(*Dir.glob('tasks/**/*.rake'))
7
6
 
8
- task :default => :spec
7
+ RSpec::Core::RakeTask.new(:test)
8
+
9
+ task :default => :test
data/build.gemspec CHANGED
@@ -17,13 +17,13 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.required_ruby_version = '>= 2.0'
19
19
 
20
- spec.add_dependency "build-graph", "~> 1.0.5"
21
- spec.add_dependency "build-environment", "~> 1.1.3"
22
- spec.add_dependency "build-makefile", "~> 1.0.0"
20
+ spec.add_dependency "build-graph", "~> 1.0"
21
+ spec.add_dependency "build-environment", "~> 1.1"
22
+ spec.add_dependency "build-makefile", "~> 1.0"
23
23
 
24
24
  spec.add_dependency "graphviz"
25
25
 
26
26
  spec.add_development_dependency "bundler", "~> 1.3"
27
- spec.add_development_dependency "rspec", "~> 3.4.0"
27
+ spec.add_development_dependency "rspec", "~> 3.6"
28
28
  spec.add_development_dependency "rake"
29
29
  end
@@ -73,14 +73,14 @@ module Build
73
73
  end
74
74
 
75
75
  # Add a build target to the controller.
76
- def add_target(target, environment)
76
+ def add_target(target, environment, arguments = [])
77
77
  task_class = Rulebook.for(environment).with(Task, environment: environment, target: target)
78
78
 
79
79
  # Not sure if this is a good idea - makes debugging slightly easier.
80
80
  Object.const_set("TaskClassFor#{Name.from_target(target.name).identifier}_#{task_class.object_id}", task_class)
81
81
 
82
82
  # A target node will invoke the build callback on target.
83
- @nodes << TargetNode.new(task_class, target)
83
+ @nodes << TargetNode.new(task_class, target, arguments)
84
84
 
85
85
  return @nodes.last
86
86
  end
@@ -23,9 +23,10 @@ require 'build/graph'
23
23
 
24
24
  module Build
25
25
  class TargetNode < Graph::Node
26
- def initialize(task_class, target)
26
+ def initialize(task_class, target, arguments)
27
27
  @target = target
28
28
  @task_class = task_class
29
+ @arguments = arguments
29
30
 
30
31
  # Wait here, for all dependent targets, to be done:
31
32
  super(Files::List::NONE, :inherit, target)
@@ -38,7 +39,7 @@ module Build
38
39
  end
39
40
 
40
41
  def apply!(scope)
41
- scope.instance_exec(&@target.build)
42
+ scope.instance_exec(*@arguments, &@target.build)
42
43
  end
43
44
 
44
45
  def inspect
data/lib/build/task.rb CHANGED
@@ -80,21 +80,21 @@ module Build
80
80
  def touch(path)
81
81
  return unless wet?
82
82
 
83
- @logger.info(:shell){ ['touch', path] }
83
+ @logger.info(:shell) {['touch', path]}
84
84
  FileUtils.touch(path)
85
85
  end
86
86
 
87
87
  def cp(source_path, destination_path)
88
88
  return unless wet?
89
89
 
90
- @logger.info(:shell){ ['cp', source_path, destination_path]}
90
+ @logger.info(:shell) {['cp', source_path, destination_path]}
91
91
  FileUtils.copy(source_path, destination_path)
92
92
  end
93
93
 
94
94
  def rm(path)
95
95
  return unless wet?
96
96
 
97
- @logger.info(:shell){ ['rm -rf', path] }
97
+ @logger.info(:shell) {['rm -rf', path]}
98
98
  FileUtils.rm_rf(path)
99
99
  end
100
100
 
@@ -102,8 +102,7 @@ module Build
102
102
  return unless wet?
103
103
 
104
104
  unless File.exist?(path)
105
- @logger.info(:shell){ ['mkpath', path] }
106
-
105
+ @logger.info(:shell) {['mkpath', path]}
107
106
  FileUtils.mkpath(path)
108
107
  end
109
108
  end
@@ -111,11 +110,20 @@ module Build
111
110
  def install(source_path, destination_path)
112
111
  return unless wet?
113
112
 
114
- @logger.info(:shell){ ['install', source_path, destination_path]}
113
+ @logger.info(:shell) {['install', source_path, destination_path]}
115
114
  FileUtils.install(source_path, destination_path)
116
115
  end
117
116
 
118
- # Legacy FileUtils access, replaced with direct function calls.
117
+ def write(path, data, mode = "w")
118
+ return unless wet?
119
+
120
+ @logger.info(:shell) {["write", path, "#{data.size}bytes"]}
121
+ File.open(path, mode) do |file|
122
+ file.write(data)
123
+ end
124
+ end
125
+
126
+ # @deprecated Please use {#self} instead.
119
127
  def fs
120
128
  self
121
129
  end
data/lib/build/version.rb CHANGED
@@ -19,5 +19,5 @@
19
19
  # THE SOFTWARE.
20
20
 
21
21
  module Build
22
- VERSION = "1.0.10"
22
+ VERSION = "1.1"
23
23
  end
@@ -23,92 +23,92 @@
23
23
  require 'build/rulebook'
24
24
  require 'build/controller'
25
25
 
26
- module Build::ControllerSpec
27
- class Target
28
- def initialize(name)
29
- @name = name
30
- end
31
-
32
- attr :name
33
-
34
- def build(&block)
35
- @build = block if block_given?
26
+ RSpec.describe Build::Controller do
27
+ let(:target_class) do
28
+ Class.new do
29
+ def initialize(name)
30
+ @name = name
31
+ end
32
+
33
+ attr :name
36
34
 
37
- return @build
35
+ def build(&block)
36
+ @build = block if block_given?
37
+
38
+ return @build
39
+ end
38
40
  end
39
41
  end
40
42
 
41
- RSpec.describe Build::Controller do
42
- it "build graph should fail" do
43
- environment = Build::Environment.new do
44
- define Build::Rule, "make.file" do
45
- output :destination
46
-
47
- apply do |parameters|
48
- run! "exit -1"
49
- end
43
+ it "build graph should fail" do
44
+ environment = Build::Environment.new do
45
+ define Build::Rule, "make.file" do
46
+ output :destination
47
+
48
+ apply do |parameters|
49
+ run! "exit -1"
50
50
  end
51
51
  end
52
-
53
- target = Target.new('fail')
54
- target.build do
55
- foo_path = Build::Files::Path['foo']
56
- make destination: foo_path
57
- end
58
-
59
- controller = Build::Controller.new do |controller|
60
- controller.add_target(target, environment)
61
- end
62
-
63
- controller.logger.level = Logger::DEBUG
64
-
65
- controller.update
66
-
67
- expect(controller.failed?).to be_truthy
68
52
  end
69
53
 
70
- it "should execute the build graph" do
71
- environment = Build::Environment.new do
72
- define Build::Rule, "make.file" do
73
- output :destination
74
-
75
- apply do |parameters|
76
- touch parameters[:destination]
77
- end
78
- end
54
+ target = target_class.new('fail')
55
+ target.build do
56
+ foo_path = Build::Files::Path['foo']
57
+ make destination: foo_path
58
+ end
59
+
60
+ controller = Build::Controller.new do |controller|
61
+ controller.add_target(target, environment)
62
+ end
63
+
64
+ controller.logger.level = Logger::DEBUG
65
+
66
+ controller.update
67
+
68
+ expect(controller.failed?).to be_truthy
69
+ end
70
+
71
+ it "should execute the build graph" do
72
+ environment = Build::Environment.new do
73
+ define Build::Rule, "make.file" do
74
+ output :destination
79
75
 
80
- define Build::Rule, "copy.file" do
81
- input :source
82
- output :destination
83
-
84
- apply do |parameters|
85
- cp parameters[:source], parameters[:destination]
86
- end
76
+ apply do |parameters|
77
+ touch parameters[:destination]
87
78
  end
88
79
  end
89
80
 
90
- target = Target.new('copy')
91
- target.build do
92
- foo_path = Build::Files::Path['foo']
93
- bar_path = Build::Files::Path['bar']
81
+ define Build::Rule, "copy.file" do
82
+ input :source
83
+ output :destination
94
84
 
95
- make destination: foo_path
96
-
97
- copy source: foo_path, destination: bar_path
98
- end
99
-
100
- controller = Build::Controller.new do |controller|
101
- controller.add_target(target, environment)
85
+ apply do |parameters|
86
+ cp parameters[:source], parameters[:destination]
87
+ end
102
88
  end
89
+ end
90
+
91
+ target = target_class.new('copy')
92
+ target.build do
93
+ foo_path = Build::Files::Path['foo']
94
+ bar_path = Build::Files::Path['bar']
103
95
 
104
- expect(controller.nodes.size).to be 1
105
-
106
- controller.update
107
-
108
- expect(File).to be_exist('foo')
109
- expect(File).to be_exist('bar')
96
+ make destination: foo_path
110
97
 
111
- FileUtils.rm ['foo', 'bar']
98
+ copy source: foo_path, destination: bar_path
99
+ end
100
+
101
+ controller = Build::Controller.new do |controller|
102
+ controller.add_target(target, environment)
112
103
  end
104
+
105
+ expect(controller.nodes.size).to be 1
106
+
107
+ controller.update
108
+
109
+ expect(File).to be_exist('foo')
110
+ expect(File).to be_exist('bar')
111
+
112
+ FileUtils.rm ['foo', 'bar']
113
113
  end
114
114
  end
@@ -20,31 +20,29 @@
20
20
 
21
21
  require 'build/name'
22
22
 
23
- module Build::NameSpec
24
- RSpec.describe Build::Name do
25
- let(:name) {Build::Name.new('Foo Bar')}
26
- it "retains the original text" do
27
- expect(name.text).to be == 'Foo Bar'
28
- end
29
-
30
- it "should generate useful identifiers" do
31
- expect(name.identifier).to be == 'FooBar'
32
- end
33
-
34
- it "should generate useful target names" do
35
- expect(name.target).to be == 'foo-bar'
36
- end
37
-
38
- it "should generate useful macro names" do
39
- expect(name.macro).to be == 'FOO_BAR'
40
- end
41
-
42
- it "should generate useful macro names" do
43
- expect(name.macro).to be == 'FOO_BAR'
44
- end
45
-
46
- it "can be constructed from target name" do
47
- expect(Build::Name.from_target(name.target).text).to be == name.text
48
- end
23
+ RSpec.describe Build::Name do
24
+ let(:name) {Build::Name.new('Foo Bar')}
25
+ it "retains the original text" do
26
+ expect(name.text).to be == 'Foo Bar'
27
+ end
28
+
29
+ it "should generate useful identifiers" do
30
+ expect(name.identifier).to be == 'FooBar'
31
+ end
32
+
33
+ it "should generate useful target names" do
34
+ expect(name.target).to be == 'foo-bar'
35
+ end
36
+
37
+ it "should generate useful macro names" do
38
+ expect(name.macro).to be == 'FOO_BAR'
39
+ end
40
+
41
+ it "should generate useful macro names" do
42
+ expect(name.macro).to be == 'FOO_BAR'
43
+ end
44
+
45
+ it "can be constructed from target name" do
46
+ expect(Build::Name.from_target(name.target).text).to be == name.text
49
47
  end
50
48
  end
@@ -20,18 +20,16 @@
20
20
 
21
21
  require 'build/rule'
22
22
 
23
- module Build::RuleSpec
24
- describe Build::Rule do
25
- it "should validate input and output parameters" do
26
- rule = Build::Rule.new("compile", "cpp")
27
-
28
- rule.input :source
29
- rule.output :destination
30
-
31
- expect(rule.parameters.size).to be 2
32
-
33
- expect(rule.applicable?(source: 'foo', destination: 'bar')).to be_truthy
34
- expect(rule.applicable?(source: 'foo')).to be_falsey
35
- end
23
+ RSpec.describe Build::Rule do
24
+ it "should validate input and output parameters" do
25
+ rule = Build::Rule.new("compile", "cpp")
26
+
27
+ rule.input :source
28
+ rule.output :destination
29
+
30
+ expect(rule.parameters.size).to be 2
31
+
32
+ expect(rule.applicable?(source: 'foo', destination: 'bar')).to be_truthy
33
+ expect(rule.applicable?(source: 'foo')).to be_falsey
36
34
  end
37
35
  end
@@ -21,34 +21,32 @@
21
21
  require 'build/environment'
22
22
  require 'build/rulebook'
23
23
 
24
- module Build::RulebookSpec
25
- describe Build::Rulebook do
26
- it "should generate a valid rulebook" do
27
- environment = Build::Environment.new do
28
- define Build::Rule, "copy.file" do
29
- input :source
30
- output :destination
31
-
32
- apply do |parameters|
33
- cp parameters[:source], parameters[:destination]
34
- end
35
- end
24
+ RSpec.describe Build::Rulebook do
25
+ it "should generate a valid rulebook" do
26
+ environment = Build::Environment.new do
27
+ define Build::Rule, "copy.file" do
28
+ input :source
29
+ output :destination
36
30
 
37
- define Build::Rule, "delete.file" do
38
- input :target
39
-
40
- apply do |parameters|
41
- rm parameters[:target]
42
- end
31
+ apply do |parameters|
32
+ cp parameters[:source], parameters[:destination]
43
33
  end
44
34
  end
45
35
 
46
- rulebook = Build::Rulebook.for(environment)
47
-
48
- expect(rulebook.rules.size).to be 2
49
-
50
- expect(rulebook.rules).to be_include 'copy.file'
51
- expect(rulebook.rules).to be_include 'delete.file'
36
+ define Build::Rule, "delete.file" do
37
+ input :target
38
+
39
+ apply do |parameters|
40
+ rm parameters[:target]
41
+ end
42
+ end
52
43
  end
44
+
45
+ rulebook = Build::Rulebook.for(environment)
46
+
47
+ expect(rulebook.rules.size).to be 2
48
+
49
+ expect(rulebook.rules).to be_include 'copy.file'
50
+ expect(rulebook.rules).to be_include 'delete.file'
53
51
  end
54
52
  end
@@ -0,0 +1,29 @@
1
+
2
+ if ENV['COVERAGE'] || ENV['TRAVIS']
3
+ begin
4
+ require 'simplecov'
5
+
6
+ SimpleCov.start do
7
+ add_filter "/spec/"
8
+ end
9
+
10
+ if ENV['TRAVIS']
11
+ require 'coveralls'
12
+ Coveralls.wear!
13
+ end
14
+ rescue LoadError
15
+ warn "Could not load simplecov: #{$!}"
16
+ end
17
+ end
18
+
19
+ require "bundler/setup"
20
+ require "build"
21
+
22
+ RSpec.configure do |config|
23
+ # Enable flags like --only-failures and --next-failure
24
+ config.example_status_persistence_file_path = ".rspec_status"
25
+
26
+ config.expect_with :rspec do |c|
27
+ c.syntax = :expect
28
+ end
29
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: build
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.10
4
+ version: '1.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-07 00:00:00.000000000 Z
11
+ date: 2017-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: build-graph
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.0.5
19
+ version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.0.5
26
+ version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: build-environment
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.1.3
33
+ version: '1.1'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.1.3
40
+ version: '1.1'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: build-makefile
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.0
47
+ version: '1.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.0.0
54
+ version: '1.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: graphviz
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 3.4.0
89
+ version: '3.6'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 3.4.0
96
+ version: '3.6'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -117,7 +117,6 @@ extra_rdoc_files: []
117
117
  files:
118
118
  - ".gitignore"
119
119
  - ".rspec"
120
- - ".simplecov"
121
120
  - ".travis.yml"
122
121
  - Gemfile
123
122
  - Gemfile.local
@@ -139,6 +138,7 @@ files:
139
138
  - spec/build/name_spec.rb
140
139
  - spec/build/rule_spec.rb
141
140
  - spec/build/rulebook_spec.rb
141
+ - spec/spec_helper.rb
142
142
  homepage: ''
143
143
  licenses:
144
144
  - MIT
@@ -159,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
159
  version: '0'
160
160
  requirements: []
161
161
  rubyforge_project:
162
- rubygems_version: 2.5.2
162
+ rubygems_version: 2.6.12
163
163
  signing_key:
164
164
  specification_version: 4
165
165
  summary: Build is a framework for working with task based build systems.
@@ -168,3 +168,4 @@ test_files:
168
168
  - spec/build/name_spec.rb
169
169
  - spec/build/rule_spec.rb
170
170
  - spec/build/rulebook_spec.rb
171
+ - spec/spec_helper.rb
data/.simplecov DELETED
@@ -1,9 +0,0 @@
1
-
2
- SimpleCov.start do
3
- add_filter "/spec/"
4
- end
5
-
6
- if ENV['TRAVIS']
7
- require 'coveralls'
8
- Coveralls.wear!
9
- end