trace_viz 0.0.2 → 1.0.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/README.md +40 -37
- data/Steepfile +34 -0
- data/examples/eu_central_bank.rb +69 -0
- data/examples/example.cast +189 -285
- data/lib/trace_viz/adapters/base_adapter.rb +24 -1
- data/lib/trace_viz/adapters/trace_point_adapter.rb +3 -10
- data/lib/trace_viz/collectors/base_collector.rb +42 -35
- data/lib/trace_viz/collectors/filters/base_class_filter.rb +29 -0
- data/lib/trace_viz/collectors/filters/base_exclude_filter.rb +16 -0
- data/lib/trace_viz/collectors/filters/base_filter.rb +2 -8
- data/lib/trace_viz/collectors/filters/base_include_filter.rb +16 -0
- data/lib/trace_viz/collectors/filters/exclude_classes_filter.rb +4 -17
- data/lib/trace_viz/collectors/filters/exclude_default_classes_filter.rb +22 -26
- data/lib/trace_viz/collectors/filters/include_classes_filter.rb +4 -17
- data/lib/trace_viz/collectors/hierarchy_linker.rb +30 -0
- data/lib/trace_viz/collectors/matchers/base_matcher.rb +13 -0
- data/lib/trace_viz/collectors/matchers/trace_point_action_matcher.rb +12 -10
- data/lib/trace_viz/collectors/matchers/within_depth_matcher.rb +6 -5
- data/lib/trace_viz/collectors/steps/assign_depth_for_call_step.rb +30 -0
- data/lib/trace_viz/collectors/steps/assign_depth_for_return_step.rb +39 -0
- data/lib/trace_viz/collectors/steps/base_step.rb +27 -0
- data/lib/trace_viz/collectors/steps/build_hierarchy_step.rb +32 -0
- data/lib/trace_viz/collectors/{evaluators/hidden_evaluator.rb → steps/hidden_step.rb} +9 -5
- data/lib/trace_viz/collectors/steps/linking_step.rb +36 -0
- data/lib/trace_viz/collectors/{evaluators/filter_evaluator.rb → steps/validation_step.rb} +9 -6
- data/lib/trace_viz/collectors/steps.rb +10 -0
- data/lib/trace_viz/collectors/trace_pipeline.rb +26 -0
- data/lib/trace_viz/collectors/trace_pipeline_builder.rb +29 -0
- data/lib/trace_viz/collectors/trace_point_collector.rb +1 -11
- data/lib/trace_viz/config/validator.rb +6 -5
- data/lib/trace_viz/configuration.rb +3 -3
- data/lib/trace_viz/context/tracking_context.rb +4 -0
- data/lib/trace_viz/core/tracer.rb +2 -0
- data/lib/trace_viz/defaults/actions.rb +84 -0
- data/lib/trace_viz/defaults/colors.rb +61 -0
- data/lib/trace_viz/defaults/config.rb +89 -0
- data/lib/trace_viz/defaults/themes.rb +66 -0
- data/lib/trace_viz/defaults.rb +10 -129
- data/lib/trace_viz/exporters/base_exporter.rb +8 -11
- data/lib/trace_viz/exporters/export_manager.rb +33 -0
- data/lib/trace_viz/exporters/registry.rb +25 -0
- data/lib/trace_viz/exporters/text_exporter.rb +22 -0
- data/lib/trace_viz/formatters/base_formatter.rb +3 -30
- data/lib/trace_viz/formatters/export/base_formatter.rb +12 -0
- data/lib/trace_viz/formatters/export/formatter_factory.rb +27 -0
- data/lib/trace_viz/formatters/export/method_call_formatter.rb +21 -0
- data/lib/trace_viz/formatters/export/method_return_formatter.rb +22 -0
- data/lib/trace_viz/formatters/export/summary_group_formatter.rb +35 -0
- data/lib/trace_viz/formatters/helpers/depth_helper.rb +2 -8
- data/lib/trace_viz/formatters/helpers/indent_helper.rb +1 -1
- data/lib/trace_viz/formatters/helpers/log/color_helper.rb +23 -0
- data/lib/trace_viz/formatters/helpers/log/depth_helper.rb +22 -0
- data/lib/trace_viz/formatters/helpers/log/method_name_helper.rb +29 -0
- data/lib/trace_viz/formatters/helpers/log/params_helper.rb +51 -0
- data/lib/trace_viz/formatters/helpers/log/result_helper.rb +27 -0
- data/lib/trace_viz/formatters/helpers/log/summary/params_helper.rb +53 -0
- data/lib/trace_viz/formatters/helpers/method_details_helper.rb +1 -1
- data/lib/trace_viz/formatters/helpers/params_helper.rb +26 -9
- data/lib/trace_viz/formatters/helpers/result_helper.rb +1 -1
- data/lib/trace_viz/formatters/helpers/source_helper.rb +2 -1
- data/lib/trace_viz/formatters/helpers/summary/params_helper.rb +41 -0
- data/lib/trace_viz/formatters/helpers/summary/source_helper.rb +24 -0
- data/lib/trace_viz/formatters/helpers/time_helper.rb +2 -2
- data/lib/trace_viz/formatters/helpers.rb +10 -0
- data/lib/trace_viz/formatters/log/base_formatter.rb +13 -0
- data/lib/trace_viz/formatters/log/formatter_factory.rb +27 -0
- data/lib/trace_viz/formatters/log/method_call_formatter.rb +34 -0
- data/lib/trace_viz/formatters/log/method_return_formatter.rb +24 -0
- data/lib/trace_viz/formatters/log/summary_group_formatter.rb +40 -0
- data/lib/trace_viz/formatters/log/verbose_formatter.rb +14 -0
- data/lib/trace_viz/formatters/trace_data_formatter.rb +24 -0
- data/lib/trace_viz/helpers/config_helper.rb +13 -0
- data/lib/trace_viz/helpers/trace_point/param_helper.rb +98 -0
- data/lib/trace_viz/helpers/tracking_helper.rb +26 -0
- data/lib/trace_viz/helpers.rb +9 -0
- data/lib/trace_viz/logger.rb +9 -20
- data/lib/trace_viz/loggers/base_logger.rb +29 -0
- data/lib/trace_viz/loggers/log_level_resolver.rb +18 -0
- data/lib/trace_viz/loggers/logging_manager.rb +46 -0
- data/lib/trace_viz/loggers/post_collection_logger.rb +39 -0
- data/lib/trace_viz/loggers/trace_logger.rb +17 -18
- data/lib/trace_viz/loggers/trace_stats_logger.rb +28 -14
- data/lib/trace_viz/renderers/base_renderer.rb +24 -0
- data/lib/trace_viz/renderers/render_context.rb +18 -0
- data/lib/trace_viz/renderers/renderer_factory.rb +41 -0
- data/lib/trace_viz/renderers/summary/node_processor.rb +82 -0
- data/lib/trace_viz/renderers/summary_renderer.rb +22 -0
- data/lib/trace_viz/renderers/verbose_renderer.rb +29 -0
- data/lib/trace_viz/shared/renderer_helper.rb +46 -0
- data/lib/trace_viz/shared.rb +8 -0
- data/lib/trace_viz/trace_data/base.rb +16 -23
- data/lib/trace_viz/trace_data/node.rb +33 -0
- data/lib/trace_viz/trace_data/root_node.rb +20 -0
- data/lib/trace_viz/trace_data/summary_node.rb +49 -0
- data/lib/trace_viz/trace_data/trace_point/base.rb +22 -31
- data/lib/trace_viz/trace_data/trace_point/method_call.rb +22 -17
- data/lib/trace_viz/trace_data/trace_point/method_return.rb +21 -1
- data/lib/trace_viz/traits/depth_trackable.rb +13 -0
- data/lib/trace_viz/traits/identifiable.rb +25 -0
- data/lib/trace_viz/traits/time_trackable.rb +13 -0
- data/lib/trace_viz/traits.rb +10 -0
- data/lib/trace_viz/utils/colorize.rb +6 -6
- data/lib/trace_viz/utils/format_utils/key_value_formatter.rb +37 -0
- data/lib/trace_viz/utils/format_utils/value_truncator.rb +74 -0
- data/lib/trace_viz/utils/format_utils.rb +10 -53
- data/lib/trace_viz/utils/id_generator.rb +35 -0
- data/lib/trace_viz/version.rb +1 -1
- data/sig/adapters/base_adapter.rbs +11 -0
- data/sig/adapters/trace_point_adapter.rbs +13 -0
- data/sig/collectors/filters/registry.rbs +13 -0
- data/sig/collectors/trace_point_collector.rbs +17 -0
- data/sig/config/copier.rbs +15 -0
- data/sig/config/validator.rbs +18 -0
- data/sig/configuration.rbs +22 -0
- data/sig/context/base_context.rbs +9 -0
- data/sig/context/config_context.rbs +13 -0
- data/sig/context/manager.rbs +10 -0
- data/sig/context/map.rbs +13 -0
- data/sig/context.rbs +5 -0
- data/sig/core/tracer.rbs +7 -0
- data/sig/core.rbs +4 -0
- data/sig/defaults.rbs +17 -0
- data/sig/errors.rbs +13 -0
- data/sig/logger.rbs +33 -0
- data/sig/trace_viz.rbs +1 -2
- data/sig/utils/colorize.rbs +8 -0
- data/sig/utils/format_utils/key_value_formatter.rbs +16 -0
- data/sig/utils/format_utils/value_truncator.rbs +19 -0
- data/sig/utils/format_utils.rbs +8 -0
- data/sig/version.rbs +3 -0
- metadata +97 -18
- data/lib/trace_viz/collectors/depth_manager.rb +0 -37
- data/lib/trace_viz/collectors/evaluators/base_evaluator.rb +0 -23
- data/lib/trace_viz/exporters/formatters/base_formatter.rb +0 -12
- data/lib/trace_viz/exporters/formatters/method_call_formatter.rb +0 -21
- data/lib/trace_viz/exporters/formatters/method_return_formatter.rb +0 -22
- data/lib/trace_viz/exporters/transformers/base_transformer.rb +0 -25
- data/lib/trace_viz/exporters/transformers/text_transformer.rb +0 -28
- data/lib/trace_viz/loggers/trace_builder.rb +0 -30
- data/lib/trace_viz/loggers/trace_formatters/base_formatter.rb +0 -32
- data/lib/trace_viz/loggers/trace_formatters/method_call_formatter.rb +0 -21
- data/lib/trace_viz/loggers/trace_formatters/method_return_formatter.rb +0 -22
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "trace_viz/context"
|
4
|
+
require_relative "base_step"
|
5
|
+
|
6
|
+
module TraceViz
|
7
|
+
module Collectors
|
8
|
+
module Steps
|
9
|
+
class LinkingStep < BaseStep
|
10
|
+
def call(trace_data)
|
11
|
+
valid?(trace_data) ? linking_trace(trace_data) : trace_data
|
12
|
+
rescue StandardError => e
|
13
|
+
logger.error("Linking failed for trace_data ID: #{trace_data.id} - #{e.message}")
|
14
|
+
nil
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def valid?(trace_data)
|
20
|
+
return false unless current_call
|
21
|
+
|
22
|
+
[
|
23
|
+
trace_data.event == :return,
|
24
|
+
current_call.event == :call,
|
25
|
+
trace_data.action_id == current_call.action_id,
|
26
|
+
].all?
|
27
|
+
end
|
28
|
+
|
29
|
+
def linking_trace(trace_data)
|
30
|
+
trace_data.link(current_call)
|
31
|
+
trace_data
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -1,26 +1,29 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "trace_viz/collectors/filters/registry"
|
4
|
-
require_relative "
|
4
|
+
require_relative "base_step"
|
5
5
|
|
6
6
|
module TraceViz
|
7
7
|
module Collectors
|
8
|
-
module
|
9
|
-
class
|
8
|
+
module Steps
|
9
|
+
class ValidationStep < BaseStep
|
10
10
|
def initialize
|
11
11
|
super()
|
12
|
-
|
13
12
|
@filters = build_filters.freeze
|
14
13
|
end
|
15
14
|
|
16
|
-
def
|
17
|
-
|
15
|
+
def call(trace_data)
|
16
|
+
trace_data if pass?(trace_data)
|
18
17
|
end
|
19
18
|
|
20
19
|
private
|
21
20
|
|
22
21
|
attr_reader :filters
|
23
22
|
|
23
|
+
def pass?(trace_data)
|
24
|
+
filters.all? { |filter| filter.apply?(trace_data) }
|
25
|
+
end
|
26
|
+
|
24
27
|
def build_filters
|
25
28
|
Collectors::Filters::Registry.build(config.filters)
|
26
29
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TraceViz
|
4
|
+
module Collectors
|
5
|
+
class TracePipeline
|
6
|
+
def initialize
|
7
|
+
@steps = []
|
8
|
+
end
|
9
|
+
|
10
|
+
def add_step(step)
|
11
|
+
@steps << step
|
12
|
+
end
|
13
|
+
|
14
|
+
def process(trace_data)
|
15
|
+
@steps.each do |step|
|
16
|
+
trace_data = step.call(trace_data)
|
17
|
+
return nil unless trace_data
|
18
|
+
end
|
19
|
+
trace_data
|
20
|
+
rescue StandardError => e
|
21
|
+
TraceViz.logger.error("Pipeline processing failed for trace_data ID: #{trace_data.id} - #{e.message}")
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "trace_pipeline"
|
4
|
+
require_relative "steps"
|
5
|
+
|
6
|
+
module TraceViz
|
7
|
+
module Collectors
|
8
|
+
class TracePipelineBuilder
|
9
|
+
class << self
|
10
|
+
def build
|
11
|
+
TracePipeline.new.tap do |pipeline|
|
12
|
+
pipeline.add_step(Steps::ValidationStep.new)
|
13
|
+
|
14
|
+
#
|
15
|
+
# Those actions require access to the current call,
|
16
|
+
# so it needs to be run before current call is updated
|
17
|
+
#
|
18
|
+
pipeline.add_step(Steps::BuildHierarchyStep.new)
|
19
|
+
pipeline.add_step(Steps::LinkingStep.new)
|
20
|
+
|
21
|
+
pipeline.add_step(Steps::AssignDepthForCallStep.new)
|
22
|
+
pipeline.add_step(Steps::AssignDepthForReturnStep.new)
|
23
|
+
pipeline.add_step(Steps::HiddenStep.new)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -4,8 +4,6 @@ require "trace_viz/trace_data/trace_point_builder"
|
|
4
4
|
require_relative "base_collector"
|
5
5
|
require_relative "matchers/trace_point_action_matcher"
|
6
6
|
require_relative "matchers/within_depth_matcher"
|
7
|
-
require_relative "depth_manager"
|
8
|
-
require_relative "trace_stats"
|
9
7
|
|
10
8
|
module TraceViz
|
11
9
|
module Collectors
|
@@ -21,7 +19,7 @@ module TraceViz
|
|
21
19
|
|
22
20
|
attr_reader :action_matcher, :within_depth_matcher
|
23
21
|
|
24
|
-
def
|
22
|
+
def can_collect?(trace_point)
|
25
23
|
within_depth? || match_action?(trace_point)
|
26
24
|
end
|
27
25
|
|
@@ -29,10 +27,6 @@ module TraceViz
|
|
29
27
|
TraceData::TracePointBuilder.build(trace_point)
|
30
28
|
end
|
31
29
|
|
32
|
-
def update_trace_depth(trace_data)
|
33
|
-
depth_manager.align(trace_data)
|
34
|
-
end
|
35
|
-
|
36
30
|
def match_action?(trace_point)
|
37
31
|
action_matcher.matches?(trace_point)
|
38
32
|
end
|
@@ -42,10 +36,6 @@ module TraceViz
|
|
42
36
|
|
43
37
|
within_depth_matcher.matches?(depth)
|
44
38
|
end
|
45
|
-
|
46
|
-
def depth_manager
|
47
|
-
@depth_manager ||= DepthManager.new
|
48
|
-
end
|
49
39
|
end
|
50
40
|
end
|
51
41
|
end
|
@@ -27,8 +27,9 @@ module TraceViz
|
|
27
27
|
|
28
28
|
def validate_params(value)
|
29
29
|
mode = value[:mode]
|
30
|
-
unless Defaults.
|
31
|
-
raise ArgumentError,
|
30
|
+
unless Defaults::Config.valid_param_mode?(mode)
|
31
|
+
raise ArgumentError,
|
32
|
+
"Invalid param mode: #{mode}. Valid modes are #{Defaults::Config.valid_param_modes.join(", ")}."
|
32
33
|
end
|
33
34
|
|
34
35
|
if value[:truncate_values] && (!value[:truncate_values].is_a?(Integer) || value[:truncate_values] <= 0)
|
@@ -37,7 +38,7 @@ module TraceViz
|
|
37
38
|
end
|
38
39
|
|
39
40
|
def validate_result(value)
|
40
|
-
if value[:truncate_length] &&
|
41
|
+
if value[:truncate_length] && !value[:truncate_length].is_a?(Integer)
|
41
42
|
raise ArgumentError, "Truncate values must be a positive integer."
|
42
43
|
end
|
43
44
|
end
|
@@ -64,9 +65,9 @@ module TraceViz
|
|
64
65
|
end
|
65
66
|
|
66
67
|
format = value[:format]
|
67
|
-
unless Defaults.
|
68
|
+
unless Defaults::Config.valid_export_format?(format)
|
68
69
|
raise ArgumentError,
|
69
|
-
"Invalid export format: #{format}. Valid formats are #{Defaults.valid_export_formats.join(", ")}."
|
70
|
+
"Invalid export format: #{format}. Valid formats are #{Defaults::Config.valid_export_formats.join(", ")}."
|
70
71
|
end
|
71
72
|
end
|
72
73
|
end
|
@@ -7,12 +7,12 @@ require "trace_viz/config/copier"
|
|
7
7
|
module TraceViz
|
8
8
|
class Configuration
|
9
9
|
attr_reader :logger, :settings
|
10
|
-
attr_reader(*Defaults.
|
10
|
+
attr_reader(*Defaults::Config.fetch.keys)
|
11
11
|
|
12
12
|
def initialize
|
13
13
|
@logger = Logger.new
|
14
14
|
@validator = Config::Validator.new
|
15
|
-
@settings = Defaults.
|
15
|
+
@settings = Defaults::Config.fetch
|
16
16
|
define_dynamic_accessors
|
17
17
|
end
|
18
18
|
|
@@ -32,7 +32,7 @@ module TraceViz
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def reset_defaults
|
35
|
-
@settings = Defaults.
|
35
|
+
@settings = Defaults::Config.fetch
|
36
36
|
end
|
37
37
|
|
38
38
|
def dup
|
@@ -10,6 +10,8 @@ module TraceViz
|
|
10
10
|
module Core
|
11
11
|
class Tracer
|
12
12
|
def trace(**options, &block)
|
13
|
+
Defaults::Themes.apply_solarized_theme
|
14
|
+
|
13
15
|
Context::Manager.with_contexts(config: options, tracking: {}) do
|
14
16
|
adapter = Adapters::TracePointAdapter.new
|
15
17
|
adapter.trace(&block)
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TraceViz
|
4
|
+
module Defaults
|
5
|
+
class Actions
|
6
|
+
EMOJIS = {
|
7
|
+
default: "",
|
8
|
+
info: "ℹ️",
|
9
|
+
success: "✅",
|
10
|
+
error: "❌",
|
11
|
+
warn: "⚠️",
|
12
|
+
start: "🚀",
|
13
|
+
processing: "🔄",
|
14
|
+
finish: "🏁",
|
15
|
+
exported: "📤",
|
16
|
+
skipped: "⏩",
|
17
|
+
stats: "📊",
|
18
|
+
}.freeze
|
19
|
+
|
20
|
+
COLORS = {
|
21
|
+
# Default actions
|
22
|
+
default: :reset,
|
23
|
+
info: :cyan,
|
24
|
+
success: :green,
|
25
|
+
error: :bright_red,
|
26
|
+
warn: :yellow,
|
27
|
+
|
28
|
+
# Processing actions
|
29
|
+
start: :bright_cyan,
|
30
|
+
processing: [:dim, :bright_white],
|
31
|
+
finish: :bright_magenta,
|
32
|
+
|
33
|
+
# Export & stats actions
|
34
|
+
exported: :bright_green,
|
35
|
+
skipped: :bright_white,
|
36
|
+
stats: [:bold, :underline, :bright_white],
|
37
|
+
|
38
|
+
# Trace data actions
|
39
|
+
trace_indent: :dim,
|
40
|
+
trace_depth: :blue,
|
41
|
+
trace_depth_prefix: [:dim, :italic, :blue],
|
42
|
+
trace_depth_open: [:dim, :bright_blue],
|
43
|
+
trace_depth_value: :bright_red,
|
44
|
+
trace_depth_close: [:dim, :bright_blue],
|
45
|
+
trace_method_name: :bright_cyan,
|
46
|
+
trace_method_class: :bright_green,
|
47
|
+
trace_method_sign: :blue,
|
48
|
+
trace_method_action: [:bold, :bright_cyan],
|
49
|
+
trace_source_location: [:dim, :bright_white],
|
50
|
+
trace_params_key: :bright_yellow,
|
51
|
+
trace_params_value: [:dim, :bright_yellow],
|
52
|
+
trace_result_prefix: [:italic, :bright_blue],
|
53
|
+
trace_result_value: :bright_white,
|
54
|
+
trace_execution_time: [:dim, :bright_red],
|
55
|
+
}.freeze
|
56
|
+
|
57
|
+
class << self
|
58
|
+
def emojis
|
59
|
+
EMOJIS
|
60
|
+
end
|
61
|
+
|
62
|
+
def colors
|
63
|
+
COLORS
|
64
|
+
end
|
65
|
+
|
66
|
+
def keys
|
67
|
+
colors.keys
|
68
|
+
end
|
69
|
+
|
70
|
+
def emoji_for(action)
|
71
|
+
EMOJIS.fetch(action, EMOJIS[:default])
|
72
|
+
end
|
73
|
+
|
74
|
+
def source_colors
|
75
|
+
Defaults.action_colors || COLORS
|
76
|
+
end
|
77
|
+
|
78
|
+
def colors_for(action)
|
79
|
+
Array(source_colors.fetch(action, source_colors[:default]))
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TraceViz
|
4
|
+
module Defaults
|
5
|
+
class Colors
|
6
|
+
COLORS = {
|
7
|
+
reset: "\e[0m",
|
8
|
+
bold: "\e[1m",
|
9
|
+
dim: "\e[2m",
|
10
|
+
italic: "\e[3m",
|
11
|
+
underline: "\e[4m",
|
12
|
+
reverse: "\e[7m",
|
13
|
+
hidden: "\e[8m",
|
14
|
+
strikethrough: "\e[9m",
|
15
|
+
}
|
16
|
+
|
17
|
+
# Reference ASCII color codes
|
18
|
+
# https://talyian.github.io/ansicolors/
|
19
|
+
|
20
|
+
# Map 256-color ANSI codes
|
21
|
+
(0..255).each do |i|
|
22
|
+
COLORS["color_#{i}".to_sym] = "\e[38;5;#{i}m"
|
23
|
+
end
|
24
|
+
|
25
|
+
# To add background colors
|
26
|
+
(0..255).each do |i|
|
27
|
+
COLORS["bg_color_#{i}".to_sym] = "\e[48;5;#{i}m"
|
28
|
+
end
|
29
|
+
|
30
|
+
# Predefined names
|
31
|
+
COLORS.merge!({
|
32
|
+
black: "\e[30m",
|
33
|
+
red: "\e[31m",
|
34
|
+
green: "\e[32m",
|
35
|
+
yellow: "\e[33m",
|
36
|
+
blue: "\e[34m",
|
37
|
+
magenta: "\e[35m",
|
38
|
+
cyan: "\e[36m",
|
39
|
+
white: "\e[37m",
|
40
|
+
bright_black: "\e[90m",
|
41
|
+
bright_red: "\e[91m",
|
42
|
+
bright_green: "\e[92m",
|
43
|
+
bright_yellow: "\e[93m",
|
44
|
+
bright_blue: "\e[94m",
|
45
|
+
bright_magenta: "\e[95m",
|
46
|
+
bright_cyan: "\e[96m",
|
47
|
+
bright_white: "\e[97m",
|
48
|
+
})
|
49
|
+
|
50
|
+
class << self
|
51
|
+
def all
|
52
|
+
COLORS
|
53
|
+
end
|
54
|
+
|
55
|
+
def fetch(color)
|
56
|
+
COLORS.fetch(color, COLORS[:reset])
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TraceViz
|
4
|
+
module Defaults
|
5
|
+
class Config
|
6
|
+
DEFAULTS = {
|
7
|
+
general: {
|
8
|
+
tab_size: 2,
|
9
|
+
mode: :summary, # :summary, :verbose
|
10
|
+
group_keys: [:event, :klass, :action],
|
11
|
+
show_indent: true,
|
12
|
+
show_depth: true,
|
13
|
+
max_display_depth: 3,
|
14
|
+
show_method_name: true,
|
15
|
+
},
|
16
|
+
source_location: {
|
17
|
+
show: false,
|
18
|
+
truncate_length: 100,
|
19
|
+
},
|
20
|
+
params: {
|
21
|
+
show: true,
|
22
|
+
mode: :name_and_value,
|
23
|
+
truncate_values: 10,
|
24
|
+
},
|
25
|
+
result: {
|
26
|
+
show: true,
|
27
|
+
truncate_length: 50,
|
28
|
+
},
|
29
|
+
execution: {
|
30
|
+
show_time: true,
|
31
|
+
show_trace_events: [:call, :return],
|
32
|
+
},
|
33
|
+
filters: [
|
34
|
+
:exclude_internal_call,
|
35
|
+
# :exclude_default_classes,
|
36
|
+
# :exclude_rails_framework,
|
37
|
+
# include_classes: {
|
38
|
+
# classes: [],
|
39
|
+
# },
|
40
|
+
# exclude_classes: {
|
41
|
+
# classes: [],
|
42
|
+
# },
|
43
|
+
# include_gems: {
|
44
|
+
# app_running: true,
|
45
|
+
# app_path: Dir.pwd,
|
46
|
+
# gems: [],
|
47
|
+
# },
|
48
|
+
# exclude_gems: {
|
49
|
+
# gems: [],
|
50
|
+
# },
|
51
|
+
],
|
52
|
+
log: {
|
53
|
+
enabled: true,
|
54
|
+
runtime: false,
|
55
|
+
post_collection: true,
|
56
|
+
stats: true,
|
57
|
+
},
|
58
|
+
export: {
|
59
|
+
enabled: true,
|
60
|
+
path: "tmp",
|
61
|
+
format: :txt,
|
62
|
+
overwrite: false,
|
63
|
+
},
|
64
|
+
}.freeze
|
65
|
+
|
66
|
+
class << self
|
67
|
+
def fetch
|
68
|
+
DEFAULTS.dup
|
69
|
+
end
|
70
|
+
|
71
|
+
def valid_param_modes
|
72
|
+
[:name_and_value, :name_only, :value_only].freeze
|
73
|
+
end
|
74
|
+
|
75
|
+
def valid_param_mode?(mode)
|
76
|
+
valid_param_modes.include?(mode)
|
77
|
+
end
|
78
|
+
|
79
|
+
def valid_export_formats
|
80
|
+
[:txt, :json, :yaml].freeze
|
81
|
+
end
|
82
|
+
|
83
|
+
def valid_export_format?(format)
|
84
|
+
valid_export_formats.include?(format)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TraceViz
|
4
|
+
module Defaults
|
5
|
+
class Themes
|
6
|
+
SOLARIZED = {
|
7
|
+
base03: :color_234,
|
8
|
+
base02: :color_235,
|
9
|
+
base01: :color_240,
|
10
|
+
base00: :color_241,
|
11
|
+
base0: :color_244,
|
12
|
+
base1: :color_245,
|
13
|
+
base2: :color_254,
|
14
|
+
base3: :color_230,
|
15
|
+
yellow: :color_136,
|
16
|
+
orange: :color_166,
|
17
|
+
red: :color_160,
|
18
|
+
magenta: :color_125,
|
19
|
+
violet: :color_61,
|
20
|
+
blue: :color_33,
|
21
|
+
cyan: :color_37,
|
22
|
+
green: :color_64,
|
23
|
+
}.freeze
|
24
|
+
|
25
|
+
class << self
|
26
|
+
def solarized
|
27
|
+
SOLARIZED
|
28
|
+
end
|
29
|
+
|
30
|
+
def apply_solarized_theme
|
31
|
+
colors = {
|
32
|
+
default: SOLARIZED[:base0],
|
33
|
+
info: SOLARIZED[:blue],
|
34
|
+
success: SOLARIZED[:green],
|
35
|
+
error: SOLARIZED[:red],
|
36
|
+
warn: SOLARIZED[:yellow],
|
37
|
+
start: SOLARIZED[:blue],
|
38
|
+
processing: SOLARIZED[:base01],
|
39
|
+
finish: SOLARIZED[:magenta],
|
40
|
+
exported: SOLARIZED[:green],
|
41
|
+
skipped: SOLARIZED[:base01],
|
42
|
+
stats: [:bold, :underline, SOLARIZED[:base2]],
|
43
|
+
trace_indent: SOLARIZED[:base03],
|
44
|
+
trace_depth: SOLARIZED[:blue],
|
45
|
+
trace_depth_prefix: [:italic, SOLARIZED[:base02]],
|
46
|
+
trace_depth_open: SOLARIZED[:base02],
|
47
|
+
trace_depth_value: SOLARIZED[:red],
|
48
|
+
trace_depth_close: SOLARIZED[:base03],
|
49
|
+
trace_method_name: SOLARIZED[:cyan],
|
50
|
+
trace_method_class: [:bold, SOLARIZED[:green]],
|
51
|
+
trace_method_sign: SOLARIZED[:violet],
|
52
|
+
trace_method_action: [:bold, SOLARIZED[:blue]],
|
53
|
+
trace_source_location: SOLARIZED[:base01],
|
54
|
+
trace_params_key: SOLARIZED[:orange],
|
55
|
+
trace_params_value: SOLARIZED[:base00],
|
56
|
+
trace_result_prefix: SOLARIZED[:base1],
|
57
|
+
trace_result_value: SOLARIZED[:base3],
|
58
|
+
trace_execution_time: SOLARIZED[:cyan],
|
59
|
+
}
|
60
|
+
|
61
|
+
Defaults.action_colors = colors
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|