build 1.0.10 → 1.1

Sign up to get free protection for your applications and to get access to all the features.
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