makit 0.0.157 → 0.0.158

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 (177) 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/azure/blob_storage.rb +257 -257
  7. data/lib/makit/azure/cli.rb +284 -284
  8. data/lib/makit/cli/base.rb +17 -17
  9. data/lib/makit/cli/build_commands.rb +500 -500
  10. data/lib/makit/cli/generators/base_generator.rb +74 -74
  11. data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
  12. data/lib/makit/cli/generators/generator_factory.rb +49 -49
  13. data/lib/makit/cli/generators/node_generator.rb +50 -50
  14. data/lib/makit/cli/generators/ruby_generator.rb +77 -77
  15. data/lib/makit/cli/generators/rust_generator.rb +50 -50
  16. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
  17. data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
  18. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
  19. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +41 -41
  20. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
  21. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
  22. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
  23. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
  24. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
  25. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
  26. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
  27. data/lib/makit/cli/main.rb +78 -78
  28. data/lib/makit/cli/pipeline_commands.rb +311 -311
  29. data/lib/makit/cli/project_commands.rb +868 -868
  30. data/lib/makit/cli/repository_commands.rb +661 -661
  31. data/lib/makit/cli/strategy_commands.rb +207 -207
  32. data/lib/makit/cli/utility_commands.rb +521 -521
  33. data/lib/makit/commands/factory.rb +359 -359
  34. data/lib/makit/commands/middleware/base.rb +73 -73
  35. data/lib/makit/commands/middleware/cache.rb +248 -248
  36. data/lib/makit/commands/middleware/command_logger.rb +312 -312
  37. data/lib/makit/commands/middleware/validator.rb +269 -269
  38. data/lib/makit/commands/request.rb +316 -316
  39. data/lib/makit/commands/result.rb +323 -323
  40. data/lib/makit/commands/runner.rb +386 -386
  41. data/lib/makit/commands/strategies/base.rb +171 -171
  42. data/lib/makit/commands/strategies/child_process.rb +162 -162
  43. data/lib/makit/commands/strategies/factory.rb +136 -136
  44. data/lib/makit/commands/strategies/synchronous.rb +139 -139
  45. data/lib/makit/commands.rb +50 -50
  46. data/lib/makit/configuration/dotnet_project.rb +48 -48
  47. data/lib/makit/configuration/gitlab_helper.rb +61 -61
  48. data/lib/makit/configuration/project.rb +292 -292
  49. data/lib/makit/configuration/rakefile_helper.rb +43 -43
  50. data/lib/makit/configuration/step.rb +34 -34
  51. data/lib/makit/configuration/timeout.rb +74 -74
  52. data/lib/makit/configuration.rb +21 -21
  53. data/lib/makit/content/default_gitignore.rb +7 -7
  54. data/lib/makit/content/default_gitignore.txt +225 -225
  55. data/lib/makit/content/default_rakefile.rb +13 -13
  56. data/lib/makit/content/gem_rakefile.rb +16 -16
  57. data/lib/makit/context.rb +1 -1
  58. data/lib/makit/data.rb +49 -49
  59. data/lib/makit/directories.rb +170 -170
  60. data/lib/makit/directory.rb +262 -262
  61. data/lib/makit/docs/files.rb +89 -89
  62. data/lib/makit/docs/rake.rb +102 -102
  63. data/lib/makit/dotnet/cli.rb +69 -69
  64. data/lib/makit/dotnet/project.rb +217 -217
  65. data/lib/makit/dotnet/solution.rb +38 -38
  66. data/lib/makit/dotnet/solution_classlib.rb +239 -239
  67. data/lib/makit/dotnet/solution_console.rb +264 -264
  68. data/lib/makit/dotnet/solution_maui.rb +354 -354
  69. data/lib/makit/dotnet/solution_wasm.rb +275 -275
  70. data/lib/makit/dotnet/solution_wpf.rb +304 -304
  71. data/lib/makit/dotnet.rb +102 -102
  72. data/lib/makit/email.rb +90 -90
  73. data/lib/makit/environment.rb +142 -142
  74. data/lib/makit/examples/runner.rb +370 -370
  75. data/lib/makit/exceptions.rb +45 -45
  76. data/lib/makit/fileinfo.rb +32 -32
  77. data/lib/makit/files.rb +43 -43
  78. data/lib/makit/gems.rb +40 -40
  79. data/lib/makit/git/cli.rb +78 -54
  80. data/lib/makit/git/repository.rb +100 -100
  81. data/lib/makit/git.rb +104 -104
  82. data/lib/makit/gitlab/pipeline.rb +857 -857
  83. data/lib/makit/gitlab/pipeline_service_impl.rb +1535 -1535
  84. data/lib/makit/gitlab_runner.rb +59 -59
  85. data/lib/makit/humanize.rb +218 -218
  86. data/lib/makit/indexer.rb +47 -47
  87. data/lib/makit/io/filesystem.rb +111 -111
  88. data/lib/makit/io/filesystem_service_impl.rb +337 -337
  89. data/lib/makit/lint.rb +212 -212
  90. data/lib/makit/logging/configuration.rb +309 -309
  91. data/lib/makit/logging/format_registry.rb +84 -84
  92. data/lib/makit/logging/formatters/base.rb +39 -39
  93. data/lib/makit/logging/formatters/console_formatter.rb +140 -140
  94. data/lib/makit/logging/formatters/json_formatter.rb +65 -65
  95. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
  96. data/lib/makit/logging/formatters/text_formatter.rb +64 -64
  97. data/lib/makit/logging/log_request.rb +119 -119
  98. data/lib/makit/logging/logger.rb +199 -199
  99. data/lib/makit/logging/sinks/base.rb +91 -91
  100. data/lib/makit/logging/sinks/console.rb +72 -72
  101. data/lib/makit/logging/sinks/file_sink.rb +92 -92
  102. data/lib/makit/logging/sinks/structured.rb +123 -123
  103. data/lib/makit/logging/sinks/unified_file_sink.rb +296 -296
  104. data/lib/makit/logging.rb +578 -578
  105. data/lib/makit/markdown.rb +75 -75
  106. data/lib/makit/mp/basic_object_mp.rb +17 -17
  107. data/lib/makit/mp/command_mp.rb +13 -13
  108. data/lib/makit/mp/command_request.mp.rb +17 -17
  109. data/lib/makit/mp/project_mp.rb +199 -199
  110. data/lib/makit/mp/string_mp.rb +205 -205
  111. data/lib/makit/nuget.rb +74 -74
  112. data/lib/makit/podman/podman.rb +458 -458
  113. data/lib/makit/podman/podman_service_impl.rb +1081 -1081
  114. data/lib/makit/port.rb +32 -32
  115. data/lib/makit/process.rb +377 -377
  116. data/lib/makit/protoc.rb +112 -112
  117. data/lib/makit/rake/cli.rb +196 -196
  118. data/lib/makit/rake/trace_controller.rb +174 -174
  119. data/lib/makit/rake.rb +81 -81
  120. data/lib/makit/ruby/cli.rb +185 -185
  121. data/lib/makit/ruby.rb +25 -25
  122. data/lib/makit/rubygems.rb +137 -0
  123. data/lib/makit/secrets/azure_key_vault.rb +322 -322
  124. data/lib/makit/secrets/azure_secrets.rb +183 -183
  125. data/lib/makit/secrets/local_secrets.rb +72 -72
  126. data/lib/makit/secrets/secrets_manager.rb +105 -105
  127. data/lib/makit/secrets.rb +16 -16
  128. data/lib/makit/serializer.rb +130 -130
  129. data/lib/makit/services/builder.rb +186 -186
  130. data/lib/makit/services/error_handler.rb +226 -226
  131. data/lib/makit/services/repository_manager.rb +367 -367
  132. data/lib/makit/services/validator.rb +112 -112
  133. data/lib/makit/setup/classlib.rb +101 -101
  134. data/lib/makit/setup/gem.rb +268 -268
  135. data/lib/makit/setup/pages.rb +11 -11
  136. data/lib/makit/setup/razorclasslib.rb +101 -101
  137. data/lib/makit/setup/runner.rb +54 -54
  138. data/lib/makit/setup.rb +5 -5
  139. data/lib/makit/show.rb +110 -110
  140. data/lib/makit/storage.rb +126 -126
  141. data/lib/makit/symbols.rb +175 -175
  142. data/lib/makit/task_info.rb +130 -130
  143. data/lib/makit/tasks/at_exit.rb +15 -15
  144. data/lib/makit/tasks/build.rb +22 -22
  145. data/lib/makit/tasks/bump.rb +7 -7
  146. data/lib/makit/tasks/clean.rb +13 -13
  147. data/lib/makit/tasks/configure.rb +10 -10
  148. data/lib/makit/tasks/format.rb +10 -10
  149. data/lib/makit/tasks/hook_manager.rb +443 -443
  150. data/lib/makit/tasks/info.rb +368 -368
  151. data/lib/makit/tasks/init.rb +49 -49
  152. data/lib/makit/tasks/integrate.rb +60 -56
  153. data/lib/makit/tasks/pull_incoming.rb +13 -13
  154. data/lib/makit/tasks/secrets.rb +7 -7
  155. data/lib/makit/tasks/setup.rb +16 -16
  156. data/lib/makit/tasks/sync.rb +14 -17
  157. data/lib/makit/tasks/tag.rb +27 -27
  158. data/lib/makit/tasks/task_monkey_patch.rb +81 -81
  159. data/lib/makit/tasks/test.rb +22 -22
  160. data/lib/makit/tasks/update.rb +18 -18
  161. data/lib/makit/tasks/version.rb +6 -6
  162. data/lib/makit/tasks.rb +24 -24
  163. data/lib/makit/test_cache.rb +239 -239
  164. data/lib/makit/tree.rb +37 -37
  165. data/lib/makit/v1/configuration/project_service_impl.rb +370 -370
  166. data/lib/makit/v1/git/git_repository_service_impl.rb +295 -295
  167. data/lib/makit/v1/makit.v1_pb.rb +35 -35
  168. data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
  169. data/lib/makit/v1/services/repository_manager_service_impl.rb +572 -572
  170. data/lib/makit/version.rb +661 -503
  171. data/lib/makit/version_util.rb +21 -21
  172. data/lib/makit/wix.rb +95 -95
  173. data/lib/makit/yaml.rb +29 -29
  174. data/lib/makit/zip.rb +17 -17
  175. data/lib/makit copy.rb +44 -44
  176. data/lib/makit.rb +115 -114
  177. metadata +3 -2
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,175 +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
-
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
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