makit 0.0.169 → 0.0.170

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