makit 0.0.157 → 0.0.158

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +41 -41
  3. data/exe/makit +5 -5
  4. data/lib/makit/apache.rb +28 -28
  5. data/lib/makit/auto.rb +48 -48
  6. data/lib/makit/azure/blob_storage.rb +257 -257
  7. data/lib/makit/azure/cli.rb +284 -284
  8. data/lib/makit/cli/base.rb +17 -17
  9. data/lib/makit/cli/build_commands.rb +500 -500
  10. data/lib/makit/cli/generators/base_generator.rb +74 -74
  11. data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
  12. data/lib/makit/cli/generators/generator_factory.rb +49 -49
  13. data/lib/makit/cli/generators/node_generator.rb +50 -50
  14. data/lib/makit/cli/generators/ruby_generator.rb +77 -77
  15. data/lib/makit/cli/generators/rust_generator.rb +50 -50
  16. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
  17. data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
  18. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
  19. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +41 -41
  20. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
  21. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
  22. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
  23. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
  24. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
  25. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
  26. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
  27. data/lib/makit/cli/main.rb +78 -78
  28. data/lib/makit/cli/pipeline_commands.rb +311 -311
  29. data/lib/makit/cli/project_commands.rb +868 -868
  30. data/lib/makit/cli/repository_commands.rb +661 -661
  31. data/lib/makit/cli/strategy_commands.rb +207 -207
  32. data/lib/makit/cli/utility_commands.rb +521 -521
  33. data/lib/makit/commands/factory.rb +359 -359
  34. data/lib/makit/commands/middleware/base.rb +73 -73
  35. data/lib/makit/commands/middleware/cache.rb +248 -248
  36. data/lib/makit/commands/middleware/command_logger.rb +312 -312
  37. data/lib/makit/commands/middleware/validator.rb +269 -269
  38. data/lib/makit/commands/request.rb +316 -316
  39. data/lib/makit/commands/result.rb +323 -323
  40. data/lib/makit/commands/runner.rb +386 -386
  41. data/lib/makit/commands/strategies/base.rb +171 -171
  42. data/lib/makit/commands/strategies/child_process.rb +162 -162
  43. data/lib/makit/commands/strategies/factory.rb +136 -136
  44. data/lib/makit/commands/strategies/synchronous.rb +139 -139
  45. data/lib/makit/commands.rb +50 -50
  46. data/lib/makit/configuration/dotnet_project.rb +48 -48
  47. data/lib/makit/configuration/gitlab_helper.rb +61 -61
  48. data/lib/makit/configuration/project.rb +292 -292
  49. data/lib/makit/configuration/rakefile_helper.rb +43 -43
  50. data/lib/makit/configuration/step.rb +34 -34
  51. data/lib/makit/configuration/timeout.rb +74 -74
  52. data/lib/makit/configuration.rb +21 -21
  53. data/lib/makit/content/default_gitignore.rb +7 -7
  54. data/lib/makit/content/default_gitignore.txt +225 -225
  55. data/lib/makit/content/default_rakefile.rb +13 -13
  56. data/lib/makit/content/gem_rakefile.rb +16 -16
  57. data/lib/makit/context.rb +1 -1
  58. data/lib/makit/data.rb +49 -49
  59. data/lib/makit/directories.rb +170 -170
  60. data/lib/makit/directory.rb +262 -262
  61. data/lib/makit/docs/files.rb +89 -89
  62. data/lib/makit/docs/rake.rb +102 -102
  63. data/lib/makit/dotnet/cli.rb +69 -69
  64. data/lib/makit/dotnet/project.rb +217 -217
  65. data/lib/makit/dotnet/solution.rb +38 -38
  66. data/lib/makit/dotnet/solution_classlib.rb +239 -239
  67. data/lib/makit/dotnet/solution_console.rb +264 -264
  68. data/lib/makit/dotnet/solution_maui.rb +354 -354
  69. data/lib/makit/dotnet/solution_wasm.rb +275 -275
  70. data/lib/makit/dotnet/solution_wpf.rb +304 -304
  71. data/lib/makit/dotnet.rb +102 -102
  72. data/lib/makit/email.rb +90 -90
  73. data/lib/makit/environment.rb +142 -142
  74. data/lib/makit/examples/runner.rb +370 -370
  75. data/lib/makit/exceptions.rb +45 -45
  76. data/lib/makit/fileinfo.rb +32 -32
  77. data/lib/makit/files.rb +43 -43
  78. data/lib/makit/gems.rb +40 -40
  79. data/lib/makit/git/cli.rb +78 -54
  80. data/lib/makit/git/repository.rb +100 -100
  81. data/lib/makit/git.rb +104 -104
  82. data/lib/makit/gitlab/pipeline.rb +857 -857
  83. data/lib/makit/gitlab/pipeline_service_impl.rb +1535 -1535
  84. data/lib/makit/gitlab_runner.rb +59 -59
  85. data/lib/makit/humanize.rb +218 -218
  86. data/lib/makit/indexer.rb +47 -47
  87. data/lib/makit/io/filesystem.rb +111 -111
  88. data/lib/makit/io/filesystem_service_impl.rb +337 -337
  89. data/lib/makit/lint.rb +212 -212
  90. data/lib/makit/logging/configuration.rb +309 -309
  91. data/lib/makit/logging/format_registry.rb +84 -84
  92. data/lib/makit/logging/formatters/base.rb +39 -39
  93. data/lib/makit/logging/formatters/console_formatter.rb +140 -140
  94. data/lib/makit/logging/formatters/json_formatter.rb +65 -65
  95. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
  96. data/lib/makit/logging/formatters/text_formatter.rb +64 -64
  97. data/lib/makit/logging/log_request.rb +119 -119
  98. data/lib/makit/logging/logger.rb +199 -199
  99. data/lib/makit/logging/sinks/base.rb +91 -91
  100. data/lib/makit/logging/sinks/console.rb +72 -72
  101. data/lib/makit/logging/sinks/file_sink.rb +92 -92
  102. data/lib/makit/logging/sinks/structured.rb +123 -123
  103. data/lib/makit/logging/sinks/unified_file_sink.rb +296 -296
  104. data/lib/makit/logging.rb +578 -578
  105. data/lib/makit/markdown.rb +75 -75
  106. data/lib/makit/mp/basic_object_mp.rb +17 -17
  107. data/lib/makit/mp/command_mp.rb +13 -13
  108. data/lib/makit/mp/command_request.mp.rb +17 -17
  109. data/lib/makit/mp/project_mp.rb +199 -199
  110. data/lib/makit/mp/string_mp.rb +205 -205
  111. data/lib/makit/nuget.rb +74 -74
  112. data/lib/makit/podman/podman.rb +458 -458
  113. data/lib/makit/podman/podman_service_impl.rb +1081 -1081
  114. data/lib/makit/port.rb +32 -32
  115. data/lib/makit/process.rb +377 -377
  116. data/lib/makit/protoc.rb +112 -112
  117. data/lib/makit/rake/cli.rb +196 -196
  118. data/lib/makit/rake/trace_controller.rb +174 -174
  119. data/lib/makit/rake.rb +81 -81
  120. data/lib/makit/ruby/cli.rb +185 -185
  121. data/lib/makit/ruby.rb +25 -25
  122. data/lib/makit/rubygems.rb +137 -0
  123. data/lib/makit/secrets/azure_key_vault.rb +322 -322
  124. data/lib/makit/secrets/azure_secrets.rb +183 -183
  125. data/lib/makit/secrets/local_secrets.rb +72 -72
  126. data/lib/makit/secrets/secrets_manager.rb +105 -105
  127. data/lib/makit/secrets.rb +16 -16
  128. data/lib/makit/serializer.rb +130 -130
  129. data/lib/makit/services/builder.rb +186 -186
  130. data/lib/makit/services/error_handler.rb +226 -226
  131. data/lib/makit/services/repository_manager.rb +367 -367
  132. data/lib/makit/services/validator.rb +112 -112
  133. data/lib/makit/setup/classlib.rb +101 -101
  134. data/lib/makit/setup/gem.rb +268 -268
  135. data/lib/makit/setup/pages.rb +11 -11
  136. data/lib/makit/setup/razorclasslib.rb +101 -101
  137. data/lib/makit/setup/runner.rb +54 -54
  138. data/lib/makit/setup.rb +5 -5
  139. data/lib/makit/show.rb +110 -110
  140. data/lib/makit/storage.rb +126 -126
  141. data/lib/makit/symbols.rb +175 -175
  142. data/lib/makit/task_info.rb +130 -130
  143. data/lib/makit/tasks/at_exit.rb +15 -15
  144. data/lib/makit/tasks/build.rb +22 -22
  145. data/lib/makit/tasks/bump.rb +7 -7
  146. data/lib/makit/tasks/clean.rb +13 -13
  147. data/lib/makit/tasks/configure.rb +10 -10
  148. data/lib/makit/tasks/format.rb +10 -10
  149. data/lib/makit/tasks/hook_manager.rb +443 -443
  150. data/lib/makit/tasks/info.rb +368 -368
  151. data/lib/makit/tasks/init.rb +49 -49
  152. data/lib/makit/tasks/integrate.rb +60 -56
  153. data/lib/makit/tasks/pull_incoming.rb +13 -13
  154. data/lib/makit/tasks/secrets.rb +7 -7
  155. data/lib/makit/tasks/setup.rb +16 -16
  156. data/lib/makit/tasks/sync.rb +14 -17
  157. data/lib/makit/tasks/tag.rb +27 -27
  158. data/lib/makit/tasks/task_monkey_patch.rb +81 -81
  159. data/lib/makit/tasks/test.rb +22 -22
  160. data/lib/makit/tasks/update.rb +18 -18
  161. data/lib/makit/tasks/version.rb +6 -6
  162. data/lib/makit/tasks.rb +24 -24
  163. data/lib/makit/test_cache.rb +239 -239
  164. data/lib/makit/tree.rb +37 -37
  165. data/lib/makit/v1/configuration/project_service_impl.rb +370 -370
  166. data/lib/makit/v1/git/git_repository_service_impl.rb +295 -295
  167. data/lib/makit/v1/makit.v1_pb.rb +35 -35
  168. data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
  169. data/lib/makit/v1/services/repository_manager_service_impl.rb +572 -572
  170. data/lib/makit/version.rb +661 -503
  171. data/lib/makit/version_util.rb +21 -21
  172. data/lib/makit/wix.rb +95 -95
  173. data/lib/makit/yaml.rb +29 -29
  174. data/lib/makit/zip.rb +17 -17
  175. data/lib/makit copy.rb +44 -44
  176. data/lib/makit.rb +115 -114
  177. metadata +3 -2
@@ -1,205 +1,205 @@
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
- else
13
- # Parse initial request
14
- base_request = Makit::Commands::Request.from_string(command)
15
-
16
- if args.is_a?(Hash)
17
- # Create new request with combined options
18
- request_options = {
19
- command: base_request.command,
20
- arguments: base_request.arguments || [],
21
- directory: base_request.directory,
22
- timeout: base_request.timeout,
23
- environment: base_request.environment || {},
24
- metadata: base_request.metadata || {},
25
- }
26
-
27
- # Apply args to the request options
28
- args.each do |key, value|
29
- case key.to_s
30
- when "arguments"
31
- # Append additional arguments
32
- request_options[:arguments] = (request_options[:arguments] + Array(value)).flatten
33
- when "directory"
34
- request_options[:directory] = value
35
- when "timeout"
36
- request_options[:timeout] = value
37
- when "environment"
38
- request_options[:environment] = (request_options[:environment] || {}).merge(value)
39
- when "metadata"
40
- request_options[:metadata] = (request_options[:metadata] || {}).merge(value)
41
- else
42
- # Add unknown keys to metadata
43
- request_options[:metadata] = (request_options[:metadata] || {}).merge(key.to_s => value)
44
- end
45
- end
46
-
47
- # Create new request with combined options
48
- request = Makit::Commands::Request.new(**request_options)
49
- else
50
- # args is an array of additional arguments
51
- request = Makit::Commands::Request.new(
52
- command: base_request.command,
53
- arguments: (base_request.arguments || []) + Array(args),
54
- directory: base_request.directory,
55
- timeout: base_request.timeout,
56
- environment: base_request.environment || {},
57
- metadata: base_request.metadata || {},
58
- )
59
- end
60
- end
61
- Makit::Commands::Runner.default.execute(request)
62
- end
63
-
64
- def cache_run(timestamp = nil, timeout: nil)
65
- #puts "cache_run: #{self}"
66
- command = self
67
- request = Makit::Commands::Request.from_string(command)
68
-
69
- # Build request options
70
- request_options = {
71
- command: request.command,
72
- arguments: request.arguments,
73
- directory: request.directory,
74
- timeout: timeout || request.timeout,
75
- environment: request.environment || {},
76
- metadata: request.metadata || {},
77
- }
78
-
79
- if timestamp
80
- # Add timestamp to metadata for cache key generation
81
- request_options[:metadata] = request_options[:metadata].merge(timestamp: timestamp)
82
- #puts "timestamp: #{timestamp}"
83
- else
84
- #puts "no timestamp"
85
- end
86
-
87
- request = Makit::Commands::Request.new(**request_options)
88
- Makit::Commands::Runner.default.execute(request)
89
- end
90
-
91
- def try
92
- command = self
93
- request = Makit::Commands::Request.from_string(command).exit_on_failure(false)
94
- Makit::Commands::Runner.default.execute(request)
95
- end
96
-
97
- def show
98
- command = self
99
- request = Makit::Commands::Request.from_string(command)
100
- Makit::Commands::Runner.default.execute(request)
101
- end
102
-
103
- def log(log_file = nil)
104
- command = self
105
- request = Makit::Commands::Request.from_string(command)
106
- result = Makit::Commands::Runner.default.execute(request)
107
-
108
- # If a log file is provided, write outputs to the file (maintains backward compatibility)
109
- if log_file
110
- FileUtils.mkdir_p(File.dirname(log_file))
111
- File.write(log_file, "") unless File.exist?(log_file)
112
- File.write(log_file, result.stdout, mode: "w") if result.stdout && !result.stdout.empty?
113
- File.write(log_file, result.stderr, mode: "a") if result.stderr && !result.stderr.empty?
114
- else
115
- # Otherwise, log to the Makit logger
116
- if result.success?
117
- Makit::Logging.info("Command completed successfully: #{command}")
118
- else
119
- Makit::Logging.error("Command failed: #{command} (exit code: #{result.exit_code})")
120
- end
121
- end
122
-
123
- result
124
- end
125
-
126
- def cache_try(timestamp = nil)
127
- command = self
128
- request = Makit::Commands::Request.from_string(command)
129
- if timestamp
130
- # Add timestamp to metadata for cache key generation
131
- request = Makit::Commands::Request.new(
132
- command: request.command,
133
- arguments: request.arguments,
134
- directory: request.directory,
135
- timeout: request.timeout,
136
- environment: request.environment || {},
137
- metadata: (request.metadata || {}).merge(timestamp: timestamp),
138
- )
139
- end
140
- Makit::Commands::Runner.default.execute(request)
141
- end
142
-
143
- def show_command(cmd)
144
- if cmd.success?
145
- puts "✅ #{cmd.command} #{cmd.arguments&.join(" ")}".colorize(:green)
146
- else
147
- puts "❌ #{cmd.command} #{cmd.arguments&.join(" ")}".colorize(:red)
148
- puts " Exit code: #{cmd.exit_code}".colorize(:red)
149
- puts " Error: #{cmd.stderr}".colorize(:red) if cmd.stderr && !cmd.stderr.empty?
150
- end
151
- end
152
-
153
- def to_markdown
154
- command = self
155
- request = Makit::Commands::Request.from_string(command)
156
- result = Makit::Commands::Runner.default.execute(request)
157
-
158
- if result.success?
159
- "```\n#{result.stdout}\n```"
160
- else
161
- "```\nError: #{result.stderr}\n```"
162
- end
163
- end
164
-
165
- def cache_run_with_timestamp(timestamp)
166
- command = self
167
- request = Makit::Commands::Request.from_string(command)
168
- request = Makit::Commands::Request.new(
169
- command: request.command,
170
- arguments: request.arguments,
171
- directory: request.directory,
172
- timeout: request.timeout,
173
- environment: request.environment || {},
174
- metadata: (request.metadata || {}).merge(timestamp: timestamp),
175
- )
176
- Makit::Commands::Runner.default.execute(request)
177
- end
178
-
179
- def cache_try_with_timestamp(timestamp)
180
- command = self
181
- request = Makit::Commands::Request.from_string(command)
182
- request = Makit::Commands::Request.new(
183
- command: request.command,
184
- arguments: request.arguments,
185
- directory: request.directory,
186
- timeout: request.timeout,
187
- environment: request.environment || {},
188
- metadata: (request.metadata || {}).merge(timestamp: timestamp),
189
- )
190
- Makit::Commands::Runner.default.execute(request)
191
- end
192
-
193
- def cache_log(log_file)
194
- command = self
195
- request = Makit::Commands::Request.from_string(command)
196
- result = Makit::Commands::Runner.default.execute(request)
197
-
198
- # Write output to log file
199
- FileUtils.mkdir_p(File.dirname(log_file))
200
- File.write(log_file, result.stdout) if result.stdout && !result.stdout.empty?
201
- File.write(log_file, result.stderr, mode: "a") if result.stderr && !result.stderr.empty?
202
-
203
- result
204
- end
205
- 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
+ else
13
+ # Parse initial request
14
+ base_request = Makit::Commands::Request.from_string(command)
15
+
16
+ if args.is_a?(Hash)
17
+ # Create new request with combined options
18
+ request_options = {
19
+ command: base_request.command,
20
+ arguments: base_request.arguments || [],
21
+ directory: base_request.directory,
22
+ timeout: base_request.timeout,
23
+ environment: base_request.environment || {},
24
+ metadata: base_request.metadata || {},
25
+ }
26
+
27
+ # Apply args to the request options
28
+ args.each do |key, value|
29
+ case key.to_s
30
+ when "arguments"
31
+ # Append additional arguments
32
+ request_options[:arguments] = (request_options[:arguments] + Array(value)).flatten
33
+ when "directory"
34
+ request_options[:directory] = value
35
+ when "timeout"
36
+ request_options[:timeout] = value
37
+ when "environment"
38
+ request_options[:environment] = (request_options[:environment] || {}).merge(value)
39
+ when "metadata"
40
+ request_options[:metadata] = (request_options[:metadata] || {}).merge(value)
41
+ else
42
+ # Add unknown keys to metadata
43
+ request_options[:metadata] = (request_options[:metadata] || {}).merge(key.to_s => value)
44
+ end
45
+ end
46
+
47
+ # Create new request with combined options
48
+ request = Makit::Commands::Request.new(**request_options)
49
+ else
50
+ # args is an array of additional arguments
51
+ request = Makit::Commands::Request.new(
52
+ command: base_request.command,
53
+ arguments: (base_request.arguments || []) + Array(args),
54
+ directory: base_request.directory,
55
+ timeout: base_request.timeout,
56
+ environment: base_request.environment || {},
57
+ metadata: base_request.metadata || {},
58
+ )
59
+ end
60
+ end
61
+ Makit::Commands::Runner.default.execute(request)
62
+ end
63
+
64
+ def cache_run(timestamp = nil, timeout: nil)
65
+ #puts "cache_run: #{self}"
66
+ command = self
67
+ request = Makit::Commands::Request.from_string(command)
68
+
69
+ # Build request options
70
+ request_options = {
71
+ command: request.command,
72
+ arguments: request.arguments,
73
+ directory: request.directory,
74
+ timeout: timeout || request.timeout,
75
+ environment: request.environment || {},
76
+ metadata: request.metadata || {},
77
+ }
78
+
79
+ if timestamp
80
+ # Add timestamp to metadata for cache key generation
81
+ request_options[:metadata] = request_options[:metadata].merge(timestamp: timestamp)
82
+ #puts "timestamp: #{timestamp}"
83
+ else
84
+ #puts "no timestamp"
85
+ end
86
+
87
+ request = Makit::Commands::Request.new(**request_options)
88
+ Makit::Commands::Runner.default.execute(request)
89
+ end
90
+
91
+ def try
92
+ command = self
93
+ request = Makit::Commands::Request.from_string(command).exit_on_failure(false)
94
+ Makit::Commands::Runner.default.execute(request)
95
+ end
96
+
97
+ def show
98
+ command = self
99
+ request = Makit::Commands::Request.from_string(command)
100
+ Makit::Commands::Runner.default.execute(request)
101
+ end
102
+
103
+ def log(log_file = nil)
104
+ command = self
105
+ request = Makit::Commands::Request.from_string(command)
106
+ result = Makit::Commands::Runner.default.execute(request)
107
+
108
+ # If a log file is provided, write outputs to the file (maintains backward compatibility)
109
+ if log_file
110
+ FileUtils.mkdir_p(File.dirname(log_file))
111
+ File.write(log_file, "") unless File.exist?(log_file)
112
+ File.write(log_file, result.stdout, mode: "w") if result.stdout && !result.stdout.empty?
113
+ File.write(log_file, result.stderr, mode: "a") if result.stderr && !result.stderr.empty?
114
+ else
115
+ # Otherwise, log to the Makit logger
116
+ if result.success?
117
+ Makit::Logging.info("Command completed successfully: #{command}")
118
+ else
119
+ Makit::Logging.error("Command failed: #{command} (exit code: #{result.exit_code})")
120
+ end
121
+ end
122
+
123
+ result
124
+ end
125
+
126
+ def cache_try(timestamp = nil)
127
+ command = self
128
+ request = Makit::Commands::Request.from_string(command)
129
+ if timestamp
130
+ # Add timestamp to metadata for cache key generation
131
+ request = Makit::Commands::Request.new(
132
+ command: request.command,
133
+ arguments: request.arguments,
134
+ directory: request.directory,
135
+ timeout: request.timeout,
136
+ environment: request.environment || {},
137
+ metadata: (request.metadata || {}).merge(timestamp: timestamp),
138
+ )
139
+ end
140
+ Makit::Commands::Runner.default.execute(request)
141
+ end
142
+
143
+ def show_command(cmd)
144
+ if cmd.success?
145
+ puts "✅ #{cmd.command} #{cmd.arguments&.join(" ")}".colorize(:green)
146
+ else
147
+ puts "❌ #{cmd.command} #{cmd.arguments&.join(" ")}".colorize(:red)
148
+ puts " Exit code: #{cmd.exit_code}".colorize(:red)
149
+ puts " Error: #{cmd.stderr}".colorize(:red) if cmd.stderr && !cmd.stderr.empty?
150
+ end
151
+ end
152
+
153
+ def to_markdown
154
+ command = self
155
+ request = Makit::Commands::Request.from_string(command)
156
+ result = Makit::Commands::Runner.default.execute(request)
157
+
158
+ if result.success?
159
+ "```\n#{result.stdout}\n```"
160
+ else
161
+ "```\nError: #{result.stderr}\n```"
162
+ end
163
+ end
164
+
165
+ def cache_run_with_timestamp(timestamp)
166
+ command = self
167
+ request = Makit::Commands::Request.from_string(command)
168
+ request = Makit::Commands::Request.new(
169
+ command: request.command,
170
+ arguments: request.arguments,
171
+ directory: request.directory,
172
+ timeout: request.timeout,
173
+ environment: request.environment || {},
174
+ metadata: (request.metadata || {}).merge(timestamp: timestamp),
175
+ )
176
+ Makit::Commands::Runner.default.execute(request)
177
+ end
178
+
179
+ def cache_try_with_timestamp(timestamp)
180
+ command = self
181
+ request = Makit::Commands::Request.from_string(command)
182
+ request = Makit::Commands::Request.new(
183
+ command: request.command,
184
+ arguments: request.arguments,
185
+ directory: request.directory,
186
+ timeout: request.timeout,
187
+ environment: request.environment || {},
188
+ metadata: (request.metadata || {}).merge(timestamp: timestamp),
189
+ )
190
+ Makit::Commands::Runner.default.execute(request)
191
+ end
192
+
193
+ def cache_log(log_file)
194
+ command = self
195
+ request = Makit::Commands::Request.from_string(command)
196
+ result = Makit::Commands::Runner.default.execute(request)
197
+
198
+ # Write output to log file
199
+ FileUtils.mkdir_p(File.dirname(log_file))
200
+ File.write(log_file, result.stdout) if result.stdout && !result.stdout.empty?
201
+ File.write(log_file, result.stderr, mode: "a") if result.stderr && !result.stderr.empty?
202
+
203
+ result
204
+ end
205
+ end
data/lib/makit/nuget.rb CHANGED
@@ -1,74 +1,74 @@
1
- # frozen_string_literal: true
2
-
3
- require "tmpdir"
4
- # This module provides classes for the Makit gem.
5
- module Makit
6
- # This class provide methods for working with the Nuget package cache
7
- #
8
- # Example:
9
- #
10
- # Makit::Directory.cache("Google.Protobuf", "3.27.2")
11
- #
12
- # dotnet nuget locals all --list
13
- # dotnet nuget locals all --clear
14
- #
15
- class NuGet
16
- def self.get_cache_dir(package, version)
17
- File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package, version)
18
- end
19
-
20
- def self.cache(package, version)
21
- # if the package is already cached, there is nothing to do
22
- return if Dir.exist?(get_cache_dir(package, version))
23
-
24
- Dir.mktmpdir do |dir|
25
- # Use the temp directory here
26
- Dir.chdir(dir) do
27
- system("dotnet new classlib -n ClassLib")
28
- Dir.chdir("ClassLib") do
29
- # display a list of directories in the current directory
30
- puts Dir.entries(Dir.pwd)
31
- # display a list of files in the current directory
32
- puts Dir.entries(Dir.pwd)
33
- puts "dotnet add ClassLib.csproj package #{package} --version #{version}"
34
- system("dotnet add ClassLib.csproj package #{package} --version #{version}")
35
- end
36
- end
37
- # The directory and its contents will be removed automatically after the block
38
- end
39
- end
40
-
41
- def self.clear_cache(package, version)
42
- return unless Dir.exist?(get_cache_dir(package, version))
43
-
44
- FileUtils.rm_rf(get_cache_dir(package, version))
45
- end
46
-
47
- # get the latest version of the package
48
- def self.get_latest_version(package)
49
- dir = File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package)
50
- if Dir.exist?(dir)
51
- versions = Dir.entries(dir).select do |entry|
52
- File.directory?(File.join(dir, entry)) && ![".", ".."].include?(entry)
53
- end
54
- highest_version = Makit::Version.get_highest_version(versions)
55
- return highest_version
56
- end
57
- nil
58
- end
59
-
60
- # publish a package to a nuget directory feed
61
- def self.add_package(_package, path)
62
- system("dotnet nuget push #{path} --source #{path}")
63
- end
64
-
65
- def self.publish_to_directory(nuget_package_path, directory, package_name, version)
66
- target_package_path = "#{directory}/#{package_name}/#{version}/#{package_name}.#{version}.nupkg".downcase
67
- if File.exist?(target_package_path)
68
- puts " #{target_package_path} already exists".colorize(:grey)
69
- else
70
- "dotnet nuget push #{nuget_package_path} --source #{directory}".run
71
- end
72
- end
73
- end
74
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "tmpdir"
4
+ # This module provides classes for the Makit gem.
5
+ module Makit
6
+ # This class provide methods for working with the Nuget package cache
7
+ #
8
+ # Example:
9
+ #
10
+ # Makit::Directory.cache("Google.Protobuf", "3.27.2")
11
+ #
12
+ # dotnet nuget locals all --list
13
+ # dotnet nuget locals all --clear
14
+ #
15
+ class NuGet
16
+ def self.get_cache_dir(package, version)
17
+ File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package, version)
18
+ end
19
+
20
+ def self.cache(package, version)
21
+ # if the package is already cached, there is nothing to do
22
+ return if Dir.exist?(get_cache_dir(package, version))
23
+
24
+ Dir.mktmpdir do |dir|
25
+ # Use the temp directory here
26
+ Dir.chdir(dir) do
27
+ system("dotnet new classlib -n ClassLib")
28
+ Dir.chdir("ClassLib") do
29
+ # display a list of directories in the current directory
30
+ puts Dir.entries(Dir.pwd)
31
+ # display a list of files in the current directory
32
+ puts Dir.entries(Dir.pwd)
33
+ puts "dotnet add ClassLib.csproj package #{package} --version #{version}"
34
+ system("dotnet add ClassLib.csproj package #{package} --version #{version}")
35
+ end
36
+ end
37
+ # The directory and its contents will be removed automatically after the block
38
+ end
39
+ end
40
+
41
+ def self.clear_cache(package, version)
42
+ return unless Dir.exist?(get_cache_dir(package, version))
43
+
44
+ FileUtils.rm_rf(get_cache_dir(package, version))
45
+ end
46
+
47
+ # get the latest version of the package
48
+ def self.get_latest_version(package)
49
+ dir = File.join(Makit::Directories::NUGET_PACKAGE_CACHE, package)
50
+ if Dir.exist?(dir)
51
+ versions = Dir.entries(dir).select do |entry|
52
+ File.directory?(File.join(dir, entry)) && ![".", ".."].include?(entry)
53
+ end
54
+ highest_version = Makit::Version.get_highest_version(versions)
55
+ return highest_version
56
+ end
57
+ nil
58
+ end
59
+
60
+ # publish a package to a nuget directory feed
61
+ def self.add_package(_package, path)
62
+ system("dotnet nuget push #{path} --source #{path}")
63
+ end
64
+
65
+ def self.publish_to_directory(nuget_package_path, directory, package_name, version)
66
+ target_package_path = "#{directory}/#{package_name}/#{version}/#{package_name}.#{version}.nupkg".downcase
67
+ if File.exist?(target_package_path)
68
+ puts " #{target_package_path} already exists".colorize(:grey)
69
+ else
70
+ "dotnet nuget push #{nuget_package_path} --source #{directory}".run
71
+ end
72
+ end
73
+ end
74
+ end