producer-core 0.3.1 → 0.3.2

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: 1a3adf6101a1558efb3ddeaf66acf177c1d60cc1
4
- data.tar.gz: 0013660606738921e69b6cda3198ca828bcf4b8b
3
+ metadata.gz: f5f4fa779cf02e6e7082cb3ab5d3243f40f21228
4
+ data.tar.gz: c453810ddc78867a9b54e985028c823113ffed51
5
5
  SHA512:
6
- metadata.gz: ca676ef9b26f0fd6ff8b4a0b88e1cc7caec24da357b8f40280692d19991b8e64b7e7b4c6697a6d5e5debe9bbb3ef4b84ce2cc03ac30c9145a1aceb06a9df04fb
7
- data.tar.gz: b8606bd4d3cd7c3507e8ea7e87ad4199a8a5538b95ca2438deff520d40244382b350bfc51b3d1a5fda11ea2ca90f55d3b206cac37f45de059ee2a8632d18b2f1
6
+ metadata.gz: 47986a1c3029cd9a2aeb0802effefcb30b83c5ea63113a027151cc7f699cfebbc07cc7d4b43f99490e6e8b2680b02e329ed534697e2dea3ced753d68298d0749
7
+ data.tar.gz: fc68bd2f2f62402b15478a232b82ebdf1fa54925f027d32cdf32da70691b2a20c0c9656a23d2c61290eea12b28b03a6528f727a0df1470e47351ba4ba6786c0d
@@ -0,0 +1,15 @@
1
+ Feature: `compose_macro' recipe keyword
2
+
3
+ Scenario: allows macro composition
4
+ Given a recipe with:
5
+ """
6
+ macro :hello do |prefix, *args|
7
+ echo 'hello %s %s' % [prefix, args.join(', ')]
8
+ end
9
+
10
+ compose_macro :hello_composed, :hello, 'composed'
11
+
12
+ hello_composed :foo, :bar
13
+ """
14
+ When I successfully execute the recipe
15
+ Then the output must contain "hello composed foo, bar"
@@ -5,6 +5,10 @@ module Producer
5
5
  def define_macro(name, block)
6
6
  define_method(name) { |*args| task name, *args, &block }
7
7
  end
8
+
9
+ def compose_macro(name, meth, *base_args)
10
+ define_method(name) { |*args| send meth, *(base_args + args) }
11
+ end
8
12
  end
9
13
 
10
14
  attr_reader :env, :tasks
@@ -27,8 +31,14 @@ module Producer
27
31
  end
28
32
 
29
33
  def macro(name, &block)
30
- define_singleton_method(name) do |*args|
31
- task("#{name}", *args, &block)
34
+ define_singleton_method name do |*args|
35
+ task "#{name}", *args, &block
36
+ end
37
+ end
38
+
39
+ def compose_macro(name, meth, *base_args)
40
+ define_singleton_method name do |*args|
41
+ send meth, *(base_args + args)
32
42
  end
33
43
  end
34
44
 
@@ -1,5 +1,5 @@
1
1
  module Producer
2
2
  module Core
3
- VERSION = '0.3.1'.freeze
3
+ VERSION = '0.3.2'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: producer-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thibault Jouan
@@ -133,6 +133,7 @@ files:
133
133
  - features/cli_usage.feature
134
134
  - features/cli_verbose.feature
135
135
  - features/condition_negated_test.feature
136
+ - features/recipe_compose_macro.feature
136
137
  - features/recipe_macro.feature
137
138
  - features/recipe_source.feature
138
139
  - features/recipe_target.feature
@@ -267,6 +268,7 @@ test_files:
267
268
  - features/cli_usage.feature
268
269
  - features/cli_verbose.feature
269
270
  - features/condition_negated_test.feature
271
+ - features/recipe_compose_macro.feature
270
272
  - features/recipe_macro.feature
271
273
  - features/recipe_source.feature
272
274
  - features/recipe_target.feature