rscons 0.3.0 → 0.3.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.
data/README.md CHANGED
@@ -66,7 +66,7 @@ end
66
66
 
67
67
  ```ruby
68
68
  class GenerateFoo < Rscons::Builder
69
- def run(target, sources, user_deps, cache, env, vars)
69
+ def run(target, sources, cache, env, vars)
70
70
  cache.mkdir_p(File.dirname(target))
71
71
  File.open(target, "w") do |fh|
72
72
  fh.puts <<EOF
@@ -86,12 +86,12 @@ end
86
86
 
87
87
  ```ruby
88
88
  class CmdBuilder < Rscons::Builder
89
- def run(target, sources, user_deps, cache, env, vars)
89
+ def run(target, sources, cache, env, vars)
90
90
  cmd = ["cmd", "-i", sources.first, "-o", target]
91
- unless cache.up_to_date?(target, cmd, sources, user_deps)
91
+ unless cache.up_to_date?(target, cmd, sources, env)
92
92
  cache.mkdir_p(File.dirname(target))
93
93
  system(cmd)
94
- cache.register_build(target, cmd, sources, user_deps)
94
+ cache.register_build(target, cmd, sources, env)
95
95
  end
96
96
  end
97
97
  end
@@ -105,9 +105,9 @@ end
105
105
 
106
106
  ```ruby
107
107
  class CmdBuilder < Rscons::Builder
108
- def run(target, sources, user_deps, cache, env, vars)
108
+ def run(target, sources, cache, env, vars)
109
109
  cmd = ["cmd", "-i", sources.first, "-o", target]
110
- standard_build("CmdBld #{target}", target, cmd, sources, user_deps, env, cache)
110
+ standard_build("CmdBld #{target}", target, cmd, sources, env, cache)
111
111
  end
112
112
  end
113
113
 
data/lib/rscons/cache.rb CHANGED
@@ -117,7 +117,7 @@ module Rscons
117
117
  # command used to build target must be identical
118
118
  return false unless @cache[:targets][target][:command] == command
119
119
 
120
- cached_deps = @cache[:targets][target][:deps] or []
120
+ cached_deps = @cache[:targets][target][:deps] || []
121
121
  cached_deps_fnames = cached_deps.map { |dc| dc[:fname] }
122
122
  if options[:strict_deps]
123
123
  # depedencies passed in must exactly equal those in the cache
@@ -129,7 +129,7 @@ module Rscons
129
129
 
130
130
  # set of user dependencies must match
131
131
  user_deps = env.get_user_deps(target) || []
132
- cached_user_deps = @cache[:targets][target][:user_deps] or []
132
+ cached_user_deps = @cache[:targets][target][:user_deps] || []
133
133
  cached_user_deps_fnames = cached_user_deps.map { |dc| dc[:fname] }
134
134
  return false unless user_deps == cached_user_deps_fnames
135
135
 
@@ -185,6 +185,11 @@ module Rscons
185
185
  @varset.merge(extra_vars).expand_varref(command_template)
186
186
  end
187
187
 
188
+ # Expand a construction variable reference (String or Array)
189
+ def expand_varref(varref)
190
+ @varset.expand_varref(varref)
191
+ end
192
+
188
193
  # Execute a builder command
189
194
  # @param short_desc [String] Message to print if the Environment's echo
190
195
  # mode is set to :short
data/lib/rscons/varset.rb CHANGED
@@ -17,20 +17,8 @@ module Rscons
17
17
 
18
18
  # Access the value of variable as a particular type
19
19
  # @param key [String, Symbol] The variable name.
20
- # @param type [Symbol, nil] Optional specification of the type desired.
21
- # If the variable is a String and type is :array, a 1-element array with
22
- # the variable value will be returned. If the variable is an Array and
23
- # type is :string, the first element from the variable value will be
24
- # returned.
25
- def [](key, type = nil)
26
- val = @vars[key]
27
- if type == :array and not val.is_a?(Array)
28
- [val]
29
- elsif type == :scalar and val.is_a?(Array)
30
- val.first
31
- else
32
- val
33
- end
20
+ def [](key)
21
+ @vars[key]
34
22
  end
35
23
 
36
24
  # Assign a value to a variable.
@@ -1,4 +1,4 @@
1
1
  module Rscons
2
2
  # gem version
3
- VERSION = "0.3.0"
3
+ VERSION = "0.3.1"
4
4
  end
@@ -199,6 +199,20 @@ module Rscons
199
199
  end
200
200
  end
201
201
 
202
+ describe "#expand_varref" do
203
+ it "returns the fully expanded variable reference" do
204
+ env = Environment.new
205
+ env["path"] = ["dir1", "dir2"]
206
+ env["flags"] = ["-x", "-y", "${specialflag}"]
207
+ env["specialflag"] = "-z"
208
+ env.expand_varref(["-p${path}", "${flags}"]).should == ["-pdir1", "-pdir2", "-x", "-y", "-z"]
209
+ env.expand_varref("foo").should == "foo"
210
+ expect {env.expand_varref("${foo}")}.to raise_error /expand.a.variable.reference/
211
+ env.expand_varref("${specialflag}").should == "-z"
212
+ env.expand_varref("${path}").should == ["dir1", "dir2"]
213
+ end
214
+ end
215
+
202
216
  describe "#execute" do
203
217
  context "with echo: :short" do
204
218
  context "with no errors" do
@@ -30,12 +30,6 @@ module Rscons
30
30
  v["qax"].should == [3, 6]
31
31
  v["qux"].should == {a: :b}
32
32
  end
33
- it "allows accessing a non-array converted to an array" do
34
- v["fuz", :array].should == ["a string"]
35
- end
36
- it "allows accessing an array as a single value" do
37
- v["qax", :scalar].should == 3
38
- end
39
33
  end
40
34
 
41
35
  describe :[]= do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rscons
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-31 00:00:00.000000000 Z
12
+ date: 2014-01-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec-core
@@ -215,7 +215,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
215
215
  version: '0'
216
216
  segments:
217
217
  - 0
218
- hash: -915135629
218
+ hash: -725097361
219
219
  required_rubygems_version: !ruby/object:Gem::Requirement
220
220
  none: false
221
221
  requirements:
@@ -224,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
224
224
  version: '0'
225
225
  segments:
226
226
  - 0
227
- hash: -915135629
227
+ hash: -725097361
228
228
  requirements: []
229
229
  rubyforge_project:
230
230
  rubygems_version: 1.8.23