makit 0.0.169 → 0.0.171

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 +536 -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
@@ -1,105 +1,105 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "local_secrets"
4
-
5
- module Makit
6
- module Secrets
7
- # Manager class for secrets management
8
- # Uses AzureSecrets if Azure Key Vault environment variables are set,
9
- # otherwise falls back to LocalSecrets
10
- class SecretsManager
11
- def initialize
12
- @secrets_backend = choose_backend
13
- end
14
-
15
- private
16
-
17
- def choose_backend
18
- # Check if Azure Key Vault environment variables are set
19
- if azure_keyvault_configured?
20
- require_relative "azure_secrets"
21
- AzureSecrets.new
22
- else
23
- LocalSecrets.new
24
- end
25
- end
26
-
27
- def azure_keyvault_configured?
28
- # Check for Azure Key Vault configuration
29
- # Requires both AZURE_SERVICE_PRINCIPAL_APP_ID and AZURE_KEYVAULT_NAME
30
- ENV["AZURE_SERVICE_PRINCIPAL_APP_ID"] && !ENV["AZURE_SERVICE_PRINCIPAL_APP_ID"].empty? &&
31
- ENV["AZURE_KEYVAULT_NAME"] && !ENV["AZURE_KEYVAULT_NAME"].empty?
32
- end
33
-
34
- public
35
-
36
- def add(key, value)
37
- @secrets_backend.add(key, value)
38
- end
39
-
40
- def remove(key)
41
- @secrets_backend.remove(key)
42
- end
43
-
44
- def has_key?(key)
45
- @secrets_backend.has_key?(key)
46
- end
47
-
48
- def key?(key)
49
- @secrets_backend.has_key?(key)
50
- end
51
-
52
- def get(key)
53
- @secrets_backend.get(key)
54
- end
55
-
56
- def set(key, value)
57
- @secrets_backend.set(key, value)
58
- end
59
-
60
- def get_secrets_filename
61
- @secrets_backend.get_secrets_filename
62
- end
63
-
64
- def get_secrets_hash
65
- @secrets_backend.get_secrets_hash
66
- end
67
-
68
- def save_secrets_hash(hash)
69
- @secrets_backend.save_secrets_hash(hash)
70
- end
71
-
72
- def info
73
- backend_name = backend_type
74
- puts " Backend: #{backend_name}"
75
-
76
- backend_class_name = @secrets_backend.class.name
77
- if backend_class_name == "Makit::Secrets::AzureSecrets"
78
- puts " Key Vault: #{@secrets_backend.instance_variable_get(:@keyvault_name)}"
79
- secret_name = Makit::Secrets::AzureKeyVault.secret_name
80
- puts " Secret Name: #{secret_name}"
81
- prefix = @secrets_backend.instance_variable_get(:@secret_prefix)
82
- puts " Secret Prefix: #{prefix}" if prefix
83
- elsif backend_class_name == "Makit::Secrets::LocalSecrets"
84
- puts " Secrets File: #{@secrets_backend.get_secrets_filename}"
85
- end
86
- puts ""
87
- @secrets_backend.info
88
- end
89
-
90
- private
91
-
92
- def backend_type
93
- backend_class_name = @secrets_backend.class.name
94
- case backend_class_name
95
- when "Makit::Secrets::AzureSecrets"
96
- "Azure Key Vault"
97
- when "Makit::Secrets::LocalSecrets"
98
- "LocalSecrets"
99
- else
100
- backend_class_name.split("::").last
101
- end
102
- end
103
- end
104
- end
105
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "local_secrets"
4
+
5
+ module Makit
6
+ module Secrets
7
+ # Manager class for secrets management
8
+ # Uses AzureSecrets if Azure Key Vault environment variables are set,
9
+ # otherwise falls back to LocalSecrets
10
+ class SecretsManager
11
+ def initialize
12
+ @secrets_backend = choose_backend
13
+ end
14
+
15
+ private
16
+
17
+ def choose_backend
18
+ # Check if Azure Key Vault environment variables are set
19
+ if azure_keyvault_configured?
20
+ require_relative "azure_secrets"
21
+ AzureSecrets.new
22
+ else
23
+ LocalSecrets.new
24
+ end
25
+ end
26
+
27
+ def azure_keyvault_configured?
28
+ # Check for Azure Key Vault configuration
29
+ # Requires both AZURE_SERVICE_PRINCIPAL_APP_ID and AZURE_KEYVAULT_NAME
30
+ ENV["AZURE_SERVICE_PRINCIPAL_APP_ID"] && !ENV["AZURE_SERVICE_PRINCIPAL_APP_ID"].empty? &&
31
+ ENV["AZURE_KEYVAULT_NAME"] && !ENV["AZURE_KEYVAULT_NAME"].empty?
32
+ end
33
+
34
+ public
35
+
36
+ def add(key, value)
37
+ @secrets_backend.add(key, value)
38
+ end
39
+
40
+ def remove(key)
41
+ @secrets_backend.remove(key)
42
+ end
43
+
44
+ def has_key?(key)
45
+ @secrets_backend.has_key?(key)
46
+ end
47
+
48
+ def key?(key)
49
+ @secrets_backend.has_key?(key)
50
+ end
51
+
52
+ def get(key)
53
+ @secrets_backend.get(key)
54
+ end
55
+
56
+ def set(key, value)
57
+ @secrets_backend.set(key, value)
58
+ end
59
+
60
+ def get_secrets_filename
61
+ @secrets_backend.get_secrets_filename
62
+ end
63
+
64
+ def get_secrets_hash
65
+ @secrets_backend.get_secrets_hash
66
+ end
67
+
68
+ def save_secrets_hash(hash)
69
+ @secrets_backend.save_secrets_hash(hash)
70
+ end
71
+
72
+ def info
73
+ backend_name = backend_type
74
+ puts " Backend: #{backend_name}"
75
+
76
+ backend_class_name = @secrets_backend.class.name
77
+ if backend_class_name == "Makit::Secrets::AzureSecrets"
78
+ puts " Key Vault: #{@secrets_backend.instance_variable_get(:@keyvault_name)}"
79
+ secret_name = Makit::Secrets::AzureKeyVault.secret_name
80
+ puts " Secret Name: #{secret_name}"
81
+ prefix = @secrets_backend.instance_variable_get(:@secret_prefix)
82
+ puts " Secret Prefix: #{prefix}" if prefix
83
+ elsif backend_class_name == "Makit::Secrets::LocalSecrets"
84
+ puts " Secrets File: #{@secrets_backend.get_secrets_filename}"
85
+ end
86
+ puts ""
87
+ @secrets_backend.info
88
+ end
89
+
90
+ private
91
+
92
+ def backend_type
93
+ backend_class_name = @secrets_backend.class.name
94
+ case backend_class_name
95
+ when "Makit::Secrets::AzureSecrets"
96
+ "Azure Key Vault"
97
+ when "Makit::Secrets::LocalSecrets"
98
+ "LocalSecrets"
99
+ else
100
+ backend_class_name.split("::").last
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
data/lib/makit/secrets.rb CHANGED
@@ -1,96 +1,96 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "secrets/local_secrets"
4
- require_relative "secrets/secrets_manager"
5
-
6
- module Makit
7
- module Secrets
8
- # Module for secrets management
9
- # Contains LocalSecrets and SecretsManager classes
10
-
11
- # Backward compatibility: Factory method to create a SecretsManager instance
12
- def self.new
13
- SecretsManager.new
14
- end
15
-
16
- # Get or create a default instance for module-level method calls
17
- @default_instance = nil
18
-
19
- def self.default_instance
20
- @default_instance ||= SecretsManager.new
21
- end
22
-
23
- # Module-level method: Check if a key exists
24
- # @param key [String] The secret key to check
25
- # @return [Boolean] true if key exists, false otherwise
26
- def self.has_key?(key)
27
- default_instance.has_key?(key)
28
- end
29
-
30
- # Module-level method: Get a secret value
31
- # @param key [String] The secret key to retrieve
32
- # @return [String, nil] The secret value, or nil if not found
33
- def self.get(key)
34
- default_instance.get(key)
35
- end
36
-
37
- # Module-level method: Set a secret value
38
- # If value is not provided, prompts user for password input
39
- # @param key [String] The secret key to set
40
- # @param value [String, nil] The secret value (optional, will prompt if nil)
41
- # @return [void]
42
- def self.set(key, value = nil)
43
- # If value is not provided, prompt user for password
44
- if value.nil?
45
- print "Enter password for '#{key}': "
46
-
47
- # Try to use noecho for secure password input
48
- begin
49
- require "io/console"
50
- value = $stdin.noecho { $stdin.gets }
51
- rescue LoadError, NoMethodError
52
- # Fallback to regular input if io/console is not available
53
- value = $stdin.gets
54
- end
55
-
56
- value = value.chomp if value
57
-
58
- puts "" # New line after password input
59
-
60
- if value.nil? || value.empty?
61
- raise "Password cannot be empty"
62
- end
63
- end
64
-
65
- default_instance.set(key, value)
66
- end
67
-
68
- # Module-level method: Add a secret (alias for set)
69
- # @param key [String] The secret key to add
70
- # @param value [String] The secret value
71
- # @return [void]
72
- def self.add(key, value)
73
- default_instance.add(key, value)
74
- end
75
-
76
- # Module-level method: Remove a secret
77
- # @param key [String] The secret key to remove
78
- # @return [void]
79
- def self.remove(key)
80
- default_instance.remove(key)
81
- end
82
-
83
- # Module-level method: Check if a key exists (alias for has_key?)
84
- # @param key [String] The secret key to check
85
- # @return [Boolean] true if key exists, false otherwise
86
- def self.key?(key)
87
- default_instance.key?(key)
88
- end
89
-
90
- # Module-level method: Display secrets information
91
- # @return [void]
92
- def self.info
93
- default_instance.info
94
- end
95
- end
96
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "secrets/local_secrets"
4
+ require_relative "secrets/secrets_manager"
5
+
6
+ module Makit
7
+ module Secrets
8
+ # Module for secrets management
9
+ # Contains LocalSecrets and SecretsManager classes
10
+
11
+ # Backward compatibility: Factory method to create a SecretsManager instance
12
+ def self.new
13
+ SecretsManager.new
14
+ end
15
+
16
+ # Get or create a default instance for module-level method calls
17
+ @default_instance = nil
18
+
19
+ def self.default_instance
20
+ @default_instance ||= SecretsManager.new
21
+ end
22
+
23
+ # Module-level method: Check if a key exists
24
+ # @param key [String] The secret key to check
25
+ # @return [Boolean] true if key exists, false otherwise
26
+ def self.has_key?(key)
27
+ default_instance.has_key?(key)
28
+ end
29
+
30
+ # Module-level method: Get a secret value
31
+ # @param key [String] The secret key to retrieve
32
+ # @return [String, nil] The secret value, or nil if not found
33
+ def self.get(key)
34
+ default_instance.get(key)
35
+ end
36
+
37
+ # Module-level method: Set a secret value
38
+ # If value is not provided, prompts user for password input
39
+ # @param key [String] The secret key to set
40
+ # @param value [String, nil] The secret value (optional, will prompt if nil)
41
+ # @return [void]
42
+ def self.set(key, value = nil)
43
+ # If value is not provided, prompt user for password
44
+ if value.nil?
45
+ print "Enter password for '#{key}': "
46
+
47
+ # Try to use noecho for secure password input
48
+ begin
49
+ require "io/console"
50
+ value = $stdin.noecho { $stdin.gets }
51
+ rescue LoadError, NoMethodError
52
+ # Fallback to regular input if io/console is not available
53
+ value = $stdin.gets
54
+ end
55
+
56
+ value = value.chomp if value
57
+
58
+ puts "" # New line after password input
59
+
60
+ if value.nil? || value.empty?
61
+ raise "Password cannot be empty"
62
+ end
63
+ end
64
+
65
+ default_instance.set(key, value)
66
+ end
67
+
68
+ # Module-level method: Add a secret (alias for set)
69
+ # @param key [String] The secret key to add
70
+ # @param value [String] The secret value
71
+ # @return [void]
72
+ def self.add(key, value)
73
+ default_instance.add(key, value)
74
+ end
75
+
76
+ # Module-level method: Remove a secret
77
+ # @param key [String] The secret key to remove
78
+ # @return [void]
79
+ def self.remove(key)
80
+ default_instance.remove(key)
81
+ end
82
+
83
+ # Module-level method: Check if a key exists (alias for has_key?)
84
+ # @param key [String] The secret key to check
85
+ # @return [Boolean] true if key exists, false otherwise
86
+ def self.key?(key)
87
+ default_instance.key?(key)
88
+ end
89
+
90
+ # Module-level method: Display secrets information
91
+ # @return [void]
92
+ def self.info
93
+ default_instance.info
94
+ end
95
+ end
96
+ end
@@ -1,130 +1,130 @@
1
- # frozen_string_literal: true
2
-
3
- begin
4
- require "google/protobuf"
5
- rescue LoadError
6
- # google-protobuf gem not available, define a minimal protobuf interface
7
- module Google
8
- module Protobuf
9
- class Message
10
- def to_json(*_args)
11
- {}
12
- end
13
- end
14
- end
15
- end
16
- end
17
- # This module provides classes for the Makit gem.
18
- module Makit
19
- module Proto3Formats
20
- JSON = [0,
21
- PRETTY_JSON = 1,
22
- YAML = 2,
23
- BINARY = 3].freeze
24
- end
25
-
26
- # This class provide methods for serializing and deserializing objects.
27
- #
28
- class Serializer
29
- attr_accessor :format_map
30
-
31
- def self.save_as(filename, object)
32
- extension = File.extname(filename)
33
- case extension
34
- when ".json"
35
- File.write(filename, Makit::Serializer.new(Makit::Proto3Formats::PRETTY_JSON).serialize(object))
36
- when ".yml"
37
- File.write(filename, Makit::Serializer.new(Makit::Proto3Formats::YAML).serialize(object))
38
- when ".pb"
39
- File.binwrite(filename, Makit::Serializer.new(Makit::Proto3Formats::BINARY).serialize(object))
40
-
41
- # File.write(filename, Makit::Serializer.new(Makit::Proto3Formats::BINARY).serialize(object))
42
- else
43
- raise "unsupported file extension: #{extension}"
44
- end
45
- end
46
-
47
- def self.open(filename, type)
48
- extension = File.extname(filename)
49
- case extension
50
- when ".json"
51
- Makit::Serializer.new(Makit::Proto3Formats::PRETTY_JSON).deserialize(type, File.read(filename))
52
- when ".yml"
53
- Makit::Serializer.new(Makit::Proto3Formats::YAML).deserialize(type, File.read(filename))
54
- when ".pb"
55
- data = File.binread(filename)
56
- Makit::Serializer.new(Makit::Proto3Formats::BINARY).deserialize(type, data)
57
- else
58
- raise "unsupported file extension: #{extension}"
59
- end
60
- end
61
-
62
- def initialize(proto3_format = Proto3Formats::PRETTY_JSON)
63
- @format_maps = {
64
- ::Google::Protobuf::MessageExts => proto3_format,
65
- }
66
- end
67
-
68
- # Serialize an object to a byte[] or a string
69
- def serialize(object)
70
- raise "Object is nil" if object.nil?
71
- raise "object is not of type ::Google::Protobuf::MessageExts" unless object.is_a? ::Google::Protobuf::MessageExts
72
-
73
- case @format_maps[::Google::Protobuf::MessageExts]
74
- when Proto3Formats::JSON
75
- # puts "Serializing to protobuf json format"
76
- object.to_json
77
- when Proto3Formats::PRETTY_JSON
78
- # puts "Serializing to protobuf pretty json format"
79
- json = object.to_json
80
- JSON.pretty_generate(JSON.parse(json))
81
- when Proto3Formats::YAML
82
- # puts "Serializing to protobuf yaml format"
83
- data = JSON.parse(object.to_json)
84
- data.to_yaml.sub(/^---\n/, "")
85
- when Proto3Formats::BINARY
86
- # puts "Serializing to protobuf binary format"
87
- object.to_proto
88
- else
89
- raise "Unknown serialization format"
90
- end
91
- end
92
-
93
- # Deserialize a byte[] or a string to an object
94
- def deserialize(type, data)
95
- raise "data is nil" if data.nil?
96
-
97
- case @format_maps[::Google::Protobuf::MessageExts]
98
- when Proto3Formats::JSON
99
- raise "data is not of type string" unless data.is_a? String
100
-
101
- json = data
102
- # puts "Deserializing from protobuf json format into type #{type}"
103
- # use the from_json method to deserialize the object
104
- type.decode_json(json)
105
- when Proto3Formats::PRETTY_JSON
106
- raise "data is not of type string" unless data.is_a? String
107
-
108
- json = data
109
- # puts "Deserializing from protobuf pretty json format into type #{type}"
110
- # use the from_json method to deserialize the object
111
- type.decode_json(json)
112
- when Proto3Formats::YAML
113
- raise "data is not of type string" unless data.is_a? String
114
-
115
- yaml = data
116
- # convert yaml to json
117
- json = JSON.pretty_generate(YAML.safe_load(yaml))
118
- # puts "Deserializing from protobuf yaml format into type #{type}"
119
- type.decode_json(json)
120
- when Proto3Formats::BINARY
121
- # raise "data is not of type byte[]" if !data.is_a? Array
122
- bytes = data
123
- # puts "Deserializing from protobuf binary format into type #{type}"
124
- type.decode(bytes)
125
- else
126
- raise "Unknown serialization format"
127
- end
128
- end
129
- end
130
- end
1
+ # frozen_string_literal: true
2
+
3
+ begin
4
+ require "google/protobuf"
5
+ rescue LoadError
6
+ # google-protobuf gem not available, define a minimal protobuf interface
7
+ module Google
8
+ module Protobuf
9
+ class Message
10
+ def to_json(*_args)
11
+ {}
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ # This module provides classes for the Makit gem.
18
+ module Makit
19
+ module Proto3Formats
20
+ JSON = [0,
21
+ PRETTY_JSON = 1,
22
+ YAML = 2,
23
+ BINARY = 3].freeze
24
+ end
25
+
26
+ # This class provide methods for serializing and deserializing objects.
27
+ #
28
+ class Serializer
29
+ attr_accessor :format_map
30
+
31
+ def self.save_as(filename, object)
32
+ extension = File.extname(filename)
33
+ case extension
34
+ when ".json"
35
+ File.write(filename, Makit::Serializer.new(Makit::Proto3Formats::PRETTY_JSON).serialize(object))
36
+ when ".yml"
37
+ File.write(filename, Makit::Serializer.new(Makit::Proto3Formats::YAML).serialize(object))
38
+ when ".pb"
39
+ File.binwrite(filename, Makit::Serializer.new(Makit::Proto3Formats::BINARY).serialize(object))
40
+
41
+ # File.write(filename, Makit::Serializer.new(Makit::Proto3Formats::BINARY).serialize(object))
42
+ else
43
+ raise "unsupported file extension: #{extension}"
44
+ end
45
+ end
46
+
47
+ def self.open(filename, type)
48
+ extension = File.extname(filename)
49
+ case extension
50
+ when ".json"
51
+ Makit::Serializer.new(Makit::Proto3Formats::PRETTY_JSON).deserialize(type, File.read(filename))
52
+ when ".yml"
53
+ Makit::Serializer.new(Makit::Proto3Formats::YAML).deserialize(type, File.read(filename))
54
+ when ".pb"
55
+ data = File.binread(filename)
56
+ Makit::Serializer.new(Makit::Proto3Formats::BINARY).deserialize(type, data)
57
+ else
58
+ raise "unsupported file extension: #{extension}"
59
+ end
60
+ end
61
+
62
+ def initialize(proto3_format = Proto3Formats::PRETTY_JSON)
63
+ @format_maps = {
64
+ ::Google::Protobuf::MessageExts => proto3_format,
65
+ }
66
+ end
67
+
68
+ # Serialize an object to a byte[] or a string
69
+ def serialize(object)
70
+ raise "Object is nil" if object.nil?
71
+ raise "object is not of type ::Google::Protobuf::MessageExts" unless object.is_a? ::Google::Protobuf::MessageExts
72
+
73
+ case @format_maps[::Google::Protobuf::MessageExts]
74
+ when Proto3Formats::JSON
75
+ # puts "Serializing to protobuf json format"
76
+ object.to_json
77
+ when Proto3Formats::PRETTY_JSON
78
+ # puts "Serializing to protobuf pretty json format"
79
+ json = object.to_json
80
+ JSON.pretty_generate(JSON.parse(json))
81
+ when Proto3Formats::YAML
82
+ # puts "Serializing to protobuf yaml format"
83
+ data = JSON.parse(object.to_json)
84
+ data.to_yaml.sub(/^---\n/, "")
85
+ when Proto3Formats::BINARY
86
+ # puts "Serializing to protobuf binary format"
87
+ object.to_proto
88
+ else
89
+ raise "Unknown serialization format"
90
+ end
91
+ end
92
+
93
+ # Deserialize a byte[] or a string to an object
94
+ def deserialize(type, data)
95
+ raise "data is nil" if data.nil?
96
+
97
+ case @format_maps[::Google::Protobuf::MessageExts]
98
+ when Proto3Formats::JSON
99
+ raise "data is not of type string" unless data.is_a? String
100
+
101
+ json = data
102
+ # puts "Deserializing from protobuf json format into type #{type}"
103
+ # use the from_json method to deserialize the object
104
+ type.decode_json(json)
105
+ when Proto3Formats::PRETTY_JSON
106
+ raise "data is not of type string" unless data.is_a? String
107
+
108
+ json = data
109
+ # puts "Deserializing from protobuf pretty json format into type #{type}"
110
+ # use the from_json method to deserialize the object
111
+ type.decode_json(json)
112
+ when Proto3Formats::YAML
113
+ raise "data is not of type string" unless data.is_a? String
114
+
115
+ yaml = data
116
+ # convert yaml to json
117
+ json = JSON.pretty_generate(YAML.safe_load(yaml))
118
+ # puts "Deserializing from protobuf yaml format into type #{type}"
119
+ type.decode_json(json)
120
+ when Proto3Formats::BINARY
121
+ # raise "data is not of type byte[]" if !data.is_a? Array
122
+ bytes = data
123
+ # puts "Deserializing from protobuf binary format into type #{type}"
124
+ type.decode(bytes)
125
+ else
126
+ raise "Unknown serialization format"
127
+ end
128
+ end
129
+ end
130
+ end