raka 0.3.4 → 0.3.6
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/VERSION +1 -1
- data/lib/raka/compile.rb +4 -1
- data/lib/raka/protocol.rb +16 -4
- data/lib/raka/token.rb +8 -2
- data/lib/raka.rb +7 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4f6977d2467ab97772b25f068dccc278aaf0934b6f2f22188ae56dfd8580272
|
4
|
+
data.tar.gz: '093165815fa89e1f144c79d9102fb08215229181141638d3b40da74bcbe5845a'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e31fc8179a2b22dd05a1982bfbc5ffb5db96ab57f054365c062c956a617530481eec4c9f8485b775e0493496ad385b34e2fe54798137ce1b4f6a2330d647e12
|
7
|
+
data.tar.gz: 758e5dc96f9544df4546e7b2955181aa9bfa3c354a3d5f66fd7ece88f292e473d5379fa5e64c1c89fec5a704c28f272f6dc7277825374e8292d2b7cae3fc09b0
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.6
|
data/lib/raka/compile.rb
CHANGED
@@ -131,6 +131,7 @@ class DSLCompiler
|
|
131
131
|
|
132
132
|
# compile token = rhs to rake rule
|
133
133
|
# rubocop:disable Style/MethodLength
|
134
|
+
# rubocop:disable Style/PerceivedComplexity
|
134
135
|
def compile(lhs, rhs)
|
135
136
|
unless @env.instance_of?(Object)
|
136
137
|
raise "DSL compile error: seems not a valid @env of rake with class #{@env.class}"
|
@@ -170,10 +171,12 @@ class DSLCompiler
|
|
170
171
|
end
|
171
172
|
|
172
173
|
# We generate a rule for each possible input type
|
173
|
-
|
174
|
+
|
175
|
+
(lhs._options_[:input_exts] || @options.input_types).each do |ext|
|
174
176
|
# We find auto source from both THE scope and the root
|
175
177
|
create_rule lhs, ext, actions, extra_deps, extra_tasks
|
176
178
|
end
|
177
179
|
end
|
178
180
|
end
|
179
181
|
# rubocop:enable Style/MethodLength
|
182
|
+
# rubocop:enable Style/PerceivedComplexity
|
data/lib/raka/protocol.rb
CHANGED
@@ -86,11 +86,23 @@ end
|
|
86
86
|
# helper functions to implement LanguageImpl
|
87
87
|
def run_cmd(env, cmd)
|
88
88
|
env.logger.debug(cmd)
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
89
|
+
out_r, out_w = IO.pipe
|
90
|
+
err_r, err_w = IO.pipe
|
91
|
+
if env.logger.level <= 0
|
92
|
+
pid = spawn(cmd, out: out_w)
|
93
|
+
Thread.new do
|
94
|
+
env.logger.debug(out_r.gets) until out_r.eof
|
95
|
+
end
|
96
|
+
elsif env.logger.level == 1
|
97
|
+
pid = spawn(cmd, out: out_w)
|
98
|
+
else
|
99
|
+
pid = spawn(cmd, out: out_w, err: err_w)
|
93
100
|
end
|
101
|
+
|
102
|
+
Process.wait pid
|
103
|
+
out_w.close
|
104
|
+
err_w.close
|
105
|
+
err_r.close
|
94
106
|
end
|
95
107
|
|
96
108
|
def pick_kwargs(klass, kwargs)
|
data/lib/raka/token.rb
CHANGED
@@ -29,11 +29,17 @@ end
|
|
29
29
|
class Token
|
30
30
|
attr_reader :chain
|
31
31
|
|
32
|
-
def initialize(compiler, context, chain, inline_scope)
|
32
|
+
def initialize(compiler, context, chain, inline_scope, input_exts: nil)
|
33
33
|
@compiler = compiler
|
34
34
|
@context = context
|
35
35
|
@chain = chain
|
36
36
|
@inline_scope = inline_scope
|
37
|
+
@options = {}
|
38
|
+
@options[:input_exts] = input_exts
|
39
|
+
end
|
40
|
+
|
41
|
+
def _options_
|
42
|
+
@options
|
37
43
|
end
|
38
44
|
|
39
45
|
def _captures_(target)
|
@@ -74,7 +80,7 @@ class Token
|
|
74
80
|
|
75
81
|
# attach a new item to the chain
|
76
82
|
def _attach_(item)
|
77
|
-
Token.new(@compiler, @context, @chain + [item], @inline_scope)
|
83
|
+
Token.new(@compiler, @context, @chain + [item], @inline_scope, @options)
|
78
84
|
end
|
79
85
|
|
80
86
|
# rubocop:disable Style/MissingRespondToMissing # for DSL not essential
|
data/lib/raka.rb
CHANGED
@@ -25,7 +25,7 @@ class Raka
|
|
25
25
|
env = @env
|
26
26
|
options = @options
|
27
27
|
scopes = @scopes
|
28
|
-
@env.define_singleton_method(ext_alias || ext) do |*args|
|
28
|
+
@env.define_singleton_method(ext_alias || ext) do |*args, **kw|
|
29
29
|
# Here the compiler are bound with @options so that when we change @options
|
30
30
|
# using methods like scope in Rakefile, the subsequent rules defined will honor
|
31
31
|
# the new settings
|
@@ -33,7 +33,7 @@ class Raka
|
|
33
33
|
inline_scope_pattern = !args.empty? ? args[0] : nil
|
34
34
|
Token.new(
|
35
35
|
DSLCompiler.new(env, options), Context.new(ext, scopes.clone),
|
36
|
-
[], inline_scope_pattern
|
36
|
+
[], inline_scope_pattern, **kw
|
37
37
|
)
|
38
38
|
end
|
39
39
|
end
|
@@ -41,7 +41,7 @@ class Raka
|
|
41
41
|
def initialize(env, options)
|
42
42
|
@env = env
|
43
43
|
defaults = {
|
44
|
-
output_types: [:csv], input_types:
|
44
|
+
output_types: [:csv], input_types: nil,
|
45
45
|
type_aliases: {},
|
46
46
|
scopes: [],
|
47
47
|
lang: ['lang/shell'],
|
@@ -51,7 +51,10 @@ class Raka
|
|
51
51
|
|
52
52
|
create_logger options.log_level || (ENV['LOG_LEVEL'] || Logger::INFO).to_i
|
53
53
|
|
54
|
-
|
54
|
+
# if input_types given, obey it, otherwise use all output types as possible input types
|
55
|
+
unless @options.input_types
|
56
|
+
@options.input_types = @options.output_types # any output can be used as intermediate
|
57
|
+
end
|
55
58
|
# specify root of scopes in options, scopes will append to each root
|
56
59
|
@scopes = options.scopes.empty? ? [] : [options.scopes]
|
57
60
|
@options.lang.each { |path| load File::join(File::dirname(__FILE__), "raka/#{path}/impl.rb") }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: raka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yarray
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-06-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|