makit 0.0.144 → 0.0.145

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 (165) 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/base.rb +17 -0
  7. data/lib/makit/cli/build_commands.rb +500 -500
  8. data/lib/makit/cli/generators/base_generator.rb +74 -74
  9. data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
  10. data/lib/makit/cli/generators/generator_factory.rb +49 -49
  11. data/lib/makit/cli/generators/node_generator.rb +50 -50
  12. data/lib/makit/cli/generators/ruby_generator.rb +77 -77
  13. data/lib/makit/cli/generators/rust_generator.rb +50 -50
  14. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
  15. data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
  16. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
  17. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +41 -40
  18. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
  19. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
  20. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
  21. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
  22. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
  23. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
  24. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
  25. data/lib/makit/cli/main.rb +78 -69
  26. data/lib/makit/cli/pipeline_commands.rb +311 -0
  27. data/lib/makit/cli/project_commands.rb +868 -868
  28. data/lib/makit/cli/repository_commands.rb +661 -661
  29. data/lib/makit/cli/strategy_commands.rb +207 -212
  30. data/lib/makit/cli/utility_commands.rb +521 -521
  31. data/lib/makit/commands/factory.rb +359 -359
  32. data/lib/makit/commands/middleware/base.rb +73 -73
  33. data/lib/makit/commands/middleware/cache.rb +248 -248
  34. data/lib/makit/commands/middleware/command_logger.rb +312 -312
  35. data/lib/makit/commands/middleware/validator.rb +269 -269
  36. data/lib/makit/commands/request.rb +316 -316
  37. data/lib/makit/commands/result.rb +323 -323
  38. data/lib/makit/commands/runner.rb +386 -386
  39. data/lib/makit/commands/strategies/base.rb +171 -171
  40. data/lib/makit/commands/strategies/child_process.rb +162 -162
  41. data/lib/makit/commands/strategies/factory.rb +136 -136
  42. data/lib/makit/commands/strategies/synchronous.rb +139 -139
  43. data/lib/makit/commands.rb +50 -50
  44. data/lib/makit/configuration/dotnet_project.rb +48 -48
  45. data/lib/makit/configuration/gitlab_helper.rb +61 -58
  46. data/lib/makit/configuration/project.rb +446 -168
  47. data/lib/makit/configuration/rakefile_helper.rb +43 -43
  48. data/lib/makit/configuration/step.rb +34 -34
  49. data/lib/makit/configuration/timeout.rb +74 -74
  50. data/lib/makit/configuration.rb +21 -16
  51. data/lib/makit/content/default_gitignore.rb +7 -7
  52. data/lib/makit/content/default_gitignore.txt +225 -225
  53. data/lib/makit/content/default_rakefile.rb +13 -13
  54. data/lib/makit/content/gem_rakefile.rb +16 -16
  55. data/lib/makit/context.rb +1 -1
  56. data/lib/makit/data.rb +49 -49
  57. data/lib/makit/directories.rb +140 -140
  58. data/lib/makit/directory.rb +262 -262
  59. data/lib/makit/docs/files.rb +89 -89
  60. data/lib/makit/docs/rake.rb +102 -102
  61. data/lib/makit/dotnet/cli.rb +69 -69
  62. data/lib/makit/dotnet/project.rb +217 -217
  63. data/lib/makit/dotnet/solution.rb +38 -38
  64. data/lib/makit/dotnet/solution_classlib.rb +239 -239
  65. data/lib/makit/dotnet/solution_console.rb +264 -264
  66. data/lib/makit/dotnet/solution_maui.rb +354 -354
  67. data/lib/makit/dotnet/solution_wasm.rb +275 -275
  68. data/lib/makit/dotnet/solution_wpf.rb +304 -304
  69. data/lib/makit/dotnet.rb +102 -102
  70. data/lib/makit/email.rb +90 -90
  71. data/lib/makit/environment.rb +142 -142
  72. data/lib/makit/examples/runner.rb +370 -370
  73. data/lib/makit/exceptions.rb +45 -45
  74. data/lib/makit/fileinfo.rb +32 -24
  75. data/lib/makit/files.rb +43 -43
  76. data/lib/makit/gems.rb +40 -40
  77. data/lib/makit/git/cli.rb +54 -54
  78. data/lib/makit/git/repository.rb +266 -90
  79. data/lib/makit/git.rb +104 -98
  80. data/lib/makit/gitlab/pipeline.rb +857 -0
  81. data/lib/makit/gitlab/pipeline_service_impl.rb +1536 -0
  82. data/lib/makit/gitlab_runner.rb +59 -59
  83. data/lib/makit/humanize.rb +218 -137
  84. data/lib/makit/indexer.rb +47 -47
  85. data/lib/makit/io/filesystem.rb +111 -0
  86. data/lib/makit/io/filesystem_service_impl.rb +337 -0
  87. data/lib/makit/logging/configuration.rb +308 -308
  88. data/lib/makit/logging/format_registry.rb +84 -84
  89. data/lib/makit/logging/formatters/base.rb +39 -39
  90. data/lib/makit/logging/formatters/console_formatter.rb +140 -140
  91. data/lib/makit/logging/formatters/json_formatter.rb +65 -65
  92. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
  93. data/lib/makit/logging/formatters/text_formatter.rb +64 -64
  94. data/lib/makit/logging/log_request.rb +119 -119
  95. data/lib/makit/logging/logger.rb +199 -199
  96. data/lib/makit/logging/sinks/base.rb +91 -91
  97. data/lib/makit/logging/sinks/console.rb +72 -72
  98. data/lib/makit/logging/sinks/file_sink.rb +92 -92
  99. data/lib/makit/logging/sinks/structured.rb +123 -123
  100. data/lib/makit/logging/sinks/unified_file_sink.rb +296 -296
  101. data/lib/makit/logging.rb +565 -565
  102. data/lib/makit/markdown.rb +75 -75
  103. data/lib/makit/mp/basic_object_mp.rb +17 -17
  104. data/lib/makit/mp/command_mp.rb +13 -13
  105. data/lib/makit/mp/command_request.mp.rb +17 -17
  106. data/lib/makit/mp/project_mp.rb +199 -199
  107. data/lib/makit/mp/string_mp.rb +205 -199
  108. data/lib/makit/nuget.rb +74 -74
  109. data/lib/makit/podman/podman.rb +458 -0
  110. data/lib/makit/podman/podman_service_impl.rb +1081 -0
  111. data/lib/makit/port.rb +32 -32
  112. data/lib/makit/process.rb +377 -377
  113. data/lib/makit/protoc.rb +112 -107
  114. data/lib/makit/rake/cli.rb +196 -196
  115. data/lib/makit/rake/trace_controller.rb +174 -174
  116. data/lib/makit/rake.rb +81 -81
  117. data/lib/makit/ruby/cli.rb +185 -185
  118. data/lib/makit/ruby.rb +25 -25
  119. data/lib/makit/secrets.rb +51 -51
  120. data/lib/makit/serializer.rb +130 -130
  121. data/lib/makit/services/builder.rb +186 -186
  122. data/lib/makit/services/error_handler.rb +226 -226
  123. data/lib/makit/services/repository_manager.rb +367 -231
  124. data/lib/makit/services/validator.rb +112 -112
  125. data/lib/makit/setup/classlib.rb +101 -101
  126. data/lib/makit/setup/gem.rb +268 -268
  127. data/lib/makit/setup/pages.rb +11 -11
  128. data/lib/makit/setup/razorclasslib.rb +101 -101
  129. data/lib/makit/setup/runner.rb +54 -54
  130. data/lib/makit/setup.rb +5 -5
  131. data/lib/makit/show.rb +110 -110
  132. data/lib/makit/storage.rb +126 -126
  133. data/lib/makit/symbols.rb +175 -170
  134. data/lib/makit/task_info.rb +130 -130
  135. data/lib/makit/tasks/at_exit.rb +15 -15
  136. data/lib/makit/tasks/build.rb +22 -22
  137. data/lib/makit/tasks/clean.rb +13 -13
  138. data/lib/makit/tasks/configure.rb +10 -10
  139. data/lib/makit/tasks/format.rb +10 -10
  140. data/lib/makit/tasks/hook_manager.rb +443 -443
  141. data/lib/makit/tasks/init.rb +49 -49
  142. data/lib/makit/tasks/integrate.rb +29 -29
  143. data/lib/makit/tasks/pull_incoming.rb +13 -13
  144. data/lib/makit/tasks/setup.rb +16 -16
  145. data/lib/makit/tasks/sync.rb +17 -17
  146. data/lib/makit/tasks/tag.rb +16 -16
  147. data/lib/makit/tasks/task_monkey_patch.rb +81 -81
  148. data/lib/makit/tasks/test.rb +22 -22
  149. data/lib/makit/tasks/update.rb +18 -18
  150. data/lib/makit/tasks.rb +20 -20
  151. data/lib/makit/test_cache.rb +239 -239
  152. data/lib/makit/tree.rb +37 -37
  153. data/lib/makit/v1/configuration/project_service_impl.rb +371 -0
  154. data/lib/makit/v1/git/git_repository_service_impl.rb +295 -0
  155. data/lib/makit/v1/makit.v1_pb.rb +35 -35
  156. data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
  157. data/lib/makit/v1/services/repository_manager_service_impl.rb +572 -0
  158. data/lib/makit/version.rb +100 -100
  159. data/lib/makit/version_util.rb +21 -21
  160. data/lib/makit/wix.rb +95 -95
  161. data/lib/makit/yaml.rb +29 -29
  162. data/lib/makit/zip.rb +17 -17
  163. data/lib/makit copy.rb +44 -44
  164. data/lib/makit.rb +111 -43
  165. metadata +61 -36
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,175 @@
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
+
13
+ # Define Rainbow as a function that returns the string
14
+ def Rainbow(string)
15
+ string
16
+ end
17
+ end
18
+
19
+ # https://symbl.cc/en/unicode/table/
20
+ module Makit
21
+ # Unicode symbol utilities with colorization
22
+ #
23
+ # This class provides a collection of Unicode symbols with appropriate
24
+ # colors for use in terminal output. Symbols are provided for various
25
+ # purposes including status indicators, directional arrows, and decorative elements.
26
+ class Symbols
27
+ def self.checkmark
28
+ "\u2713"
29
+ end
30
+
31
+ def self.success
32
+ "\u2713"
33
+ end
34
+
35
+ def self.error
36
+ Rainbow("\u0058").red
37
+ end
38
+
39
+ def self.warning
40
+ Rainbow("\u26A0").yellow
41
+ end
42
+
43
+ def self.debug
44
+ Rainbow("\u24D8").blue # Circle with "i"
45
+ end
46
+
47
+ def self.info
48
+ Rainbow("\u2139").blue # Information source
49
+ end
50
+
51
+ def self.fatal
52
+ Rainbow("\u25A0").bright.red # Filled square, indicating stop/critical
53
+ end
54
+
55
+ def self.warn
56
+ Rainbow("\u26A0").yellow # Warning sign
57
+ end
58
+
59
+ def self.star
60
+ Rainbow("\u2605").yellow # Star
61
+ end
62
+
63
+ def self.coffee
64
+ Rainbow("\u2615").yellow # Hot beverage
65
+ end
66
+
67
+ def self.heart
68
+ Rainbow("\u2764").red # Heavy black heart
69
+ end
70
+
71
+ def self.bug
72
+ Rainbow("\u1F41E").yellow # Bug
73
+ end
74
+
75
+ def self.gear
76
+ Rainbow("\u2699").yellow # Gear
77
+ end
78
+
79
+ def self.magnifying_glass
80
+ Rainbow("\u1F50D").yellow # Left-pointing magnifying glass
81
+ end
82
+
83
+ def self.question
84
+ Rainbow("\u003F").yellow # Question mark
85
+ end
86
+
87
+ def self.arrow_right
88
+ Rainbow("\u27A4").yellow # Arrow pointing rightwards then curving upwards
89
+ end
90
+
91
+ def self.arrow_left
92
+ Rainbow("\u2B05").yellow # Left arrow
93
+ end
94
+
95
+ def self.arrow_up
96
+ Rainbow("\u2B06").yellow # Up arrow
97
+ end
98
+
99
+ def self.arrow_down
100
+ Rainbow("\u2B07").yellow # Down arrow
101
+ end
102
+
103
+ def self.arrow_up_down
104
+ Rainbow("\u2195").yellow # Up/down arrow
105
+ end
106
+
107
+ def self.arrow_left_right
108
+ Rainbow("\u2194").yellow # Left/right arrow
109
+ end
110
+
111
+ def self.arrow_upper_right
112
+ Rainbow("\u2197").yellow # North east arrow
113
+ end
114
+
115
+ def self.arrow_lower_right
116
+ Rainbow("\u2198").yellow # South east arrow
117
+ end
118
+
119
+ def self.arrow_lower_left
120
+ Rainbow("\u2199").yellow # South west arrow
121
+ end
122
+
123
+ def self.arrow_upper_left
124
+ Rainbow("\u2196").yellow # North west arrow
125
+ end
126
+
127
+ def self.arrow_up_small
128
+ Rainbow("\u2B06").yellow # Up arrow
129
+ end
130
+
131
+ def self.arrow_down_small
132
+ Rainbow("\u2B07").yellow # Down arrow
133
+ end
134
+
135
+ def self.arrow_right_small
136
+ Rainbow("\u27A1").yellow # Black rightwards arrow
137
+ end
138
+
139
+ def self.arrow_left_small
140
+ Rainbow("\u2B05").yellow # Left arrow
141
+ end
142
+
143
+ def self.arrow_up_down_small
144
+ Rainbow("\u2195").yellow # Up/down arrow
145
+ end
146
+
147
+ def self.music
148
+ Rainbow("\u266B").yellow # Beamed eighth notes
149
+ end
150
+
151
+ # Get appropriate symbol for log severity level
152
+ #
153
+ # Returns a colored Unicode symbol that matches the given log severity level.
154
+ # Used primarily in log formatting to provide visual indicators.
155
+ #
156
+ # @param severity [String] The severity level (DEBUG, WARN, ERROR, FATAL)
157
+ # @return [String] Colored Unicode symbol or space for unrecognized levels
158
+ def self.get_severity_symbol(severity)
159
+ case severity
160
+ when "DEBUG"
161
+ question
162
+ # when "INFO"
163
+ # info
164
+ when "WARN"
165
+ warning
166
+ when "ERROR"
167
+ error
168
+ when "FATAL"
169
+ fatal
170
+ else
171
+ " "
172
+ end
173
+ end
174
+ end
175
+ end