makit 0.0.112 → 0.0.128

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 (147) 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/cli/build_commands.rb +500 -500
  6. data/lib/makit/cli/generators/base_generator.rb +74 -74
  7. data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
  8. data/lib/makit/cli/generators/generator_factory.rb +49 -49
  9. data/lib/makit/cli/generators/node_generator.rb +50 -50
  10. data/lib/makit/cli/generators/ruby_generator.rb +77 -77
  11. data/lib/makit/cli/generators/rust_generator.rb +50 -50
  12. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
  13. data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
  14. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
  15. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +40 -40
  16. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
  17. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
  18. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
  19. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
  20. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
  21. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
  22. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
  23. data/lib/makit/cli/main.rb +62 -62
  24. data/lib/makit/cli/project_commands.rb +868 -868
  25. data/lib/makit/cli/repository_commands.rb +661 -661
  26. data/lib/makit/cli/utility_commands.rb +521 -521
  27. data/lib/makit/commands/factory.rb +359 -359
  28. data/lib/makit/commands/middleware/base.rb +73 -73
  29. data/lib/makit/commands/middleware/cache.rb +248 -248
  30. data/lib/makit/commands/middleware/command_logger.rb +311 -320
  31. data/lib/makit/commands/middleware/validator.rb +269 -269
  32. data/lib/makit/commands/request.rb +316 -254
  33. data/lib/makit/commands/result.rb +323 -323
  34. data/lib/makit/commands/runner.rb +368 -337
  35. data/lib/makit/commands/strategies/base.rb +171 -160
  36. data/lib/makit/commands/strategies/synchronous.rb +139 -134
  37. data/lib/makit/commands.rb +50 -51
  38. data/lib/makit/configuration/gitlab_helper.rb +58 -60
  39. data/lib/makit/configuration/project.rb +167 -127
  40. data/lib/makit/configuration/rakefile_helper.rb +43 -43
  41. data/lib/makit/configuration/step.rb +34 -34
  42. data/lib/makit/configuration.rb +14 -14
  43. data/lib/makit/content/default_gitignore.rb +7 -7
  44. data/lib/makit/content/default_gitignore.txt +226 -0
  45. data/lib/makit/content/default_rakefile.rb +13 -13
  46. data/lib/makit/content/gem_rakefile.rb +16 -16
  47. data/lib/makit/context.rb +1 -1
  48. data/lib/makit/data.rb +49 -49
  49. data/lib/makit/directories.rb +140 -141
  50. data/lib/makit/directory.rb +262 -262
  51. data/lib/makit/docs/files.rb +89 -89
  52. data/lib/makit/docs/rake.rb +102 -102
  53. data/lib/makit/dotnet/cli.rb +69 -65
  54. data/lib/makit/dotnet/project.rb +217 -153
  55. data/lib/makit/dotnet/solution.rb +38 -38
  56. data/lib/makit/dotnet/solution_classlib.rb +239 -239
  57. data/lib/makit/dotnet/solution_console.rb +264 -264
  58. data/lib/makit/dotnet/solution_maui.rb +354 -354
  59. data/lib/makit/dotnet/solution_wasm.rb +275 -275
  60. data/lib/makit/dotnet/solution_wpf.rb +304 -304
  61. data/lib/makit/dotnet.rb +102 -102
  62. data/lib/makit/email.rb +90 -90
  63. data/lib/makit/environment.rb +142 -142
  64. data/lib/makit/examples/runner.rb +370 -370
  65. data/lib/makit/exceptions.rb +45 -45
  66. data/lib/makit/fileinfo.rb +24 -24
  67. data/lib/makit/files.rb +43 -43
  68. data/lib/makit/gems.rb +40 -40
  69. data/lib/makit/git/cli.rb +54 -54
  70. data/lib/makit/git/repository.rb +90 -90
  71. data/lib/makit/git.rb +98 -98
  72. data/lib/makit/gitlab_runner.rb +59 -59
  73. data/lib/makit/humanize.rb +137 -137
  74. data/lib/makit/indexer.rb +47 -47
  75. data/lib/makit/logging/configuration.rb +308 -305
  76. data/lib/makit/logging/format_registry.rb +84 -84
  77. data/lib/makit/logging/formatters/base.rb +39 -39
  78. data/lib/makit/logging/formatters/console_formatter.rb +140 -140
  79. data/lib/makit/logging/formatters/json_formatter.rb +65 -65
  80. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
  81. data/lib/makit/logging/formatters/text_formatter.rb +64 -64
  82. data/lib/makit/logging/log_request.rb +119 -115
  83. data/lib/makit/logging/logger.rb +199 -163
  84. data/lib/makit/logging/sinks/base.rb +91 -91
  85. data/lib/makit/logging/sinks/console.rb +72 -72
  86. data/lib/makit/logging/sinks/file_sink.rb +92 -92
  87. data/lib/makit/logging/sinks/structured.rb +123 -129
  88. data/lib/makit/logging/sinks/unified_file_sink.rb +296 -303
  89. data/lib/makit/logging.rb +565 -530
  90. data/lib/makit/markdown.rb +75 -75
  91. data/lib/makit/mp/basic_object_mp.rb +17 -17
  92. data/lib/makit/mp/command_mp.rb +13 -13
  93. data/lib/makit/mp/command_request.mp.rb +17 -17
  94. data/lib/makit/mp/project_mp.rb +199 -199
  95. data/lib/makit/mp/string_mp.rb +191 -193
  96. data/lib/makit/nuget.rb +74 -74
  97. data/lib/makit/port.rb +32 -32
  98. data/lib/makit/process.rb +163 -163
  99. data/lib/makit/protoc.rb +107 -107
  100. data/lib/makit/rake/cli.rb +196 -196
  101. data/lib/makit/rake.rb +25 -25
  102. data/lib/makit/ruby/cli.rb +185 -185
  103. data/lib/makit/ruby.rb +25 -25
  104. data/lib/makit/secrets.rb +51 -51
  105. data/lib/makit/serializer.rb +130 -130
  106. data/lib/makit/services/builder.rb +186 -186
  107. data/lib/makit/services/error_handler.rb +226 -226
  108. data/lib/makit/services/repository_manager.rb +231 -229
  109. data/lib/makit/services/validator.rb +112 -112
  110. data/lib/makit/setup/classlib.rb +94 -53
  111. data/lib/makit/setup/gem.rb +268 -263
  112. data/lib/makit/setup/razorclasslib.rb +91 -0
  113. data/lib/makit/setup/runner.rb +54 -45
  114. data/lib/makit/setup.rb +5 -5
  115. data/lib/makit/show.rb +110 -110
  116. data/lib/makit/storage.rb +126 -126
  117. data/lib/makit/symbols.rb +170 -170
  118. data/lib/makit/task_info.rb +128 -128
  119. data/lib/makit/tasks/at_exit.rb +15 -13
  120. data/lib/makit/tasks/build.rb +22 -19
  121. data/lib/makit/tasks/clean.rb +13 -11
  122. data/lib/makit/tasks/configure.rb +10 -0
  123. data/lib/makit/tasks/format.rb +10 -0
  124. data/lib/makit/tasks/hook_manager.rb +391 -393
  125. data/lib/makit/tasks/init.rb +49 -47
  126. data/lib/makit/tasks/integrate.rb +29 -17
  127. data/lib/makit/tasks/pull_incoming.rb +13 -11
  128. data/lib/makit/tasks/setup.rb +13 -6
  129. data/lib/makit/tasks/sync.rb +17 -12
  130. data/lib/makit/tasks/tag.rb +16 -15
  131. data/lib/makit/tasks/task_monkey_patch.rb +81 -79
  132. data/lib/makit/tasks/test.rb +22 -0
  133. data/lib/makit/tasks/update.rb +18 -0
  134. data/lib/makit/tasks.rb +20 -15
  135. data/lib/makit/test_cache.rb +239 -239
  136. data/lib/makit/tree.rb +37 -37
  137. data/lib/makit/v1/makit.v1_pb.rb +35 -34
  138. data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
  139. data/lib/makit/version.rb +5 -5
  140. data/lib/makit/version_util.rb +21 -21
  141. data/lib/makit/wix.rb +95 -95
  142. data/lib/makit/yaml.rb +29 -29
  143. data/lib/makit/zip.rb +17 -17
  144. data/lib/makit copy.rb +44 -44
  145. data/lib/makit.rb +39 -40
  146. metadata +69 -7
  147. data/lib/makit/commands/middleware/unified_logger.rb +0 -243
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: makit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.112
4
+ version: 0.0.128
5
5
  platform: ruby
6
6
  authors:
7
7
  - Your Name
@@ -66,19 +66,19 @@ dependencies:
66
66
  - !ruby/object:Gem::Version
67
67
  version: '2.6'
68
68
  - !ruby/object:Gem::Dependency
69
- name: rake
69
+ name: fiddle
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '13.0'
74
+ version: '1.0'
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '13.0'
81
+ version: '1.0'
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: minitest
84
84
  requirement: !ruby/object:Gem::Requirement
@@ -93,6 +93,62 @@ dependencies:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
95
  version: '5.0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: rake
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '13.0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '13.0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rubocop
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '1.0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '1.0'
124
+ - !ruby/object:Gem::Dependency
125
+ name: rubocop-minitest
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '0.35'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '0.35'
138
+ - !ruby/object:Gem::Dependency
139
+ name: rubocop-rake
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '0.6'
145
+ type: :development
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '0.6'
96
152
  description: A Ruby gem description
97
153
  email:
98
154
  - your.email@example.com
@@ -132,7 +188,6 @@ files:
132
188
  - lib/makit/commands/middleware/base.rb
133
189
  - lib/makit/commands/middleware/cache.rb
134
190
  - lib/makit/commands/middleware/command_logger.rb
135
- - lib/makit/commands/middleware/unified_logger.rb
136
191
  - lib/makit/commands/middleware/validator.rb
137
192
  - lib/makit/commands/request.rb
138
193
  - lib/makit/commands/result.rb
@@ -145,6 +200,7 @@ files:
145
200
  - lib/makit/configuration/rakefile_helper.rb
146
201
  - lib/makit/configuration/step.rb
147
202
  - lib/makit/content/default_gitignore.rb
203
+ - lib/makit/content/default_gitignore.txt
148
204
  - lib/makit/content/default_rakefile.rb
149
205
  - lib/makit/content/gem_rakefile.rb
150
206
  - lib/makit/context.rb
@@ -213,6 +269,7 @@ files:
213
269
  - lib/makit/setup.rb
214
270
  - lib/makit/setup/classlib.rb
215
271
  - lib/makit/setup/gem.rb
272
+ - lib/makit/setup/razorclasslib.rb
216
273
  - lib/makit/setup/runner.rb
217
274
  - lib/makit/show.rb
218
275
  - lib/makit/storage.rb
@@ -222,6 +279,8 @@ files:
222
279
  - lib/makit/tasks/at_exit.rb
223
280
  - lib/makit/tasks/build.rb
224
281
  - lib/makit/tasks/clean.rb
282
+ - lib/makit/tasks/configure.rb
283
+ - lib/makit/tasks/format.rb
225
284
  - lib/makit/tasks/hook_manager.rb
226
285
  - lib/makit/tasks/init.rb
227
286
  - lib/makit/tasks/integrate.rb
@@ -230,6 +289,8 @@ files:
230
289
  - lib/makit/tasks/sync.rb
231
290
  - lib/makit/tasks/tag.rb
232
291
  - lib/makit/tasks/task_monkey_patch.rb
292
+ - lib/makit/tasks/test.rb
293
+ - lib/makit/tasks/update.rb
233
294
  - lib/makit/test_cache.rb
234
295
  - lib/makit/tree.rb
235
296
  - lib/makit/v1/makit.v1_pb.rb
@@ -242,7 +303,8 @@ files:
242
303
  homepage: https://github.com/yourusername/makit
243
304
  licenses:
244
305
  - MIT
245
- metadata: {}
306
+ metadata:
307
+ rubygems_mfa_required: 'true'
246
308
  rdoc_options: []
247
309
  require_paths:
248
310
  - lib
@@ -257,7 +319,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
257
319
  - !ruby/object:Gem::Version
258
320
  version: '0'
259
321
  requirements: []
260
- rubygems_version: 3.6.9
322
+ rubygems_version: 3.7.0
261
323
  specification_version: 4
262
324
  summary: A Ruby gem
263
325
  test_files: []
@@ -1,243 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "base"
4
-
5
- module Makit
6
- module Commands
7
- module Middleware
8
- # Unified logging middleware that consolidates all command logging functionality
9
- #
10
- # This middleware replaces the need for multiple separate logging middleware
11
- # by providing a single, comprehensive logging solution that handles console
12
- # display, file logging, and structured logging through the Makit::Logging system.
13
- #
14
- # @example Basic usage
15
- # logger = UnifiedLogger.new
16
- # runner = Runner.new(middleware: [logger])
17
- # result = runner.execute("git --version")
18
- #
19
- # @example With custom logger configuration
20
- # custom_logger = Makit::Logging::Logger.new(
21
- # sinks: [
22
- # Makit::Logging::Sinks::Console.new,
23
- # Makit::Logging::Sinks::FileSink.new(log_file: "artifacts/commands.log")
24
- # ]
25
- # )
26
- # logger = UnifiedLogger.new(logger: custom_logger)
27
- # runner = Runner.new(middleware: [logger])
28
- class UnifiedLogger < Base
29
- # @!attribute [r] logger
30
- # @return [Makit::Logging::Logger] the logging instance
31
- attr_reader :logger
32
-
33
- # Initialize unified logging middleware.
34
- #
35
- # @param logger [Makit::Logging::Logger, nil] custom logger instance
36
- # @param log_to_console [Boolean] whether to log to console
37
- # @param log_to_file [Boolean] whether to log to file
38
- # @param log_performance [Boolean] whether to log performance metrics
39
- # @param log_output [Boolean] whether to log command output
40
- def initialize(logger: nil, log_to_console: true, log_to_file: true, log_performance: true, log_output: false)
41
- @logger = logger || create_default_logger(log_to_console, log_to_file)
42
- @log_performance = log_performance
43
- @log_output = log_output
44
- end
45
-
46
- # Execute command with unified logging.
47
- #
48
- # @param request [Request] command request to execute
49
- # @yield [Request] yields request to next middleware
50
- # @return [Result] execution result
51
- def call(request, &block)
52
- command_id = generate_command_id
53
- start_time = Time.now
54
-
55
- # Log command start
56
- log_command_start(request, command_id)
57
-
58
- begin
59
- # Execute the command
60
- result = block.call(request)
61
- duration = Time.now - start_time
62
-
63
- # Log command completion
64
- log_command_completion(request, result, duration, command_id)
65
-
66
- result
67
- rescue => error
68
- duration = Time.now - start_time
69
-
70
- # Log command error
71
- log_command_error(request, error, duration, command_id)
72
-
73
- raise
74
- end
75
- end
76
-
77
- # Check if this middleware applies to the given request.
78
- #
79
- # @param request [Request] command request
80
- # @return [Boolean] true if middleware applies
81
- def applicable?(request)
82
- true
83
- end
84
-
85
- # Get middleware configuration.
86
- #
87
- # @return [Hash] middleware configuration
88
- def config
89
- {
90
- name: "UnifiedLogger",
91
- description: "Unified logging for command execution with console and file output",
92
- log_performance: @log_performance,
93
- log_output: @log_output,
94
- logger_class: @logger.class.name,
95
- }
96
- end
97
-
98
- private
99
-
100
- # Create default logger with console and file output
101
- #
102
- # @param log_to_console [Boolean] whether to log to console
103
- # @param log_to_file [Boolean] whether to log to file
104
- # @return [Makit::Logging::Logger] configured logger
105
- def create_default_logger(log_to_console, log_to_file)
106
- sinks = []
107
-
108
- if log_to_console
109
- sinks << Makit::Logging::Sinks::Console.new
110
- end
111
-
112
- if log_to_file
113
- sinks << Makit::Logging::Sinks::FileSink.new(
114
- log_file: "artifacts/commands.log",
115
- formatter: :json,
116
- include_metadata: true,
117
- )
118
- end
119
-
120
- Makit::Logging::Logger.new(sinks: sinks)
121
- end
122
-
123
- # Log command execution start.
124
- #
125
- # @param request [Request] command request
126
- # @param command_id [String] unique command identifier
127
- def log_command_start(request, command_id)
128
- @logger.info("Command execution started", {
129
- command_id: command_id,
130
- command: request.command,
131
- arguments: request.arguments,
132
- working_directory: request.directory,
133
- timeout: request.timeout,
134
- environment: request.environment&.keys || [],
135
- })
136
- end
137
-
138
- # Log command execution completion.
139
- #
140
- # @param request [Request] command request
141
- # @param result [Result] execution result
142
- # @param duration [Float] execution duration
143
- # @param command_id [String] unique command identifier
144
- def log_command_completion(request, result, duration, command_id)
145
- log_data = {
146
- command_id: command_id,
147
- command: request.command,
148
- arguments: request.arguments,
149
- success: result.success?,
150
- exit_code: result.exit_code,
151
- duration: duration,
152
- working_directory: request.directory,
153
- }
154
-
155
- # Add performance metrics if enabled
156
- if @log_performance
157
- log_data.merge!(
158
- memory_usage: get_memory_usage,
159
- timestamp: Time.now.iso8601,
160
- )
161
- end
162
-
163
- # Add output if enabled and present
164
- if @log_output
165
- log_data[:stdout_lines] = result.stdout&.split("\n")&.length || 0
166
- log_data[:stderr_lines] = result.stderr&.split("\n")&.length || 0
167
- log_data[:stdout] = result.stdout if result.stdout && !result.stdout.empty?
168
- log_data[:stderr] = result.stderr if result.stderr && !result.stderr.empty?
169
- end
170
-
171
- # Log at appropriate level based on success
172
- if result.success?
173
- @logger.success("Command completed successfully", log_data)
174
- else
175
- @logger.error("Command completed with errors", log_data)
176
- end
177
-
178
- # Log slow commands
179
- if @log_performance && duration > 1.0
180
- @logger.warn("Slow command detected",
181
- command_id: command_id,
182
- command: request.command,
183
- duration: duration)
184
- end
185
- end
186
-
187
- # Log command execution error.
188
- #
189
- # @param request [Request] command request
190
- # @param error [Exception] execution error
191
- # @param duration [Float] execution duration
192
- # @param command_id [String] unique command identifier
193
- def log_command_error(request, error, duration, command_id)
194
- @logger.error("Command execution failed", {
195
- command_id: command_id,
196
- command: request.command,
197
- arguments: request.arguments,
198
- working_directory: request.directory,
199
- error_class: error.class.name,
200
- error_message: error.message,
201
- duration: duration,
202
- backtrace: error.backtrace&.first(5),
203
- })
204
- end
205
-
206
- # Generate a unique command identifier.
207
- #
208
- # @return [String] unique command ID
209
- def generate_command_id
210
- "#{::Process.pid}-#{Time.now.to_f}-#{rand(1000)}"
211
- end
212
-
213
- # Get current memory usage (if available).
214
- #
215
- # @return [String, nil] memory usage string or nil if unavailable
216
- def get_memory_usage
217
- # Try to get memory usage on different platforms
218
- if RUBY_PLATFORM.match?(/mswin|mingw/)
219
- # Windows - try to get memory usage
220
- begin
221
- "Unknown"
222
- rescue
223
- nil
224
- end
225
- else
226
- # Unix-like systems
227
- begin
228
- # Try to get memory usage from /proc/self/status
229
- if File.exist?("/proc/self/status")
230
- status = File.read("/proc/self/status")
231
- if match = status.match(/VmRSS:\s+(\d+)\s+kB/)
232
- "#{match[1].to_i / 1024}MB"
233
- end
234
- end
235
- rescue
236
- nil
237
- end
238
- end
239
- end
240
- end
241
- end
242
- end
243
- end