makit 0.0.111 → 0.0.112
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.
- checksums.yaml +4 -4
- data/README.md +41 -41
- data/exe/makit +5 -5
- data/lib/makit/apache.rb +28 -28
- data/lib/makit/cli/build_commands.rb +500 -500
- data/lib/makit/cli/generators/base_generator.rb +74 -74
- data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
- data/lib/makit/cli/generators/generator_factory.rb +49 -49
- data/lib/makit/cli/generators/node_generator.rb +50 -50
- data/lib/makit/cli/generators/ruby_generator.rb +77 -77
- data/lib/makit/cli/generators/rust_generator.rb +50 -50
- data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
- data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
- data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
- data/lib/makit/cli/generators/templates/ruby/gemspec.rb +40 -40
- data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
- data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
- data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
- data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
- data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
- data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
- data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
- data/lib/makit/cli/main.rb +62 -62
- data/lib/makit/cli/project_commands.rb +868 -868
- data/lib/makit/cli/repository_commands.rb +661 -661
- data/lib/makit/cli/utility_commands.rb +521 -521
- data/lib/makit/commands/factory.rb +359 -359
- data/lib/makit/commands/middleware/base.rb +73 -73
- data/lib/makit/commands/middleware/cache.rb +248 -248
- data/lib/makit/commands/middleware/command_logger.rb +320 -323
- data/lib/makit/commands/middleware/unified_logger.rb +243 -243
- data/lib/makit/commands/middleware/validator.rb +269 -269
- data/lib/makit/commands/request.rb +254 -254
- data/lib/makit/commands/result.rb +323 -323
- data/lib/makit/commands/runner.rb +337 -317
- data/lib/makit/commands/strategies/base.rb +160 -160
- data/lib/makit/commands/strategies/synchronous.rb +134 -134
- data/lib/makit/commands.rb +51 -42
- data/lib/makit/configuration/gitlab_helper.rb +60 -60
- data/lib/makit/configuration/project.rb +127 -127
- data/lib/makit/configuration/rakefile_helper.rb +43 -43
- data/lib/makit/configuration/step.rb +34 -34
- data/lib/makit/configuration.rb +14 -14
- data/lib/makit/content/default_gitignore.rb +7 -7
- data/lib/makit/content/default_rakefile.rb +13 -13
- data/lib/makit/content/gem_rakefile.rb +16 -16
- data/lib/makit/context.rb +1 -1
- data/lib/makit/data.rb +49 -49
- data/lib/makit/directories.rb +141 -141
- data/lib/makit/directory.rb +262 -262
- data/lib/makit/docs/files.rb +89 -89
- data/lib/makit/docs/rake.rb +102 -102
- data/lib/makit/dotnet/project.rb +153 -153
- data/lib/makit/dotnet/solution.rb +38 -38
- data/lib/makit/dotnet/solution_classlib.rb +239 -239
- data/lib/makit/dotnet/solution_console.rb +264 -264
- data/lib/makit/dotnet/solution_maui.rb +354 -354
- data/lib/makit/dotnet/solution_wasm.rb +275 -275
- data/lib/makit/dotnet/solution_wpf.rb +304 -304
- data/lib/makit/dotnet.rb +102 -102
- data/lib/makit/email.rb +90 -90
- data/lib/makit/environment.rb +142 -142
- data/lib/makit/examples/runner.rb +370 -370
- data/lib/makit/exceptions.rb +45 -45
- data/lib/makit/fileinfo.rb +24 -24
- data/lib/makit/files.rb +43 -43
- data/lib/makit/gems.rb +40 -40
- data/lib/makit/git/cli.rb +54 -54
- data/lib/makit/git/repository.rb +90 -90
- data/lib/makit/git.rb +98 -98
- data/lib/makit/gitlab_runner.rb +59 -59
- data/lib/makit/humanize.rb +137 -137
- data/lib/makit/indexer.rb +47 -47
- data/lib/makit/logging/configuration.rb +305 -305
- data/lib/makit/logging/formatters/base.rb +39 -39
- data/lib/makit/logging/formatters/console_formatter.rb +140 -127
- data/lib/makit/logging/formatters/json_formatter.rb +65 -65
- data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
- data/lib/makit/logging/formatters/text_formatter.rb +64 -64
- data/lib/makit/logging/log_request.rb +115 -115
- data/lib/makit/logging/logger.rb +163 -159
- data/lib/makit/logging/sinks/console.rb +72 -72
- data/lib/makit/logging/sinks/file_sink.rb +92 -92
- data/lib/makit/logging/sinks/unified_file_sink.rb +303 -303
- data/lib/makit/logging.rb +530 -521
- data/lib/makit/markdown.rb +75 -75
- data/lib/makit/mp/basic_object_mp.rb +17 -17
- data/lib/makit/mp/command_mp.rb +13 -13
- data/lib/makit/mp/command_request.mp.rb +17 -17
- data/lib/makit/mp/project_mp.rb +199 -199
- data/lib/makit/mp/string_mp.rb +193 -348
- data/lib/makit/nuget.rb +74 -74
- data/lib/makit/port.rb +32 -32
- data/lib/makit/process.rb +163 -163
- data/lib/makit/protoc.rb +107 -107
- data/lib/makit/rake/cli.rb +196 -196
- data/lib/makit/rake.rb +25 -25
- data/lib/makit/ruby/cli.rb +185 -185
- data/lib/makit/ruby.rb +25 -25
- data/lib/makit/secrets.rb +51 -51
- data/lib/makit/serializer.rb +130 -117
- data/lib/makit/services/builder.rb +186 -186
- data/lib/makit/services/error_handler.rb +226 -226
- data/lib/makit/services/repository_manager.rb +229 -229
- data/lib/makit/services/validator.rb +112 -112
- data/lib/makit/setup/classlib.rb +53 -53
- data/lib/makit/setup/gem.rb +30 -17
- data/lib/makit/setup/runner.rb +45 -40
- data/lib/makit/setup.rb +5 -0
- data/lib/makit/show.rb +110 -110
- data/lib/makit/storage.rb +126 -126
- data/lib/makit/symbols.rb +170 -161
- data/lib/makit/task_info.rb +128 -128
- data/lib/makit/tasks/at_exit.rb +13 -13
- data/lib/makit/tasks/build.rb +19 -18
- data/lib/makit/tasks/clean.rb +11 -11
- data/lib/makit/tasks/hook_manager.rb +393 -239
- data/lib/makit/tasks/init.rb +47 -47
- data/lib/makit/tasks/integrate.rb +17 -15
- data/lib/makit/tasks/pull_incoming.rb +11 -12
- data/lib/makit/tasks/setup.rb +6 -6
- data/lib/makit/tasks/sync.rb +12 -11
- data/lib/makit/tasks/tag.rb +15 -0
- data/lib/makit/tasks/task_monkey_patch.rb +79 -79
- data/lib/makit/tasks.rb +10 -0
- data/lib/makit/test_cache.rb +239 -239
- data/lib/makit/tree.rb +37 -37
- data/lib/makit/v1/makit.v1_pb.rb +34 -34
- data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
- data/lib/makit/version.rb +5 -5
- data/lib/makit/version_util.rb +21 -0
- data/lib/makit/wix.rb +95 -95
- data/lib/makit/yaml.rb +29 -29
- data/lib/makit/zip.rb +17 -17
- data/lib/makit copy.rb +44 -0
- data/lib/makit.rb +40 -8
- metadata +50 -7
- data/lib/makit/command_runner.rb +0 -463
- data/lib/makit/commands/compatibility.rb +0 -365
- data/lib/makit/task_hooks.rb +0 -125
data/lib/makit/mp/string_mp.rb
CHANGED
@@ -1,348 +1,193 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "json"
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
request_options[:
|
34
|
-
when "
|
35
|
-
request_options[:
|
36
|
-
when "
|
37
|
-
request_options[:
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
Makit::COMMANDS_COMPAT.show_command(cmd)
|
195
|
-
end
|
196
|
-
|
197
|
-
def cache_log(filename, timestamp = nil)
|
198
|
-
# Ensure directory exists if filename contains path
|
199
|
-
if filename.include?("/")
|
200
|
-
directory = File.dirname(filename)
|
201
|
-
FileUtils.mkdir_p(directory)
|
202
|
-
end
|
203
|
-
command = self
|
204
|
-
|
205
|
-
#Makit::Logging.info("Cache logging command output", {
|
206
|
-
# command: command,
|
207
|
-
# log_file: filename,
|
208
|
-
# timestamp: timestamp ? Makit::Humanize.get_humanized_timestamp(timestamp) : nil
|
209
|
-
#})
|
210
|
-
|
211
|
-
# Use cache_run with optional timestamp
|
212
|
-
cmd = if timestamp.nil?
|
213
|
-
Makit::COMMANDS_COMPAT.cache_run(Makit::COMMANDS_COMPAT.parse_command_request(command))
|
214
|
-
else
|
215
|
-
Makit::COMMANDS_COMPAT.cache_run(Makit::COMMANDS_COMPAT.parse_command_request(command), timestamp)
|
216
|
-
end
|
217
|
-
|
218
|
-
# Write the cached command output and error to the file
|
219
|
-
File.write(filename, cmd.output + cmd.error)
|
220
|
-
|
221
|
-
# Log the execution result
|
222
|
-
if cmd.success?
|
223
|
-
Makit::Logging.success(command)
|
224
|
-
#Makit::Logging.success("Command executed and cached", {
|
225
|
-
# command: command,
|
226
|
-
# log_file: filename,
|
227
|
-
# cached: true,
|
228
|
-
# output_length: cmd.output.length,
|
229
|
-
# error_length: cmd.error.length
|
230
|
-
# })
|
231
|
-
else
|
232
|
-
Makit::Logging.error("Command failed and cached", {
|
233
|
-
command: command,
|
234
|
-
log_file: filename,
|
235
|
-
exit_code: cmd.exit_code,
|
236
|
-
cached: true,
|
237
|
-
output_length: cmd.output.length,
|
238
|
-
error_length: cmd.error.length,
|
239
|
-
})
|
240
|
-
end
|
241
|
-
|
242
|
-
# Display detailed output and log location only if it failed
|
243
|
-
return if cmd.success?
|
244
|
-
|
245
|
-
Makit::COMMANDS_COMPAT.show_command(cmd)
|
246
|
-
Makit::Logging.info("Log written to file", {
|
247
|
-
log_file: File.expand_path(filename),
|
248
|
-
})
|
249
|
-
end
|
250
|
-
|
251
|
-
def cache_try(timestamp = nil)
|
252
|
-
command = self
|
253
|
-
|
254
|
-
Makit::Logging.info("Trying cached command execution", {
|
255
|
-
command: command,
|
256
|
-
timestamp: timestamp ? Makit::Humanize.get_humanized_timestamp(timestamp) : nil,
|
257
|
-
})
|
258
|
-
|
259
|
-
result = if timestamp.nil?
|
260
|
-
# Use default timestamp from compatibility layer
|
261
|
-
Makit::COMMANDS_COMPAT.cache_try(Makit::COMMANDS_COMPAT.parse_command_request(command))
|
262
|
-
else
|
263
|
-
Makit::COMMANDS_COMPAT.cache_try(Makit::COMMANDS_COMPAT.parse_command_request(command), timestamp)
|
264
|
-
end
|
265
|
-
|
266
|
-
# Log the result
|
267
|
-
if result.success?
|
268
|
-
Makit::Logging.success("Cached command executed successfully", {
|
269
|
-
command: command,
|
270
|
-
cached: true,
|
271
|
-
duration: result.duration,
|
272
|
-
})
|
273
|
-
else
|
274
|
-
Makit::Logging.warn("Cached command failed", {
|
275
|
-
command: command,
|
276
|
-
exit_code: result.exit_code,
|
277
|
-
cached: true,
|
278
|
-
})
|
279
|
-
end
|
280
|
-
|
281
|
-
result
|
282
|
-
end
|
283
|
-
|
284
|
-
# Read a value from a JSON file
|
285
|
-
# key is a string with the key to read, e.g. "AzureAd.Authority"
|
286
|
-
def get_json_value(key)
|
287
|
-
json = File.read(self)
|
288
|
-
data = JSON.parse(json)
|
289
|
-
|
290
|
-
# key delimiter is '.' so we can access nested keys
|
291
|
-
key.split(".").each do |k|
|
292
|
-
data = data[k]
|
293
|
-
end
|
294
|
-
data
|
295
|
-
end
|
296
|
-
|
297
|
-
alias retrieve get_json_value
|
298
|
-
|
299
|
-
# Set a value in a JSON file
|
300
|
-
# key is a string with the key to set, e.g. "AzureAd.Authority"
|
301
|
-
def set_json_value(key, value)
|
302
|
-
file = File.read(self)
|
303
|
-
data = JSON.parse(file)
|
304
|
-
keys = key.split(".")
|
305
|
-
current = data
|
306
|
-
|
307
|
-
# Traverse and create any missing keys
|
308
|
-
keys[0..-2].each do |k|
|
309
|
-
current[k] ||= {} # Create a new hash if the key doesn't exist
|
310
|
-
current = current[k]
|
311
|
-
end
|
312
|
-
|
313
|
-
# Set the value for the final key
|
314
|
-
current[keys[-1]] = value
|
315
|
-
|
316
|
-
# Write the JSON back to the file
|
317
|
-
File.write(self, JSON.pretty_generate(data))
|
318
|
-
end
|
319
|
-
|
320
|
-
# Alias for set_json_value
|
321
|
-
alias assign set_json_value
|
322
|
-
|
323
|
-
def strip_color_codes
|
324
|
-
# Regular expression to remove ANSI color codes
|
325
|
-
gsub(/\e\[[\d;]+m/, "")
|
326
|
-
end
|
327
|
-
|
328
|
-
def to_lines(max_length = 80, indent_length = 5)
|
329
|
-
return self if length <= max_length
|
330
|
-
|
331
|
-
indent = " " * indent_length
|
332
|
-
words = split(" ")
|
333
|
-
lines = []
|
334
|
-
line = ""
|
335
|
-
words.each do |word|
|
336
|
-
if (line + word).length > max_length
|
337
|
-
lines << line
|
338
|
-
line = indent + word
|
339
|
-
elsif line.empty?
|
340
|
-
line = word
|
341
|
-
else
|
342
|
-
line += " #{word}"
|
343
|
-
end
|
344
|
-
end
|
345
|
-
lines << line
|
346
|
-
lines.join("\n")
|
347
|
-
end
|
348
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "json"
|
4
|
+
require "fileutils"
|
5
|
+
# monkey patch String class with command execution methods
|
6
|
+
|
7
|
+
class String
|
8
|
+
def run(args = nil)
|
9
|
+
command = self
|
10
|
+
if args.nil?
|
11
|
+
request = Makit::Commands::Request.from_string(command)
|
12
|
+
Makit::Commands::Runner.default.execute(request)
|
13
|
+
else
|
14
|
+
# Parse initial request
|
15
|
+
base_request = Makit::Commands::Request.from_string(command)
|
16
|
+
|
17
|
+
if args.is_a?(Hash)
|
18
|
+
# Create new request with combined options
|
19
|
+
request_options = {
|
20
|
+
command: base_request.command,
|
21
|
+
arguments: base_request.arguments || [],
|
22
|
+
directory: base_request.directory,
|
23
|
+
timeout: base_request.timeout,
|
24
|
+
environment: base_request.environment || {},
|
25
|
+
metadata: base_request.metadata || {},
|
26
|
+
}
|
27
|
+
|
28
|
+
# Apply args to the request options
|
29
|
+
args.each do |key, value|
|
30
|
+
case key.to_s
|
31
|
+
when "arguments"
|
32
|
+
# Append additional arguments
|
33
|
+
request_options[:arguments] = (request_options[:arguments] + Array(value)).flatten
|
34
|
+
when "directory"
|
35
|
+
request_options[:directory] = value
|
36
|
+
when "timeout"
|
37
|
+
request_options[:timeout] = value
|
38
|
+
when "environment"
|
39
|
+
request_options[:environment] = (request_options[:environment] || {}).merge(value)
|
40
|
+
when "metadata"
|
41
|
+
request_options[:metadata] = (request_options[:metadata] || {}).merge(value)
|
42
|
+
else
|
43
|
+
# Add unknown keys to metadata
|
44
|
+
request_options[:metadata] = (request_options[:metadata] || {}).merge(key.to_s => value)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# Create new request with combined options
|
49
|
+
request = Makit::Commands::Request.new(**request_options)
|
50
|
+
Makit::Commands::Runner.default.execute(request)
|
51
|
+
else
|
52
|
+
# args is an array of additional arguments
|
53
|
+
request = Makit::Commands::Request.new(
|
54
|
+
command: base_request.command,
|
55
|
+
arguments: (base_request.arguments || []) + Array(args),
|
56
|
+
directory: base_request.directory,
|
57
|
+
timeout: base_request.timeout,
|
58
|
+
environment: base_request.environment || {},
|
59
|
+
metadata: base_request.metadata || {},
|
60
|
+
)
|
61
|
+
Makit::Commands::Runner.default.execute(request)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def cache_run(timestamp = nil)
|
67
|
+
puts "cache_run: #{self}"
|
68
|
+
command = self
|
69
|
+
request = Makit::Commands::Request.from_string(command)
|
70
|
+
if timestamp
|
71
|
+
# Add timestamp to metadata for cache key generation
|
72
|
+
request = Makit::Commands::Request.new(
|
73
|
+
command: request.command,
|
74
|
+
arguments: request.arguments,
|
75
|
+
directory: request.directory,
|
76
|
+
timeout: request.timeout,
|
77
|
+
environment: request.environment || {},
|
78
|
+
metadata: (request.metadata || {}).merge(timestamp: timestamp),
|
79
|
+
)
|
80
|
+
puts "timestamp: #{timestamp}"
|
81
|
+
else
|
82
|
+
puts "no timestamp"
|
83
|
+
end
|
84
|
+
Makit::Commands::Runner.default.execute(request)
|
85
|
+
end
|
86
|
+
|
87
|
+
def try
|
88
|
+
command = self
|
89
|
+
request = Makit::Commands::Request.from_string(command)
|
90
|
+
Makit::Commands::Runner.default.execute(request)
|
91
|
+
end
|
92
|
+
|
93
|
+
def show
|
94
|
+
command = self
|
95
|
+
request = Makit::Commands::Request.from_string(command)
|
96
|
+
Makit::Commands::Runner.default.execute(request)
|
97
|
+
end
|
98
|
+
|
99
|
+
def log
|
100
|
+
command = self
|
101
|
+
request = Makit::Commands::Request.from_string(command)
|
102
|
+
result = Makit::Commands::Runner.default.execute(request)
|
103
|
+
|
104
|
+
# Log the command execution result
|
105
|
+
if result.success?
|
106
|
+
Makit::Logging.info("Command completed successfully: #{command}")
|
107
|
+
else
|
108
|
+
Makit::Logging.error("Command failed: #{command} (exit code: #{result.exit_code})")
|
109
|
+
end
|
110
|
+
|
111
|
+
result
|
112
|
+
end
|
113
|
+
|
114
|
+
def cache_try(timestamp = nil)
|
115
|
+
command = self
|
116
|
+
request = Makit::Commands::Request.from_string(command)
|
117
|
+
if timestamp
|
118
|
+
# Add timestamp to metadata for cache key generation
|
119
|
+
request = Makit::Commands::Request.new(
|
120
|
+
command: request.command,
|
121
|
+
arguments: request.arguments,
|
122
|
+
directory: request.directory,
|
123
|
+
timeout: request.timeout,
|
124
|
+
environment: request.environment || {},
|
125
|
+
metadata: (request.metadata || {}).merge(timestamp: timestamp),
|
126
|
+
)
|
127
|
+
end
|
128
|
+
Makit::Commands::Runner.default.execute(request)
|
129
|
+
end
|
130
|
+
|
131
|
+
def show_command(cmd)
|
132
|
+
if cmd.success?
|
133
|
+
puts "✅ #{cmd.command} #{cmd.arguments&.join(" ")}".colorize(:green)
|
134
|
+
else
|
135
|
+
puts "❌ #{cmd.command} #{cmd.arguments&.join(" ")}".colorize(:red)
|
136
|
+
puts " Exit code: #{cmd.exit_code}".colorize(:red)
|
137
|
+
puts " Error: #{cmd.stderr}".colorize(:red) if cmd.stderr && !cmd.stderr.empty?
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def to_markdown
|
142
|
+
command = self
|
143
|
+
request = Makit::Commands::Request.from_string(command)
|
144
|
+
result = Makit::Commands::Runner.default.execute(request)
|
145
|
+
|
146
|
+
if result.success?
|
147
|
+
"```\n#{result.stdout}\n```"
|
148
|
+
else
|
149
|
+
"```\nError: #{result.stderr}\n```"
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def cache_run_with_timestamp(timestamp)
|
154
|
+
command = self
|
155
|
+
request = Makit::Commands::Request.from_string(command)
|
156
|
+
request = Makit::Commands::Request.new(
|
157
|
+
command: request.command,
|
158
|
+
arguments: request.arguments,
|
159
|
+
directory: request.directory,
|
160
|
+
timeout: request.timeout,
|
161
|
+
environment: request.environment || {},
|
162
|
+
metadata: (request.metadata || {}).merge(timestamp: timestamp),
|
163
|
+
)
|
164
|
+
Makit::Commands::Runner.default.execute(request)
|
165
|
+
end
|
166
|
+
|
167
|
+
def cache_try_with_timestamp(timestamp)
|
168
|
+
command = self
|
169
|
+
request = Makit::Commands::Request.from_string(command)
|
170
|
+
request = Makit::Commands::Request.new(
|
171
|
+
command: request.command,
|
172
|
+
arguments: request.arguments,
|
173
|
+
directory: request.directory,
|
174
|
+
timeout: request.timeout,
|
175
|
+
environment: request.environment || {},
|
176
|
+
metadata: (request.metadata || {}).merge(timestamp: timestamp),
|
177
|
+
)
|
178
|
+
Makit::Commands::Runner.default.execute(request)
|
179
|
+
end
|
180
|
+
|
181
|
+
def cache_log(log_file)
|
182
|
+
command = self
|
183
|
+
request = Makit::Commands::Request.from_string(command)
|
184
|
+
result = Makit::Commands::Runner.default.execute(request)
|
185
|
+
|
186
|
+
# Write output to log file
|
187
|
+
FileUtils.mkdir_p(File.dirname(log_file))
|
188
|
+
File.write(log_file, result.stdout) if result.stdout && !result.stdout.empty?
|
189
|
+
File.write(log_file, result.stderr, mode: "a") if result.stderr && !result.stderr.empty?
|
190
|
+
|
191
|
+
result
|
192
|
+
end
|
193
|
+
end
|