trailblazer-developer 0.0.5 → 0.0.6

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
  SHA256:
3
- metadata.gz: 8bb269ead81c228effa4049dde42ad6f9cfcb0edfdc58484b0bb970eaf00e41c
4
- data.tar.gz: 1a0747e8778d25a1a041ba6b86098656149a27810ee4b85444ee3af75cd467a2
3
+ metadata.gz: 4457d9f0cca19b8f72a8e492f8d155c5d8a3459015201d03548a71b26911f0b2
4
+ data.tar.gz: f6035eaca82336afb3d836f40c96910b37298e2c5eee8b90fac93a2d5c563b5f
5
5
  SHA512:
6
- metadata.gz: 81a57c4cfc5e622dd60026da6463ee8c7f78f9ea8a8de6e33c58ddc1f707f17c287939414df387ae52b086be55d8cc9e93efa40b2232561a7b4fcc09e765dadf
7
- data.tar.gz: b8ba48d57af764e25175225bb5f0d2c4ec710328c97334e20e5d6ea8aaed39a7ab552d2bce768e45eb9ead8d23e6c56b6c9375f4b6831146867f29aa5582ca2e
6
+ metadata.gz: d7c7243f9b266f750a47046e5fce4ad73c08b8e44dcf6ea5bf7b40f008565130bec440ab1c372dcfc312436c7b5ac44b9113a3411677b87954aa4d232696d804
7
+ data.tar.gz: ebcd6ebbf1b448a306566b07c1042324eac3291b077cafc62c389cf78533034f187fd467a33e2142ac89d3a7d9b954c873dc31915d1278c71b4ffb7b7921d44e
@@ -1,5 +1,12 @@
1
+ # 0.0.6
2
+
3
+ * Remove ID extraction logic from `Generate`, this is done on the server-side.
4
+ * Print `wtf` trace in all cases (with or without exception)
5
+ * Allow color configuration in `wtf` trace
6
+
1
7
  # 0.0.5
2
8
 
9
+ * Introduce `:query` option for `Client.import`.
3
10
  * In `Generate`, added `Element.parent` field.
4
11
  * No more magic is applied when extracting the ID/semantic. We just use the plain string.
5
12
 
@@ -24,14 +24,14 @@ module Trailblazer::Developer
24
24
  export_diagram(id: id, token: token, query: query, **options)
25
25
  end
26
26
 
27
- def retrieve_token(email:, password:, url: "/login", **options)
28
- body = JSON.generate({login: {email: email, password: password}})
27
+ def retrieve_token(email:, api_key:, url: "/signin", **options)
28
+ body = JSON.generate({email: email, api_key: api_key})
29
29
 
30
- response = request(token: nil, method: :post, url: url, body: body, **options)
30
+ response = request(token: nil, method: :get, url: url, body: body, **options)
31
+ return false unless response.status == 200
31
32
 
32
- return false unless response.status == 302
33
-
34
- token = CGI::Cookie.parse(response.headers["set-cookie"])["token"][0]
33
+ # token = CGI::Cookie.parse(response.headers["set-cookie"])["token"][0]
34
+ token = JSON.parse(response.body)["token"]
35
35
  end
36
36
 
37
37
  def export_diagram(id:, query:, **options)
@@ -0,0 +1,30 @@
1
+ module Trailblazer::Developer
2
+ # {config} gives global settings for Developer
3
+ # Trailblazer::Developer.configure do |config|
4
+ # config.trace_color_map[Trailblazer::Activity::Right] = :green
5
+ # config.trace_color_map.default = :green
6
+ # end
7
+
8
+ class << self
9
+ def configure
10
+ yield config
11
+ end
12
+
13
+ def config
14
+ @config ||= Config.new
15
+ end
16
+ end
17
+
18
+ class Config
19
+ attr_reader :trace_color_map
20
+
21
+ def initialize
22
+ @trace_color_map = {
23
+ Trailblazer::Activity::Right => :green,
24
+ Trailblazer::Activity::Left => :brown
25
+ }
26
+
27
+ @trace_color_map.default = :green
28
+ end
29
+ end
30
+ end
@@ -24,14 +24,13 @@ module Trailblazer
24
24
  property :data, default: {}
25
25
 
26
26
  property :label
27
- property :parent
27
+ property :parent # TODO: remove?
28
28
  end
29
29
  end
30
30
  end
31
31
 
32
32
  def call(hash)
33
33
  elements = transform_from_hash(hash)
34
- elements = remap_ids(elements)
35
34
 
36
35
  compute_intermediate(elements)
37
36
  end
@@ -69,8 +68,6 @@ module Trailblazer
69
68
 
70
69
  # private
71
70
 
72
-
73
-
74
71
  # We currently use the {:label} field of an arrow to encode an output semantic.
75
72
  # The {:symbol_style} part will be filtered out as semantic. Defaults to {:success}.
76
73
  def semantic_for(label:nil, **)
@@ -82,37 +79,6 @@ module Trailblazer
82
79
  def extract_semantic(label)
83
80
  label.to_sym
84
81
  end
85
-
86
- def extract_string_id(label)
87
- m = label.match(/"(.+)"/) or return
88
- return m[1].to_sym
89
- end
90
-
91
- def extract_id(label)
92
- extract_string_id(label) || extract_semantic(label)
93
- end
94
-
95
- # remap {id}
96
- def remap_ids(elements)
97
- map = {}
98
-
99
- elements.collect do |el|
100
- id = (el.label && semantic = extract_id(el.label)) ? semantic : el.id.to_sym
101
-
102
- map[el.id] = id
103
-
104
- el.id = id
105
- end
106
-
107
- # remap {linksTo}
108
- elements.collect do |el|
109
- el.linksTo.collect do |link|
110
- link.target = map[link.target]
111
- end
112
- end
113
-
114
- elements
115
- end
116
82
  end
117
83
  end
118
84
  end
@@ -1,7 +1,7 @@
1
1
  module Trailblazer
2
2
  module Version
3
3
  module Developer
4
- VERSION = "0.0.5"
4
+ VERSION = "0.0.6"
5
5
  end
6
6
  end
7
7
  end
@@ -1,3 +1,5 @@
1
+ require 'trailblazer/activity'
2
+
1
3
  module Trailblazer::Developer
2
4
  module_function
3
5
 
@@ -12,6 +14,8 @@ module Trailblazer::Developer
12
14
  module Wtf
13
15
  module_function
14
16
 
17
+ COLOR_MAP = Trailblazer::Developer.config.trace_color_map
18
+
15
19
  # Run {activity} with tracing enabled and inject a mutable {Stack} instance.
16
20
  # This allows to display the trace even when an exception happened
17
21
  def invoke(activity, (ctx, flow_options), *args)
@@ -22,45 +26,35 @@ module Trailblazer::Developer
22
26
  stack = Trailblazer::Activity::Trace::Stack.new
23
27
 
24
28
  begin
25
- _returned_stack, *returned = Trailblazer::Activity::Trace.invoke( activity,
29
+ _returned_stack, *returned = Trailblazer::Activity::Trace.invoke(
30
+ activity,
26
31
  [
27
32
  ctx,
28
33
  flow_options.merge(stack: stack)
29
34
  ],
30
35
  *args
31
36
  )
32
- rescue
33
- # DISCUSS: we shouldn't use internal knowledge of the Stack/Level API here.
34
- closest = stack.to_a
35
- while closest.is_a?(Trailblazer::Activity::Trace::Level) && closest = closest.last do # FIXME: deep-dive via Stack API.
36
- end
37
-
38
- # pp closest.task # this was the last executed task
37
+ puts Trailblazer::Activity::Trace::Present.(stack, renderer: method(:renderer))
39
38
 
40
- handle(stack, $!, closest.task, activity, [ctx, flow_options])
39
+ rescue => exception
40
+ puts Trailblazer::Activity::Trace::Present.(stack, renderer: method(:renderer))
41
+ raise(exception)
41
42
  end
42
43
 
43
- puts Trailblazer::Activity::Trace::Present.(stack)
44
-
45
- returned # FIXME: test me
46
- end
47
-
48
- def exception_renderer(stack:, level:, input:, name:, closest_task:)
49
- return [ level, %{#{fmt(fmt(name, :red), :bold)}} ] if input.task == closest_task
50
- [ level, %{#{name}} ]
44
+ returned
51
45
  end
52
46
 
53
- # TODO: make this injectable
54
- def handle(stack, exception, closest_task, activity, *args)
55
- puts "[Trailblazer] Exception tracing"
56
- puts "#{fmt(exception.inspect, :bold)}"
57
- puts " #{exception.backtrace[0]}"
58
- puts " #{exception.backtrace[1]}"
59
- puts
60
- puts Trailblazer::Activity::Trace::Present.(stack, closest_task: closest_task, renderer: method(:exception_renderer))
61
- end
47
+ def renderer(task_node:, position:, tree:)
48
+ if task_node[:output].nil? && tree[position.next].nil? # i.e. when exception raised
49
+ return [ task_node[:level], %{#{fmt(fmt(task_node[:name], :red), :bold)}} ]
50
+ end
62
51
 
52
+ if task_node[:output].nil? # i.e. on entry/exit point of activity
53
+ return [ task_node[:level], %{#{fmt(task_node[:name], COLOR_MAP.default)}} ]
54
+ end
63
55
 
56
+ [ task_node[:level], %{#{fmt(task_node[:name], COLOR_MAP[task_node[:output].data])}} ]
57
+ end
64
58
 
65
59
  def fmt(line, style)
66
60
  String.send(style, line)
@@ -6,6 +6,7 @@ module Trailblazer
6
6
  end
7
7
  end
8
8
 
9
+ require "trailblazer/developer/config"
9
10
  require "trailblazer/developer/wtf"
10
11
  require "trailblazer/developer/generate"
11
12
  require "trailblazer/developer/render/circuit"
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "rake"
24
24
  spec.add_development_dependency "rubocop"
25
25
 
26
- spec.add_dependency "trailblazer-activity", "~> 0.8"
26
+ spec.add_dependency "trailblazer-activity", ">= 0.8.4"
27
27
  spec.add_dependency "trailblazer-activity-dsl-linear"
28
28
  spec.add_dependency "representable"
29
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trailblazer-developer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-13 00:00:00.000000000 Z
11
+ date: 2019-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: trailblazer-activity
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '0.8'
89
+ version: 0.8.4
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '0.8'
96
+ version: 0.8.4
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: trailblazer-activity-dsl-linear
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -142,6 +142,7 @@ files:
142
142
  - lib/trailblazer/developer/CHANGES.md
143
143
  - lib/trailblazer/developer/activity.rb
144
144
  - lib/trailblazer/developer/client.rb
145
+ - lib/trailblazer/developer/config.rb
145
146
  - lib/trailblazer/developer/generate.rb
146
147
  - lib/trailblazer/developer/render/circuit.rb
147
148
  - lib/trailblazer/developer/render/linear.rb