trailblazer-developer 0.0.5 → 0.0.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 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