tasking 0.2.0 → 0.3.0
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 +4 -4
- data/lib/tasking.rb +2 -1
- data/lib/tasking/namespace.rb +2 -2
- data/lib/tasking/options.rb +48 -0
- data/lib/tasking/task.rb +3 -7
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4981b897e547aedf77da48a0f5a2f89c5448fd299470279ffda024a5289233e4
|
4
|
+
data.tar.gz: d28311cbd4a57f46fe4be001db419bc292b0978d78eca671b620ab0aae2517c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c88afa523ba6e423767229752cf1c43d2b1f9712e3b6617d561525c69a9dc9e023afaaf11af7ee26939b5e21ef1878920d7817141dcd080297e17219ac612b6e
|
7
|
+
data.tar.gz: 493bae7a0ace2c82abe526e6b8a9f13072313a99ca15b8dc1783c321bfbbe62052844c22d23ee91b35287f5d514ac3dbad54eb9ad29c32e41cd3c9b306b32c69
|
data/lib/tasking.rb
CHANGED
@@ -130,7 +130,7 @@ module Tasking
|
|
130
130
|
end
|
131
131
|
|
132
132
|
def gather_options_for( full_task_name, task )
|
133
|
-
final_options = {}
|
133
|
+
final_options = Tasking::Options.new({})
|
134
134
|
|
135
135
|
walk_namespace_tree_to( full_task_name, :task ) do |ns_name|
|
136
136
|
namespace = Tasking::Namespace.find_namespace( ns_name )
|
@@ -159,5 +159,6 @@ module Tasking
|
|
159
159
|
end
|
160
160
|
end
|
161
161
|
|
162
|
+
require_relative 'tasking/options'
|
162
163
|
require_relative 'tasking/namespace'
|
163
164
|
require_relative 'tasking/task'
|
data/lib/tasking/namespace.rb
CHANGED
@@ -37,7 +37,7 @@ module Tasking
|
|
37
37
|
def initialize( name, options = {} )
|
38
38
|
@tasks = {}
|
39
39
|
@name = name
|
40
|
-
@options = options
|
40
|
+
@options = Options.build( options )
|
41
41
|
|
42
42
|
self.class.add_namespace( self )
|
43
43
|
end
|
@@ -54,7 +54,7 @@ module Tasking
|
|
54
54
|
|
55
55
|
def execute( options = {}, &block )
|
56
56
|
@options.merge!( options )
|
57
|
-
block
|
57
|
+
block&.call
|
58
58
|
end
|
59
59
|
|
60
60
|
def merge_options( options )
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Tasking
|
2
|
+
class Options
|
3
|
+
attr_reader :options_hash
|
4
|
+
|
5
|
+
def self.build( options )
|
6
|
+
return options if options.is_a?( self )
|
7
|
+
|
8
|
+
new( options )
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize(hash)
|
12
|
+
@options_hash = hash
|
13
|
+
end
|
14
|
+
|
15
|
+
def [](key)
|
16
|
+
resolve_value( options_hash[key] )
|
17
|
+
end
|
18
|
+
|
19
|
+
def merge(other)
|
20
|
+
self.class.new( options_hash.merge( extract_options_hash( other ) ) )
|
21
|
+
end
|
22
|
+
|
23
|
+
def merge!(other)
|
24
|
+
options_hash.merge!( extract_options_hash( other ) )
|
25
|
+
self
|
26
|
+
end
|
27
|
+
|
28
|
+
def ==(other)
|
29
|
+
options_hash == extract_options_hash( other )
|
30
|
+
end
|
31
|
+
|
32
|
+
def materialized_hash
|
33
|
+
options_hash.map do |key, value|
|
34
|
+
[ key, resolve_value( value ) ]
|
35
|
+
end.to_h
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def resolve_value( value )
|
41
|
+
value.respond_to?( :call ) ? value.call( self ) : value
|
42
|
+
end
|
43
|
+
|
44
|
+
def extract_options_hash(other)
|
45
|
+
other.is_a?( self.class ) ? other.options_hash : other
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/tasking/task.rb
CHANGED
@@ -6,7 +6,7 @@ module Tasking
|
|
6
6
|
def initialize( name, parent_namespace, options = {}, &block )
|
7
7
|
@name = name
|
8
8
|
@parent_namespace = parent_namespace
|
9
|
-
@options = options
|
9
|
+
@options = Options.build( options )
|
10
10
|
@block = block
|
11
11
|
@before_filters = []
|
12
12
|
@after_filters = []
|
@@ -23,21 +23,17 @@ module Tasking
|
|
23
23
|
def execute( options = {} )
|
24
24
|
total_options = @options.merge( options )
|
25
25
|
execute_task_chain( before_filters, total_options, "Unknown before task '%s' for task '#{@name}'" )
|
26
|
-
|
26
|
+
block&.call( total_options )
|
27
27
|
execute_task_chain( after_filters, total_options, "Unknown after task '%s' for task '#{@name}'" )
|
28
28
|
end
|
29
29
|
|
30
30
|
private
|
31
31
|
|
32
|
-
def resolve_options(options)
|
33
|
-
options.transform_values { |v| v.respond_to?(:call) ? v.call(options) : v }
|
34
|
-
end
|
35
|
-
|
36
32
|
def execute_task_chain( tasks, options, fail_message )
|
37
33
|
tasks.each do |t|
|
38
34
|
task = task_lookup( t )
|
39
35
|
abort( fail_message % t ) unless task
|
40
|
-
task.execute(options)
|
36
|
+
task.execute( options )
|
41
37
|
end
|
42
38
|
end
|
43
39
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tasking
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sven Riedel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- bin/tasking
|
63
63
|
- lib/tasking.rb
|
64
64
|
- lib/tasking/namespace.rb
|
65
|
+
- lib/tasking/options.rb
|
65
66
|
- lib/tasking/task.rb
|
66
67
|
homepage: https://github.com/sriedel/tasking
|
67
68
|
licenses:
|
@@ -82,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
82
83
|
- !ruby/object:Gem::Version
|
83
84
|
version: '0'
|
84
85
|
requirements: []
|
85
|
-
rubygems_version: 3.
|
86
|
+
rubygems_version: 3.1.2
|
86
87
|
signing_key:
|
87
88
|
specification_version: 4
|
88
89
|
summary: A lightweight task runner DSL
|