makit 0.0.139 → 0.0.140

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.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +41 -41
  3. data/exe/makit +5 -5
  4. data/lib/makit/apache.rb +28 -28
  5. data/lib/makit/auto.rb +48 -48
  6. data/lib/makit/cli/build_commands.rb +500 -500
  7. data/lib/makit/cli/generators/base_generator.rb +74 -74
  8. data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
  9. data/lib/makit/cli/generators/generator_factory.rb +49 -49
  10. data/lib/makit/cli/generators/node_generator.rb +50 -50
  11. data/lib/makit/cli/generators/ruby_generator.rb +77 -77
  12. data/lib/makit/cli/generators/rust_generator.rb +50 -50
  13. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
  14. data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
  15. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
  16. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +40 -40
  17. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
  18. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
  19. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
  20. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
  21. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
  22. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
  23. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
  24. data/lib/makit/cli/main.rb +69 -67
  25. data/lib/makit/cli/project_commands.rb +868 -868
  26. data/lib/makit/cli/repository_commands.rb +661 -661
  27. data/lib/makit/cli/strategy_commands.rb +51 -0
  28. data/lib/makit/cli/utility_commands.rb +521 -521
  29. data/lib/makit/commands/factory.rb +359 -359
  30. data/lib/makit/commands/middleware/base.rb +73 -73
  31. data/lib/makit/commands/middleware/cache.rb +248 -248
  32. data/lib/makit/commands/middleware/command_logger.rb +312 -312
  33. data/lib/makit/commands/middleware/validator.rb +269 -269
  34. data/lib/makit/commands/request.rb +316 -316
  35. data/lib/makit/commands/result.rb +323 -323
  36. data/lib/makit/commands/runner.rb +385 -385
  37. data/lib/makit/commands/strategies/base.rb +171 -171
  38. data/lib/makit/commands/strategies/child_process.rb +1 -1
  39. data/lib/makit/commands/strategies/synchronous.rb +139 -139
  40. data/lib/makit/commands.rb +50 -50
  41. data/lib/makit/configuration/dotnet_project.rb +12 -12
  42. data/lib/makit/configuration/gitlab_helper.rb +58 -58
  43. data/lib/makit/configuration/project.rb +168 -168
  44. data/lib/makit/configuration/rakefile_helper.rb +43 -43
  45. data/lib/makit/configuration/step.rb +34 -34
  46. data/lib/makit/configuration/timeout.rb +74 -0
  47. data/lib/makit/configuration.rb +15 -14
  48. data/lib/makit/content/default_gitignore.rb +7 -7
  49. data/lib/makit/content/default_gitignore.txt +225 -225
  50. data/lib/makit/content/default_rakefile.rb +13 -13
  51. data/lib/makit/content/gem_rakefile.rb +16 -16
  52. data/lib/makit/context.rb +1 -1
  53. data/lib/makit/data.rb +49 -49
  54. data/lib/makit/directories.rb +140 -140
  55. data/lib/makit/directory.rb +262 -262
  56. data/lib/makit/docs/files.rb +89 -89
  57. data/lib/makit/docs/rake.rb +102 -102
  58. data/lib/makit/dotnet/cli.rb +69 -69
  59. data/lib/makit/dotnet/project.rb +217 -217
  60. data/lib/makit/dotnet/solution.rb +38 -38
  61. data/lib/makit/dotnet/solution_classlib.rb +239 -239
  62. data/lib/makit/dotnet/solution_console.rb +264 -264
  63. data/lib/makit/dotnet/solution_maui.rb +354 -354
  64. data/lib/makit/dotnet/solution_wasm.rb +275 -275
  65. data/lib/makit/dotnet/solution_wpf.rb +304 -304
  66. data/lib/makit/dotnet.rb +102 -102
  67. data/lib/makit/email.rb +90 -90
  68. data/lib/makit/environment.rb +142 -142
  69. data/lib/makit/examples/runner.rb +370 -370
  70. data/lib/makit/exceptions.rb +45 -45
  71. data/lib/makit/fileinfo.rb +24 -24
  72. data/lib/makit/files.rb +43 -43
  73. data/lib/makit/gems.rb +40 -40
  74. data/lib/makit/git/cli.rb +54 -54
  75. data/lib/makit/git/repository.rb +90 -90
  76. data/lib/makit/git.rb +98 -98
  77. data/lib/makit/gitlab_runner.rb +59 -59
  78. data/lib/makit/humanize.rb +137 -137
  79. data/lib/makit/indexer.rb +47 -47
  80. data/lib/makit/logging/configuration.rb +308 -308
  81. data/lib/makit/logging/format_registry.rb +84 -84
  82. data/lib/makit/logging/formatters/base.rb +39 -39
  83. data/lib/makit/logging/formatters/console_formatter.rb +140 -140
  84. data/lib/makit/logging/formatters/json_formatter.rb +65 -65
  85. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
  86. data/lib/makit/logging/formatters/text_formatter.rb +64 -64
  87. data/lib/makit/logging/log_request.rb +119 -119
  88. data/lib/makit/logging/logger.rb +199 -199
  89. data/lib/makit/logging/sinks/base.rb +91 -91
  90. data/lib/makit/logging/sinks/console.rb +72 -72
  91. data/lib/makit/logging/sinks/file_sink.rb +92 -92
  92. data/lib/makit/logging/sinks/structured.rb +123 -123
  93. data/lib/makit/logging/sinks/unified_file_sink.rb +296 -296
  94. data/lib/makit/logging.rb +565 -565
  95. data/lib/makit/markdown.rb +75 -75
  96. data/lib/makit/mp/basic_object_mp.rb +17 -17
  97. data/lib/makit/mp/command_mp.rb +13 -13
  98. data/lib/makit/mp/command_request.mp.rb +17 -17
  99. data/lib/makit/mp/project_mp.rb +199 -199
  100. data/lib/makit/mp/string_mp.rb +191 -191
  101. data/lib/makit/nuget.rb +74 -74
  102. data/lib/makit/port.rb +32 -32
  103. data/lib/makit/process.rb +163 -163
  104. data/lib/makit/protoc.rb +107 -107
  105. data/lib/makit/rake/cli.rb +196 -196
  106. data/lib/makit/rake.rb +80 -80
  107. data/lib/makit/ruby/cli.rb +185 -185
  108. data/lib/makit/ruby.rb +25 -25
  109. data/lib/makit/secrets.rb +51 -51
  110. data/lib/makit/serializer.rb +130 -130
  111. data/lib/makit/services/builder.rb +186 -186
  112. data/lib/makit/services/error_handler.rb +226 -226
  113. data/lib/makit/services/repository_manager.rb +231 -231
  114. data/lib/makit/services/validator.rb +112 -112
  115. data/lib/makit/setup/classlib.rb +101 -101
  116. data/lib/makit/setup/gem.rb +268 -268
  117. data/lib/makit/setup/razorclasslib.rb +101 -101
  118. data/lib/makit/setup/runner.rb +54 -54
  119. data/lib/makit/setup.rb +5 -5
  120. data/lib/makit/show.rb +110 -110
  121. data/lib/makit/storage.rb +126 -126
  122. data/lib/makit/symbols.rb +170 -170
  123. data/lib/makit/task_info.rb +130 -130
  124. data/lib/makit/tasks/at_exit.rb +15 -15
  125. data/lib/makit/tasks/build.rb +22 -22
  126. data/lib/makit/tasks/clean.rb +13 -13
  127. data/lib/makit/tasks/configure.rb +10 -10
  128. data/lib/makit/tasks/format.rb +10 -10
  129. data/lib/makit/tasks/hook_manager.rb +443 -443
  130. data/lib/makit/tasks/init.rb +49 -49
  131. data/lib/makit/tasks/integrate.rb +29 -29
  132. data/lib/makit/tasks/pull_incoming.rb +13 -13
  133. data/lib/makit/tasks/setup.rb +13 -13
  134. data/lib/makit/tasks/sync.rb +17 -17
  135. data/lib/makit/tasks/tag.rb +16 -16
  136. data/lib/makit/tasks/task_monkey_patch.rb +81 -81
  137. data/lib/makit/tasks/test.rb +22 -22
  138. data/lib/makit/tasks/update.rb +18 -18
  139. data/lib/makit/tasks.rb +20 -20
  140. data/lib/makit/test_cache.rb +239 -239
  141. data/lib/makit/tree.rb +37 -37
  142. data/lib/makit/v1/makit.v1_pb.rb +35 -35
  143. data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
  144. data/lib/makit/version.rb +99 -99
  145. data/lib/makit/version_util.rb +21 -21
  146. data/lib/makit/wix.rb +95 -95
  147. data/lib/makit/yaml.rb +29 -29
  148. data/lib/makit/zip.rb +17 -17
  149. data/lib/makit copy.rb +44 -44
  150. data/lib/makit.rb +42 -42
  151. metadata +2 -1
data/lib/makit/storage.rb CHANGED
@@ -1,126 +1,126 @@
1
- # frozen_string_literal: true
2
-
3
- # This module provides classes for the Makit gem.
4
- module Makit
5
- # This class provide methods for serializing and deserializing objects.
6
- #
7
- class Storage
8
- # declare a private class variable, connection_string
9
- attr_accessor :directory #= nil
10
- attr_accessor :protoc_json_serializer, :protoc_binary_serializer # = Makit::Serializer::new() # = Makit::Serializer::new()
11
-
12
- def initialize(directory)
13
- @directory = directory
14
- @protoc_json_serializer = Makit::Serializer.new(Makit::Proto3Formats::JSON)
15
- @protoc_binary_serializer = Makit::Serializer.new(Makit::Proto3Formats::BINARY)
16
- end
17
-
18
- def save(object, key)
19
- # puts "=" * 80
20
- # puts "Saving object to storage"
21
- # puts "=" * 80
22
- raise "directory is nil" if @directory.nil?
23
- raise "Object is nil" if object.nil?
24
- raise "Key is nil" if key.nil?
25
-
26
- # get the fully qualfied type name of the object
27
- type_name = object.class.to_s
28
- # puts "Type name: #{type_name}"
29
-
30
- type_rel_dir = type_name.downcase.gsub("::", "/")
31
- # puts "Type relative directory: #{type_rel_dir}"
32
-
33
- # extract the file extension from the key
34
- file_extension = File.extname(key)
35
- # puts "File extension: #{file_extension}"
36
-
37
- serializer = nil
38
- if file_extension == ".json"
39
- serializer = @protoc_json_serializer
40
- elsif file_extension == ".pb"
41
- serializer = @protoc_binary_serializer
42
- else
43
- raise "Unknown file extension: #{file_extension}"
44
- end
45
- bytes = serializer.serialize(object)
46
- # puts "Serialized object size: #{bytes.size} bytes"
47
-
48
- rel_filename = File.join(type_rel_dir, key.to_s)
49
- # puts "Relative filename: #{rel_filename}"
50
-
51
- filename = File.join(@directory, rel_filename)
52
- # puts "Saving object to file: #{filename}"
53
-
54
- # make sure the file directory has been created
55
- FileUtils.mkdir_p(File.dirname(filename)) unless File.directory?(File.dirname(filename))
56
- # write the bytes to the file
57
- File.binwrite(filename, bytes)
58
-
59
- # puts "=" * 80
60
- end
61
-
62
- def load(type, key)
63
- raise "directory is nil" if @directory.nil?
64
- raise "Key is nil" if key.nil?
65
-
66
- # get the fully qualfied type name of the object
67
- type_name = type.to_s # object.class.to_s
68
- # puts "Type name: #{type_name}"
69
-
70
- type_rel_dir = type_name.downcase.gsub("::", "/")
71
- # puts "Type relative directory: #{type_rel_dir}"
72
-
73
- # extract the file extension from the key
74
- File.extname(key)
75
- # puts "File extension: #{file_extension}"
76
-
77
- rel_filename = File.join(type_rel_dir, key.to_s)
78
- # puts "Relative filename: #{rel_filename}"
79
-
80
- filename = File.join(@directory, rel_filename)
81
- # puts "Loading object from file: #{filename}"
82
-
83
- # make sure the file exists
84
- raise "File does not exist: #{filename}" unless File.exist?(filename)
85
-
86
- # read the bytes from the file
87
- bytes = File.read(filename, mode: "rb")
88
- # puts "Read object from file: #{filename}"
89
-
90
- # extract the file extension from the key
91
- file_extension = File.extname(key)
92
- # puts "File extension: #{file_extension}"
93
-
94
- serializer = nil
95
- if file_extension == ".json"
96
- serializer = @protoc_json_serializer
97
- elsif file_extension == ".pb"
98
- serializer = @protoc_binary_serializer
99
- else
100
- raise "Unknown file extension: #{file_extension}"
101
- end
102
-
103
- # deserialize the object
104
- serializer.deserialize(type, bytes)
105
- # puts "Deserialized object size: #{bytes.size} bytes"
106
-
107
- # if the object type inherits from Google::Protobuf::AbstractMessage,
108
- # then serialize to protobuf json format
109
- # if object.is_a? Google::Protobuf::MessageExts
110
- # puts "Serializing to protobuf json format"
111
- # serialized_object = object.to_json
112
- # pretty_json = JSON.pretty_generate(JSON.parse(serialized_object))
113
- # puts pretty_json
114
- # else
115
- # puts "Serializing to Marshal format"
116
- # serialized_object = Marshal.dump(object)
117
- # end
118
- # serialize the object
119
- # serialized_object = Marshal.dump(object)
120
-
121
- # save the object to the storage
122
- # ...
123
- # puts "=" * 80
124
- end
125
- end
126
- end
1
+ # frozen_string_literal: true
2
+
3
+ # This module provides classes for the Makit gem.
4
+ module Makit
5
+ # This class provide methods for serializing and deserializing objects.
6
+ #
7
+ class Storage
8
+ # declare a private class variable, connection_string
9
+ attr_accessor :directory #= nil
10
+ attr_accessor :protoc_json_serializer, :protoc_binary_serializer # = Makit::Serializer::new() # = Makit::Serializer::new()
11
+
12
+ def initialize(directory)
13
+ @directory = directory
14
+ @protoc_json_serializer = Makit::Serializer.new(Makit::Proto3Formats::JSON)
15
+ @protoc_binary_serializer = Makit::Serializer.new(Makit::Proto3Formats::BINARY)
16
+ end
17
+
18
+ def save(object, key)
19
+ # puts "=" * 80
20
+ # puts "Saving object to storage"
21
+ # puts "=" * 80
22
+ raise "directory is nil" if @directory.nil?
23
+ raise "Object is nil" if object.nil?
24
+ raise "Key is nil" if key.nil?
25
+
26
+ # get the fully qualfied type name of the object
27
+ type_name = object.class.to_s
28
+ # puts "Type name: #{type_name}"
29
+
30
+ type_rel_dir = type_name.downcase.gsub("::", "/")
31
+ # puts "Type relative directory: #{type_rel_dir}"
32
+
33
+ # extract the file extension from the key
34
+ file_extension = File.extname(key)
35
+ # puts "File extension: #{file_extension}"
36
+
37
+ serializer = nil
38
+ if file_extension == ".json"
39
+ serializer = @protoc_json_serializer
40
+ elsif file_extension == ".pb"
41
+ serializer = @protoc_binary_serializer
42
+ else
43
+ raise "Unknown file extension: #{file_extension}"
44
+ end
45
+ bytes = serializer.serialize(object)
46
+ # puts "Serialized object size: #{bytes.size} bytes"
47
+
48
+ rel_filename = File.join(type_rel_dir, key.to_s)
49
+ # puts "Relative filename: #{rel_filename}"
50
+
51
+ filename = File.join(@directory, rel_filename)
52
+ # puts "Saving object to file: #{filename}"
53
+
54
+ # make sure the file directory has been created
55
+ FileUtils.mkdir_p(File.dirname(filename)) unless File.directory?(File.dirname(filename))
56
+ # write the bytes to the file
57
+ File.binwrite(filename, bytes)
58
+
59
+ # puts "=" * 80
60
+ end
61
+
62
+ def load(type, key)
63
+ raise "directory is nil" if @directory.nil?
64
+ raise "Key is nil" if key.nil?
65
+
66
+ # get the fully qualfied type name of the object
67
+ type_name = type.to_s # object.class.to_s
68
+ # puts "Type name: #{type_name}"
69
+
70
+ type_rel_dir = type_name.downcase.gsub("::", "/")
71
+ # puts "Type relative directory: #{type_rel_dir}"
72
+
73
+ # extract the file extension from the key
74
+ File.extname(key)
75
+ # puts "File extension: #{file_extension}"
76
+
77
+ rel_filename = File.join(type_rel_dir, key.to_s)
78
+ # puts "Relative filename: #{rel_filename}"
79
+
80
+ filename = File.join(@directory, rel_filename)
81
+ # puts "Loading object from file: #{filename}"
82
+
83
+ # make sure the file exists
84
+ raise "File does not exist: #{filename}" unless File.exist?(filename)
85
+
86
+ # read the bytes from the file
87
+ bytes = File.read(filename, mode: "rb")
88
+ # puts "Read object from file: #{filename}"
89
+
90
+ # extract the file extension from the key
91
+ file_extension = File.extname(key)
92
+ # puts "File extension: #{file_extension}"
93
+
94
+ serializer = nil
95
+ if file_extension == ".json"
96
+ serializer = @protoc_json_serializer
97
+ elsif file_extension == ".pb"
98
+ serializer = @protoc_binary_serializer
99
+ else
100
+ raise "Unknown file extension: #{file_extension}"
101
+ end
102
+
103
+ # deserialize the object
104
+ serializer.deserialize(type, bytes)
105
+ # puts "Deserialized object size: #{bytes.size} bytes"
106
+
107
+ # if the object type inherits from Google::Protobuf::AbstractMessage,
108
+ # then serialize to protobuf json format
109
+ # if object.is_a? Google::Protobuf::MessageExts
110
+ # puts "Serializing to protobuf json format"
111
+ # serialized_object = object.to_json
112
+ # pretty_json = JSON.pretty_generate(JSON.parse(serialized_object))
113
+ # puts pretty_json
114
+ # else
115
+ # puts "Serializing to Marshal format"
116
+ # serialized_object = Marshal.dump(object)
117
+ # end
118
+ # serialize the object
119
+ # serialized_object = Marshal.dump(object)
120
+
121
+ # save the object to the storage
122
+ # ...
123
+ # puts "=" * 80
124
+ end
125
+ end
126
+ end
data/lib/makit/symbols.rb CHANGED
@@ -1,170 +1,170 @@
1
- # frozen_string_literal: true
2
-
3
- begin
4
- require "rainbow"
5
- rescue LoadError
6
- # rainbow gem not available, define a no-op rainbow method
7
- class String
8
- def rainbow
9
- self
10
- end
11
- end
12
- end
13
-
14
- # https://symbl.cc/en/unicode/table/
15
- module Makit
16
- # Unicode symbol utilities with colorization
17
- #
18
- # This class provides a collection of Unicode symbols with appropriate
19
- # colors for use in terminal output. Symbols are provided for various
20
- # purposes including status indicators, directional arrows, and decorative elements.
21
- class Symbols
22
- def self.checkmark
23
- "\u2713"
24
- end
25
-
26
- def self.success
27
- "\u2713"
28
- end
29
-
30
- def self.error
31
- Rainbow("\u0058").red
32
- end
33
-
34
- def self.warning
35
- Rainbow("\u26A0").yellow
36
- end
37
-
38
- def self.debug
39
- Rainbow("\u24D8").blue # Circle with "i"
40
- end
41
-
42
- def self.info
43
- Rainbow("\u2139").blue # Information source
44
- end
45
-
46
- def self.fatal
47
- Rainbow("\u25A0").bright.red # Filled square, indicating stop/critical
48
- end
49
-
50
- def self.warn
51
- Rainbow("\u26A0").yellow # Warning sign
52
- end
53
-
54
- def self.star
55
- Rainbow("\u2605").yellow # Star
56
- end
57
-
58
- def self.coffee
59
- Rainbow("\u2615").yellow # Hot beverage
60
- end
61
-
62
- def self.heart
63
- Rainbow("\u2764").red # Heavy black heart
64
- end
65
-
66
- def self.bug
67
- Rainbow("\u1F41E").yellow # Bug
68
- end
69
-
70
- def self.gear
71
- Rainbow("\u2699").yellow # Gear
72
- end
73
-
74
- def self.magnifying_glass
75
- Rainbow("\u1F50D").yellow # Left-pointing magnifying glass
76
- end
77
-
78
- def self.question
79
- Rainbow("\u003F").yellow # Question mark
80
- end
81
-
82
- def self.arrow_right
83
- Rainbow("\u27A4").yellow # Arrow pointing rightwards then curving upwards
84
- end
85
-
86
- def self.arrow_left
87
- Rainbow("\u2B05").yellow # Left arrow
88
- end
89
-
90
- def self.arrow_up
91
- Rainbow("\u2B06").yellow # Up arrow
92
- end
93
-
94
- def self.arrow_down
95
- Rainbow("\u2B07").yellow # Down arrow
96
- end
97
-
98
- def self.arrow_up_down
99
- Rainbow("\u2195").yellow # Up/down arrow
100
- end
101
-
102
- def self.arrow_left_right
103
- Rainbow("\u2194").yellow # Left/right arrow
104
- end
105
-
106
- def self.arrow_upper_right
107
- Rainbow("\u2197").yellow # North east arrow
108
- end
109
-
110
- def self.arrow_lower_right
111
- Rainbow("\u2198").yellow # South east arrow
112
- end
113
-
114
- def self.arrow_lower_left
115
- Rainbow("\u2199").yellow # South west arrow
116
- end
117
-
118
- def self.arrow_upper_left
119
- Rainbow("\u2196").yellow # North west arrow
120
- end
121
-
122
- def self.arrow_up_small
123
- Rainbow("\u2B06").yellow # Up arrow
124
- end
125
-
126
- def self.arrow_down_small
127
- Rainbow("\u2B07").yellow # Down arrow
128
- end
129
-
130
- def self.arrow_right_small
131
- Rainbow("\u27A1").yellow # Black rightwards arrow
132
- end
133
-
134
- def self.arrow_left_small
135
- Rainbow("\u2B05").yellow # Left arrow
136
- end
137
-
138
- def self.arrow_up_down_small
139
- Rainbow("\u2195").yellow # Up/down arrow
140
- end
141
-
142
- def self.music
143
- Rainbow("\u266B").yellow # Beamed eighth notes
144
- end
145
-
146
- # Get appropriate symbol for log severity level
147
- #
148
- # Returns a colored Unicode symbol that matches the given log severity level.
149
- # Used primarily in log formatting to provide visual indicators.
150
- #
151
- # @param severity [String] The severity level (DEBUG, WARN, ERROR, FATAL)
152
- # @return [String] Colored Unicode symbol or space for unrecognized levels
153
- def self.get_severity_symbol(severity)
154
- case severity
155
- when "DEBUG"
156
- question
157
- # when "INFO"
158
- # info
159
- when "WARN"
160
- warning
161
- when "ERROR"
162
- error
163
- when "FATAL"
164
- fatal
165
- else
166
- " "
167
- end
168
- end
169
- end
170
- end
1
+ # frozen_string_literal: true
2
+
3
+ begin
4
+ require "rainbow"
5
+ rescue LoadError
6
+ # rainbow gem not available, define a no-op rainbow method
7
+ class String
8
+ def rainbow
9
+ self
10
+ end
11
+ end
12
+ end
13
+
14
+ # https://symbl.cc/en/unicode/table/
15
+ module Makit
16
+ # Unicode symbol utilities with colorization
17
+ #
18
+ # This class provides a collection of Unicode symbols with appropriate
19
+ # colors for use in terminal output. Symbols are provided for various
20
+ # purposes including status indicators, directional arrows, and decorative elements.
21
+ class Symbols
22
+ def self.checkmark
23
+ "\u2713"
24
+ end
25
+
26
+ def self.success
27
+ "\u2713"
28
+ end
29
+
30
+ def self.error
31
+ Rainbow("\u0058").red
32
+ end
33
+
34
+ def self.warning
35
+ Rainbow("\u26A0").yellow
36
+ end
37
+
38
+ def self.debug
39
+ Rainbow("\u24D8").blue # Circle with "i"
40
+ end
41
+
42
+ def self.info
43
+ Rainbow("\u2139").blue # Information source
44
+ end
45
+
46
+ def self.fatal
47
+ Rainbow("\u25A0").bright.red # Filled square, indicating stop/critical
48
+ end
49
+
50
+ def self.warn
51
+ Rainbow("\u26A0").yellow # Warning sign
52
+ end
53
+
54
+ def self.star
55
+ Rainbow("\u2605").yellow # Star
56
+ end
57
+
58
+ def self.coffee
59
+ Rainbow("\u2615").yellow # Hot beverage
60
+ end
61
+
62
+ def self.heart
63
+ Rainbow("\u2764").red # Heavy black heart
64
+ end
65
+
66
+ def self.bug
67
+ Rainbow("\u1F41E").yellow # Bug
68
+ end
69
+
70
+ def self.gear
71
+ Rainbow("\u2699").yellow # Gear
72
+ end
73
+
74
+ def self.magnifying_glass
75
+ Rainbow("\u1F50D").yellow # Left-pointing magnifying glass
76
+ end
77
+
78
+ def self.question
79
+ Rainbow("\u003F").yellow # Question mark
80
+ end
81
+
82
+ def self.arrow_right
83
+ Rainbow("\u27A4").yellow # Arrow pointing rightwards then curving upwards
84
+ end
85
+
86
+ def self.arrow_left
87
+ Rainbow("\u2B05").yellow # Left arrow
88
+ end
89
+
90
+ def self.arrow_up
91
+ Rainbow("\u2B06").yellow # Up arrow
92
+ end
93
+
94
+ def self.arrow_down
95
+ Rainbow("\u2B07").yellow # Down arrow
96
+ end
97
+
98
+ def self.arrow_up_down
99
+ Rainbow("\u2195").yellow # Up/down arrow
100
+ end
101
+
102
+ def self.arrow_left_right
103
+ Rainbow("\u2194").yellow # Left/right arrow
104
+ end
105
+
106
+ def self.arrow_upper_right
107
+ Rainbow("\u2197").yellow # North east arrow
108
+ end
109
+
110
+ def self.arrow_lower_right
111
+ Rainbow("\u2198").yellow # South east arrow
112
+ end
113
+
114
+ def self.arrow_lower_left
115
+ Rainbow("\u2199").yellow # South west arrow
116
+ end
117
+
118
+ def self.arrow_upper_left
119
+ Rainbow("\u2196").yellow # North west arrow
120
+ end
121
+
122
+ def self.arrow_up_small
123
+ Rainbow("\u2B06").yellow # Up arrow
124
+ end
125
+
126
+ def self.arrow_down_small
127
+ Rainbow("\u2B07").yellow # Down arrow
128
+ end
129
+
130
+ def self.arrow_right_small
131
+ Rainbow("\u27A1").yellow # Black rightwards arrow
132
+ end
133
+
134
+ def self.arrow_left_small
135
+ Rainbow("\u2B05").yellow # Left arrow
136
+ end
137
+
138
+ def self.arrow_up_down_small
139
+ Rainbow("\u2195").yellow # Up/down arrow
140
+ end
141
+
142
+ def self.music
143
+ Rainbow("\u266B").yellow # Beamed eighth notes
144
+ end
145
+
146
+ # Get appropriate symbol for log severity level
147
+ #
148
+ # Returns a colored Unicode symbol that matches the given log severity level.
149
+ # Used primarily in log formatting to provide visual indicators.
150
+ #
151
+ # @param severity [String] The severity level (DEBUG, WARN, ERROR, FATAL)
152
+ # @return [String] Colored Unicode symbol or space for unrecognized levels
153
+ def self.get_severity_symbol(severity)
154
+ case severity
155
+ when "DEBUG"
156
+ question
157
+ # when "INFO"
158
+ # info
159
+ when "WARN"
160
+ warning
161
+ when "ERROR"
162
+ error
163
+ when "FATAL"
164
+ fatal
165
+ else
166
+ " "
167
+ end
168
+ end
169
+ end
170
+ end