producer-core 0.3.1 → 0.3.2

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