makit 0.0.138 → 0.0.140
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/auto.rb +48 -48
- 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 +69 -67
- data/lib/makit/cli/project_commands.rb +868 -868
- data/lib/makit/cli/repository_commands.rb +661 -661
- data/lib/makit/cli/strategy_commands.rb +51 -0
- 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 +312 -312
- data/lib/makit/commands/middleware/validator.rb +269 -269
- data/lib/makit/commands/request.rb +316 -316
- data/lib/makit/commands/result.rb +323 -323
- data/lib/makit/commands/runner.rb +385 -385
- data/lib/makit/commands/strategies/base.rb +171 -171
- data/lib/makit/commands/strategies/child_process.rb +1 -1
- data/lib/makit/commands/strategies/synchronous.rb +139 -139
- data/lib/makit/commands.rb +50 -50
- data/lib/makit/configuration/dotnet_project.rb +12 -12
- data/lib/makit/configuration/gitlab_helper.rb +58 -58
- data/lib/makit/configuration/project.rb +168 -168
- data/lib/makit/configuration/rakefile_helper.rb +43 -43
- data/lib/makit/configuration/step.rb +34 -34
- data/lib/makit/configuration/timeout.rb +74 -0
- data/lib/makit/configuration.rb +15 -14
- data/lib/makit/content/default_gitignore.rb +7 -7
- data/lib/makit/content/default_gitignore.txt +225 -225
- 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 +140 -140
- 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/cli.rb +69 -69
- data/lib/makit/dotnet/project.rb +217 -217
- 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 +308 -308
- data/lib/makit/logging/format_registry.rb +84 -84
- data/lib/makit/logging/formatters/base.rb +39 -39
- data/lib/makit/logging/formatters/console_formatter.rb +140 -140
- 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 +119 -119
- data/lib/makit/logging/logger.rb +199 -199
- data/lib/makit/logging/sinks/base.rb +91 -91
- data/lib/makit/logging/sinks/console.rb +72 -72
- data/lib/makit/logging/sinks/file_sink.rb +92 -92
- data/lib/makit/logging/sinks/structured.rb +123 -123
- data/lib/makit/logging/sinks/unified_file_sink.rb +296 -296
- data/lib/makit/logging.rb +565 -565
- 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 +191 -191
- 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 +80 -80
- 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 -130
- data/lib/makit/services/builder.rb +186 -186
- data/lib/makit/services/error_handler.rb +226 -226
- data/lib/makit/services/repository_manager.rb +231 -231
- data/lib/makit/services/validator.rb +112 -112
- data/lib/makit/setup/classlib.rb +101 -101
- data/lib/makit/setup/gem.rb +268 -268
- data/lib/makit/setup/razorclasslib.rb +101 -101
- data/lib/makit/setup/runner.rb +54 -54
- data/lib/makit/setup.rb +5 -5
- data/lib/makit/show.rb +110 -110
- data/lib/makit/storage.rb +126 -126
- data/lib/makit/symbols.rb +170 -170
- data/lib/makit/task_info.rb +130 -130
- data/lib/makit/tasks/at_exit.rb +15 -15
- data/lib/makit/tasks/build.rb +22 -22
- data/lib/makit/tasks/clean.rb +13 -13
- data/lib/makit/tasks/configure.rb +10 -10
- data/lib/makit/tasks/format.rb +10 -10
- data/lib/makit/tasks/hook_manager.rb +443 -443
- data/lib/makit/tasks/init.rb +49 -49
- data/lib/makit/tasks/integrate.rb +29 -29
- data/lib/makit/tasks/pull_incoming.rb +13 -13
- data/lib/makit/tasks/setup.rb +13 -13
- data/lib/makit/tasks/sync.rb +17 -17
- data/lib/makit/tasks/tag.rb +16 -16
- data/lib/makit/tasks/task_monkey_patch.rb +81 -81
- data/lib/makit/tasks/test.rb +22 -22
- data/lib/makit/tasks/update.rb +18 -18
- data/lib/makit/tasks.rb +20 -20
- data/lib/makit/test_cache.rb +239 -239
- data/lib/makit/tree.rb +37 -37
- data/lib/makit/v1/makit.v1_pb.rb +35 -35
- data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
- data/lib/makit/version.rb +99 -99
- data/lib/makit/version_util.rb +21 -21
- 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 -44
- data/lib/makit.rb +42 -42
- metadata +3 -2
data/lib/makit/test_cache.rb
CHANGED
@@ -1,239 +1,239 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Makit
|
4
|
-
class TestCache
|
5
|
-
# Cache configuration
|
6
|
-
CACHE_BASE_DIR = File.join(Makit::Directories::PROJECT_ARTIFACTS, "test_cache").freeze
|
7
|
-
CACHE_METADATA_FILE = ".cache_metadata.json"
|
8
|
-
DEFAULT_TTL = 3600 # 1 hour cache by default
|
9
|
-
|
10
|
-
class << self
|
11
|
-
def setup
|
12
|
-
FileUtils.mkdir_p(CACHE_BASE_DIR)
|
13
|
-
end
|
14
|
-
|
15
|
-
# Main caching method - wraps expensive test operations
|
16
|
-
def with_cache(test_instance, cache_key, dependencies: [], ttl: DEFAULT_TTL, &block)
|
17
|
-
return yield unless should_cache?
|
18
|
-
|
19
|
-
cache_dir = cache_directory_for(test_instance, cache_key)
|
20
|
-
metadata = read_cache_metadata(cache_dir)
|
21
|
-
|
22
|
-
if cache_valid?(cache_dir, metadata, dependencies, ttl)
|
23
|
-
skip_with_cache_message(test_instance, cache_key, metadata)
|
24
|
-
return :cached
|
25
|
-
end
|
26
|
-
|
27
|
-
# Cache miss or invalid - run the expensive operation
|
28
|
-
cleanup_cache_directory(cache_dir)
|
29
|
-
FileUtils.mkdir_p(cache_dir)
|
30
|
-
|
31
|
-
# Execute the block in the cache directory context
|
32
|
-
result = Dir.chdir(cache_dir, &block)
|
33
|
-
|
34
|
-
# Write cache metadata
|
35
|
-
write_cache_metadata(cache_dir, dependencies)
|
36
|
-
|
37
|
-
result
|
38
|
-
end
|
39
|
-
|
40
|
-
# Directory-based caching - checks if directory exists and is valid
|
41
|
-
def cache_directory(test_instance, cache_key, dependencies: [], ttl: DEFAULT_TTL)
|
42
|
-
return nil unless should_cache?
|
43
|
-
|
44
|
-
cache_dir = cache_directory_for(test_instance, cache_key)
|
45
|
-
metadata = read_cache_metadata(cache_dir)
|
46
|
-
|
47
|
-
if cache_valid?(cache_dir, metadata, dependencies, ttl)
|
48
|
-
skip_with_cache_message(test_instance, cache_key, metadata)
|
49
|
-
return cache_dir
|
50
|
-
end
|
51
|
-
|
52
|
-
# Prepare fresh cache directory
|
53
|
-
cleanup_cache_directory(cache_dir)
|
54
|
-
FileUtils.mkdir_p(cache_dir)
|
55
|
-
|
56
|
-
cache_dir
|
57
|
-
end
|
58
|
-
|
59
|
-
# File-based caching - checks if specific files exist and are valid
|
60
|
-
def cache_files(test_instance, cache_key, expected_files, dependencies: [], ttl: DEFAULT_TTL)
|
61
|
-
return false unless should_cache?
|
62
|
-
|
63
|
-
cache_dir = cache_directory_for(test_instance, cache_key)
|
64
|
-
metadata = read_cache_metadata(cache_dir)
|
65
|
-
|
66
|
-
# Check if all expected files exist
|
67
|
-
files_exist = expected_files.all? do |file|
|
68
|
-
File.exist?(File.join(cache_dir, file))
|
69
|
-
end
|
70
|
-
|
71
|
-
if files_exist && cache_valid?(cache_dir, metadata, dependencies, ttl)
|
72
|
-
skip_with_cache_message(test_instance, cache_key, metadata)
|
73
|
-
return true
|
74
|
-
end
|
75
|
-
|
76
|
-
false
|
77
|
-
end
|
78
|
-
|
79
|
-
# Clear all test caches
|
80
|
-
def clear_all
|
81
|
-
FileUtils.rm_rf(CACHE_BASE_DIR)
|
82
|
-
puts "🗑️ Cleared all test caches".colorize(:grey)
|
83
|
-
end
|
84
|
-
|
85
|
-
# Clear caches for specific test class
|
86
|
-
def clear_for_class(test_class)
|
87
|
-
class_cache_dir = File.join(CACHE_BASE_DIR, class_cache_key(test_class))
|
88
|
-
FileUtils.rm_rf(class_cache_dir)
|
89
|
-
puts "🗑️ Cleared test caches for #{test_class}".colorize(:grey)
|
90
|
-
end
|
91
|
-
|
92
|
-
# Get cache statistics
|
93
|
-
def cache_stats
|
94
|
-
return { total_size: 0, cache_count: 0, cache_dirs: [] } unless Dir.exist?(CACHE_BASE_DIR)
|
95
|
-
|
96
|
-
cache_dirs = Dir.glob(File.join(CACHE_BASE_DIR, "**", "*")).select { |d| Dir.exist?(d) }
|
97
|
-
total_size = cache_dirs.sum { |dir| directory_size(dir) }
|
98
|
-
|
99
|
-
{
|
100
|
-
total_size: total_size,
|
101
|
-
cache_count: cache_dirs.length,
|
102
|
-
cache_dirs: cache_dirs.map { |d| d.sub("#{CACHE_BASE_DIR}/", "") },
|
103
|
-
}
|
104
|
-
end
|
105
|
-
|
106
|
-
private
|
107
|
-
|
108
|
-
def should_cache?
|
109
|
-
# Don't cache in CI environments by default (ensures clean runs)
|
110
|
-
return false if ENV["CI"] == "true"
|
111
|
-
|
112
|
-
# Don't cache if explicitly disabled
|
113
|
-
return false if ENV["MAKIT_DISABLE_TEST_CACHE"] == "true"
|
114
|
-
|
115
|
-
# Don't cache during test development/debugging
|
116
|
-
return false if ENV["MAKIT_TEST_DEBUG"] == "true"
|
117
|
-
|
118
|
-
# Don't cache in test environment unless explicitly testing the cache
|
119
|
-
return false if ENV["MAKIT_TESTING"] == "true" && ENV["MAKIT_TESTING_CACHE"] != "true"
|
120
|
-
|
121
|
-
true
|
122
|
-
end
|
123
|
-
|
124
|
-
def cache_directory_for(test_instance, cache_key)
|
125
|
-
test_class = test_instance.class.name.gsub("::", "/")
|
126
|
-
test_method = test_instance.name
|
127
|
-
|
128
|
-
File.join(CACHE_BASE_DIR, test_class, test_method, cache_key)
|
129
|
-
end
|
130
|
-
|
131
|
-
def class_cache_key(test_class)
|
132
|
-
test_class.name.gsub("::", "/")
|
133
|
-
end
|
134
|
-
|
135
|
-
def cache_valid?(cache_dir, metadata, dependencies, ttl)
|
136
|
-
return false unless Dir.exist?(cache_dir)
|
137
|
-
return false unless metadata
|
138
|
-
|
139
|
-
# Check TTL
|
140
|
-
cache_age = Time.now - Time.parse(metadata["created_at"])
|
141
|
-
return false if cache_age > ttl
|
142
|
-
|
143
|
-
# Check dependencies
|
144
|
-
return false unless dependencies_current?(metadata["dependencies"], dependencies)
|
145
|
-
|
146
|
-
# Check if cache directory has content
|
147
|
-
entries = Dir.entries(cache_dir) - [".", "..", CACHE_METADATA_FILE]
|
148
|
-
entries.any?
|
149
|
-
end
|
150
|
-
|
151
|
-
def dependencies_current?(cached_deps, current_deps)
|
152
|
-
return true if current_deps.empty?
|
153
|
-
|
154
|
-
current_deps.each do |dep_file|
|
155
|
-
next unless File.exist?(dep_file)
|
156
|
-
|
157
|
-
current_mtime = File.mtime(dep_file).to_i
|
158
|
-
cached_mtime = cached_deps&.dig(dep_file)
|
159
|
-
|
160
|
-
return false if cached_mtime.nil? || current_mtime > cached_mtime
|
161
|
-
end
|
162
|
-
|
163
|
-
true
|
164
|
-
end
|
165
|
-
|
166
|
-
def read_cache_metadata(cache_dir)
|
167
|
-
metadata_file = File.join(cache_dir, CACHE_METADATA_FILE)
|
168
|
-
return nil unless File.exist?(metadata_file)
|
169
|
-
|
170
|
-
JSON.parse(File.read(metadata_file))
|
171
|
-
rescue JSON::ParserError
|
172
|
-
nil
|
173
|
-
end
|
174
|
-
|
175
|
-
def write_cache_metadata(cache_dir, dependencies)
|
176
|
-
metadata = {
|
177
|
-
created_at: Time.now.iso8601,
|
178
|
-
dependencies: dependencies.each_with_object({}) do |dep_file, hash|
|
179
|
-
hash[dep_file] = File.exist?(dep_file) ? File.mtime(dep_file).to_i : nil
|
180
|
-
end,
|
181
|
-
}
|
182
|
-
|
183
|
-
metadata_file = File.join(cache_dir, CACHE_METADATA_FILE)
|
184
|
-
File.write(metadata_file, JSON.pretty_generate(metadata))
|
185
|
-
end
|
186
|
-
|
187
|
-
def skip_with_cache_message(test_instance, cache_key, metadata)
|
188
|
-
cache_age = Time.now - Time.parse(metadata["created_at"])
|
189
|
-
age_text = format_duration(cache_age)
|
190
|
-
|
191
|
-
test_instance.skip("💨 Using cached result for '#{cache_key}' (cached #{age_text} ago)")
|
192
|
-
end
|
193
|
-
|
194
|
-
def cleanup_cache_directory(cache_dir)
|
195
|
-
FileUtils.rm_rf(cache_dir)
|
196
|
-
end
|
197
|
-
|
198
|
-
def directory_size(dir_path)
|
199
|
-
Dir.glob(File.join(dir_path, "**", "*"))
|
200
|
-
.select { |f| File.file?(f) }
|
201
|
-
.sum { |f| File.size(f) }
|
202
|
-
end
|
203
|
-
|
204
|
-
def format_duration(seconds)
|
205
|
-
if seconds < 60
|
206
|
-
"#{seconds.round}s"
|
207
|
-
elsif seconds < 3600
|
208
|
-
minutes = (seconds / 60).round
|
209
|
-
"#{minutes}m"
|
210
|
-
else
|
211
|
-
hours = (seconds / 3600).round
|
212
|
-
"#{hours}h"
|
213
|
-
end
|
214
|
-
end
|
215
|
-
end
|
216
|
-
end
|
217
|
-
|
218
|
-
# Mixin module for test classes to provide caching helpers
|
219
|
-
module TestCacheHelpers
|
220
|
-
def cache_expensive_operation(cache_key, dependencies: [], ttl: Makit::TestCache::DEFAULT_TTL, &block)
|
221
|
-
Makit::TestCache.with_cache(self, cache_key,
|
222
|
-
dependencies: dependencies,
|
223
|
-
ttl: ttl,
|
224
|
-
&block)
|
225
|
-
end
|
226
|
-
|
227
|
-
def cached_directory(cache_key, dependencies: [], ttl: Makit::TestCache::DEFAULT_TTL)
|
228
|
-
Makit::TestCache.cache_directory(self, cache_key,
|
229
|
-
dependencies: dependencies,
|
230
|
-
ttl: ttl)
|
231
|
-
end
|
232
|
-
|
233
|
-
def cached_files_exist?(cache_key, expected_files, dependencies: [], ttl: Makit::TestCache::DEFAULT_TTL)
|
234
|
-
Makit::TestCache.cache_files(self, cache_key, expected_files,
|
235
|
-
dependencies: dependencies,
|
236
|
-
ttl: ttl)
|
237
|
-
end
|
238
|
-
end
|
239
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Makit
|
4
|
+
class TestCache
|
5
|
+
# Cache configuration
|
6
|
+
CACHE_BASE_DIR = File.join(Makit::Directories::PROJECT_ARTIFACTS, "test_cache").freeze
|
7
|
+
CACHE_METADATA_FILE = ".cache_metadata.json"
|
8
|
+
DEFAULT_TTL = 3600 # 1 hour cache by default
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def setup
|
12
|
+
FileUtils.mkdir_p(CACHE_BASE_DIR)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Main caching method - wraps expensive test operations
|
16
|
+
def with_cache(test_instance, cache_key, dependencies: [], ttl: DEFAULT_TTL, &block)
|
17
|
+
return yield unless should_cache?
|
18
|
+
|
19
|
+
cache_dir = cache_directory_for(test_instance, cache_key)
|
20
|
+
metadata = read_cache_metadata(cache_dir)
|
21
|
+
|
22
|
+
if cache_valid?(cache_dir, metadata, dependencies, ttl)
|
23
|
+
skip_with_cache_message(test_instance, cache_key, metadata)
|
24
|
+
return :cached
|
25
|
+
end
|
26
|
+
|
27
|
+
# Cache miss or invalid - run the expensive operation
|
28
|
+
cleanup_cache_directory(cache_dir)
|
29
|
+
FileUtils.mkdir_p(cache_dir)
|
30
|
+
|
31
|
+
# Execute the block in the cache directory context
|
32
|
+
result = Dir.chdir(cache_dir, &block)
|
33
|
+
|
34
|
+
# Write cache metadata
|
35
|
+
write_cache_metadata(cache_dir, dependencies)
|
36
|
+
|
37
|
+
result
|
38
|
+
end
|
39
|
+
|
40
|
+
# Directory-based caching - checks if directory exists and is valid
|
41
|
+
def cache_directory(test_instance, cache_key, dependencies: [], ttl: DEFAULT_TTL)
|
42
|
+
return nil unless should_cache?
|
43
|
+
|
44
|
+
cache_dir = cache_directory_for(test_instance, cache_key)
|
45
|
+
metadata = read_cache_metadata(cache_dir)
|
46
|
+
|
47
|
+
if cache_valid?(cache_dir, metadata, dependencies, ttl)
|
48
|
+
skip_with_cache_message(test_instance, cache_key, metadata)
|
49
|
+
return cache_dir
|
50
|
+
end
|
51
|
+
|
52
|
+
# Prepare fresh cache directory
|
53
|
+
cleanup_cache_directory(cache_dir)
|
54
|
+
FileUtils.mkdir_p(cache_dir)
|
55
|
+
|
56
|
+
cache_dir
|
57
|
+
end
|
58
|
+
|
59
|
+
# File-based caching - checks if specific files exist and are valid
|
60
|
+
def cache_files(test_instance, cache_key, expected_files, dependencies: [], ttl: DEFAULT_TTL)
|
61
|
+
return false unless should_cache?
|
62
|
+
|
63
|
+
cache_dir = cache_directory_for(test_instance, cache_key)
|
64
|
+
metadata = read_cache_metadata(cache_dir)
|
65
|
+
|
66
|
+
# Check if all expected files exist
|
67
|
+
files_exist = expected_files.all? do |file|
|
68
|
+
File.exist?(File.join(cache_dir, file))
|
69
|
+
end
|
70
|
+
|
71
|
+
if files_exist && cache_valid?(cache_dir, metadata, dependencies, ttl)
|
72
|
+
skip_with_cache_message(test_instance, cache_key, metadata)
|
73
|
+
return true
|
74
|
+
end
|
75
|
+
|
76
|
+
false
|
77
|
+
end
|
78
|
+
|
79
|
+
# Clear all test caches
|
80
|
+
def clear_all
|
81
|
+
FileUtils.rm_rf(CACHE_BASE_DIR)
|
82
|
+
puts "🗑️ Cleared all test caches".colorize(:grey)
|
83
|
+
end
|
84
|
+
|
85
|
+
# Clear caches for specific test class
|
86
|
+
def clear_for_class(test_class)
|
87
|
+
class_cache_dir = File.join(CACHE_BASE_DIR, class_cache_key(test_class))
|
88
|
+
FileUtils.rm_rf(class_cache_dir)
|
89
|
+
puts "🗑️ Cleared test caches for #{test_class}".colorize(:grey)
|
90
|
+
end
|
91
|
+
|
92
|
+
# Get cache statistics
|
93
|
+
def cache_stats
|
94
|
+
return { total_size: 0, cache_count: 0, cache_dirs: [] } unless Dir.exist?(CACHE_BASE_DIR)
|
95
|
+
|
96
|
+
cache_dirs = Dir.glob(File.join(CACHE_BASE_DIR, "**", "*")).select { |d| Dir.exist?(d) }
|
97
|
+
total_size = cache_dirs.sum { |dir| directory_size(dir) }
|
98
|
+
|
99
|
+
{
|
100
|
+
total_size: total_size,
|
101
|
+
cache_count: cache_dirs.length,
|
102
|
+
cache_dirs: cache_dirs.map { |d| d.sub("#{CACHE_BASE_DIR}/", "") },
|
103
|
+
}
|
104
|
+
end
|
105
|
+
|
106
|
+
private
|
107
|
+
|
108
|
+
def should_cache?
|
109
|
+
# Don't cache in CI environments by default (ensures clean runs)
|
110
|
+
return false if ENV["CI"] == "true"
|
111
|
+
|
112
|
+
# Don't cache if explicitly disabled
|
113
|
+
return false if ENV["MAKIT_DISABLE_TEST_CACHE"] == "true"
|
114
|
+
|
115
|
+
# Don't cache during test development/debugging
|
116
|
+
return false if ENV["MAKIT_TEST_DEBUG"] == "true"
|
117
|
+
|
118
|
+
# Don't cache in test environment unless explicitly testing the cache
|
119
|
+
return false if ENV["MAKIT_TESTING"] == "true" && ENV["MAKIT_TESTING_CACHE"] != "true"
|
120
|
+
|
121
|
+
true
|
122
|
+
end
|
123
|
+
|
124
|
+
def cache_directory_for(test_instance, cache_key)
|
125
|
+
test_class = test_instance.class.name.gsub("::", "/")
|
126
|
+
test_method = test_instance.name
|
127
|
+
|
128
|
+
File.join(CACHE_BASE_DIR, test_class, test_method, cache_key)
|
129
|
+
end
|
130
|
+
|
131
|
+
def class_cache_key(test_class)
|
132
|
+
test_class.name.gsub("::", "/")
|
133
|
+
end
|
134
|
+
|
135
|
+
def cache_valid?(cache_dir, metadata, dependencies, ttl)
|
136
|
+
return false unless Dir.exist?(cache_dir)
|
137
|
+
return false unless metadata
|
138
|
+
|
139
|
+
# Check TTL
|
140
|
+
cache_age = Time.now - Time.parse(metadata["created_at"])
|
141
|
+
return false if cache_age > ttl
|
142
|
+
|
143
|
+
# Check dependencies
|
144
|
+
return false unless dependencies_current?(metadata["dependencies"], dependencies)
|
145
|
+
|
146
|
+
# Check if cache directory has content
|
147
|
+
entries = Dir.entries(cache_dir) - [".", "..", CACHE_METADATA_FILE]
|
148
|
+
entries.any?
|
149
|
+
end
|
150
|
+
|
151
|
+
def dependencies_current?(cached_deps, current_deps)
|
152
|
+
return true if current_deps.empty?
|
153
|
+
|
154
|
+
current_deps.each do |dep_file|
|
155
|
+
next unless File.exist?(dep_file)
|
156
|
+
|
157
|
+
current_mtime = File.mtime(dep_file).to_i
|
158
|
+
cached_mtime = cached_deps&.dig(dep_file)
|
159
|
+
|
160
|
+
return false if cached_mtime.nil? || current_mtime > cached_mtime
|
161
|
+
end
|
162
|
+
|
163
|
+
true
|
164
|
+
end
|
165
|
+
|
166
|
+
def read_cache_metadata(cache_dir)
|
167
|
+
metadata_file = File.join(cache_dir, CACHE_METADATA_FILE)
|
168
|
+
return nil unless File.exist?(metadata_file)
|
169
|
+
|
170
|
+
JSON.parse(File.read(metadata_file))
|
171
|
+
rescue JSON::ParserError
|
172
|
+
nil
|
173
|
+
end
|
174
|
+
|
175
|
+
def write_cache_metadata(cache_dir, dependencies)
|
176
|
+
metadata = {
|
177
|
+
created_at: Time.now.iso8601,
|
178
|
+
dependencies: dependencies.each_with_object({}) do |dep_file, hash|
|
179
|
+
hash[dep_file] = File.exist?(dep_file) ? File.mtime(dep_file).to_i : nil
|
180
|
+
end,
|
181
|
+
}
|
182
|
+
|
183
|
+
metadata_file = File.join(cache_dir, CACHE_METADATA_FILE)
|
184
|
+
File.write(metadata_file, JSON.pretty_generate(metadata))
|
185
|
+
end
|
186
|
+
|
187
|
+
def skip_with_cache_message(test_instance, cache_key, metadata)
|
188
|
+
cache_age = Time.now - Time.parse(metadata["created_at"])
|
189
|
+
age_text = format_duration(cache_age)
|
190
|
+
|
191
|
+
test_instance.skip("💨 Using cached result for '#{cache_key}' (cached #{age_text} ago)")
|
192
|
+
end
|
193
|
+
|
194
|
+
def cleanup_cache_directory(cache_dir)
|
195
|
+
FileUtils.rm_rf(cache_dir)
|
196
|
+
end
|
197
|
+
|
198
|
+
def directory_size(dir_path)
|
199
|
+
Dir.glob(File.join(dir_path, "**", "*"))
|
200
|
+
.select { |f| File.file?(f) }
|
201
|
+
.sum { |f| File.size(f) }
|
202
|
+
end
|
203
|
+
|
204
|
+
def format_duration(seconds)
|
205
|
+
if seconds < 60
|
206
|
+
"#{seconds.round}s"
|
207
|
+
elsif seconds < 3600
|
208
|
+
minutes = (seconds / 60).round
|
209
|
+
"#{minutes}m"
|
210
|
+
else
|
211
|
+
hours = (seconds / 3600).round
|
212
|
+
"#{hours}h"
|
213
|
+
end
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
# Mixin module for test classes to provide caching helpers
|
219
|
+
module TestCacheHelpers
|
220
|
+
def cache_expensive_operation(cache_key, dependencies: [], ttl: Makit::TestCache::DEFAULT_TTL, &block)
|
221
|
+
Makit::TestCache.with_cache(self, cache_key,
|
222
|
+
dependencies: dependencies,
|
223
|
+
ttl: ttl,
|
224
|
+
&block)
|
225
|
+
end
|
226
|
+
|
227
|
+
def cached_directory(cache_key, dependencies: [], ttl: Makit::TestCache::DEFAULT_TTL)
|
228
|
+
Makit::TestCache.cache_directory(self, cache_key,
|
229
|
+
dependencies: dependencies,
|
230
|
+
ttl: ttl)
|
231
|
+
end
|
232
|
+
|
233
|
+
def cached_files_exist?(cache_key, expected_files, dependencies: [], ttl: Makit::TestCache::DEFAULT_TTL)
|
234
|
+
Makit::TestCache.cache_files(self, cache_key, expected_files,
|
235
|
+
dependencies: dependencies,
|
236
|
+
ttl: ttl)
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
data/lib/makit/tree.rb
CHANGED
@@ -1,37 +1,37 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# This module provides classes for the Makit gem.
|
4
|
-
module Makit
|
5
|
-
class Tree
|
6
|
-
def get_source_tree
|
7
|
-
files = `git ls-files`.split("\n")
|
8
|
-
tree = {}
|
9
|
-
|
10
|
-
# Build a nested hash representing the file structure
|
11
|
-
files.each do |file|
|
12
|
-
parts = file.split("/")
|
13
|
-
current = tree
|
14
|
-
|
15
|
-
parts.each_with_index do |part, index|
|
16
|
-
current[part] ||= (index == parts.length - 1 ? nil : {})
|
17
|
-
current = current[part] unless current[part].nil?
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
generate_tree_string(tree)
|
22
|
-
end
|
23
|
-
|
24
|
-
def generate_tree_string(tree, indent = "")
|
25
|
-
result = ""
|
26
|
-
tree.each do |key, value|
|
27
|
-
if value.is_a?(Hash)
|
28
|
-
result << "#{indent}#{key}/\n"
|
29
|
-
result << generate_tree_string(value, "#{indent} ")
|
30
|
-
else
|
31
|
-
result << "#{indent}#{key}\n"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
result
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This module provides classes for the Makit gem.
|
4
|
+
module Makit
|
5
|
+
class Tree
|
6
|
+
def get_source_tree
|
7
|
+
files = `git ls-files`.split("\n")
|
8
|
+
tree = {}
|
9
|
+
|
10
|
+
# Build a nested hash representing the file structure
|
11
|
+
files.each do |file|
|
12
|
+
parts = file.split("/")
|
13
|
+
current = tree
|
14
|
+
|
15
|
+
parts.each_with_index do |part, index|
|
16
|
+
current[part] ||= (index == parts.length - 1 ? nil : {})
|
17
|
+
current = current[part] unless current[part].nil?
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
generate_tree_string(tree)
|
22
|
+
end
|
23
|
+
|
24
|
+
def generate_tree_string(tree, indent = "")
|
25
|
+
result = ""
|
26
|
+
tree.each do |key, value|
|
27
|
+
if value.is_a?(Hash)
|
28
|
+
result << "#{indent}#{key}/\n"
|
29
|
+
result << generate_tree_string(value, "#{indent} ")
|
30
|
+
else
|
31
|
+
result << "#{indent}#{key}\n"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
result
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/makit/v1/makit.v1_pb.rb
CHANGED
@@ -1,35 +1,35 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
4
|
-
# source: lib/makit/v1/makit.v1.proto
|
5
|
-
|
6
|
-
require "google/protobuf"
|
7
|
-
|
8
|
-
require "google/protobuf/timestamp_pb"
|
9
|
-
require "google/protobuf/duration_pb"
|
10
|
-
|
11
|
-
descriptor_data = "\n\x1blib/makit/v1/makit.v1.proto\x12\x08makit.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\"/\n\x0b\x45nvironment\x12\n\n\x02os\x18\x01 \x01(\t\x12\x14\n\x0c\x61rchitecture\x18\x02 \x01(\t\"\x92\x02\n\rDotNetProject\x12\x10\n\x08template\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06output\x18\x03 \x01(\t\x12\x10\n\x08packages\x18\x04 \x03(\t\x12\x12\n\nreferences\x18\x05 \x03(\t\x12\n\n\x02os\x18\x06 \x01(\t\x12\x10\n\x08\x63ommands\x18\x07 \x03(\t\x12-\n\nbuild_args\x18\x08 \x03(\x0b\x32\x19.makit.v1.DotNetBuildArgs\x12\x31\n\x0cpublish_args\x18\t \x03(\x0b\x32\x1b.makit.v1.DotNetPublishArgs\x12+\n\ttest_args\x18\n \x03(\x0b\x32\x18.makit.v1.DotNetTestArgs\"8\n\x0f\x44otNetBuildArgs\x12\x15\n\rconfiguration\x18\x01 \x01(\t\x12\x0e\n\x06output\x18\x02 \x01(\t\":\n\x11\x44otNetPublishArgs\x12\x15\n\rconfiguration\x18\x01 \x01(\t\x12\x0e\n\x06output\x18\x02 \x01(\t\"7\n\x0e\x44otNetTestArgs\x12\x15\n\rconfiguration\x18\x01 \x01(\t\x12\x0e\n\x06output\x18\x02 \x01(\t\"\xa8\x01\n\x07Project\x12\x16\n\x0egit_remote_url\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\tartifacts\x18\x03 \x03(\t\x12\x32\n\x10\x63ommand_requests\x18\x04 \x03(\x0b\x32\x18.makit.v1.CommandRequest\x12\x30\n\x0f\x64otnet_projects\x18\x05 \x03(\x0b\x32\x17.makit.v1.DotNetProject\"\xa5\x01\n\x0e\x43ommandRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\targuments\x18\x02 \x03(\t\x12+\n\x07timeout\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\tdirectory\x18\x04 \x01(\t\x12\x0c\n\x04task\x18\x05 \x01(\t\x12\r\n\x05input\x18\x06 \x01(\x0c\x12\x15\n\rexit_on_error\x18\x07 \x01(\x08\"\x91\x02\n\x07\x43ommand\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\targuments\x18\x03 \x03(\t\x12\x11\n\texit_code\x18\x04 \x01(\x05\x12\r\n\x05input\x18\x05 \x01(\x0c\x12\x0e\n\x06output\x18\x06 \x01(\x0c\x12\r\n\x05\x65rror\x18\x07 \x01(\x0c\x12.\n\nstarted_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0c\n\x04user\x18\n \x01(\t\x12\x0e\n\x06\x64\x65vice\x18\x0b \x01(\t\x12\n\n\x02os\x18\x0c \x01(\t\x12\x11\n\tdirectory\x18\r \x01(\t\"I\n\rConfiguration\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x08\x63ommands\x18\x02 \x03(\x0b\x32\x18.makit.v1.CommandRequest\"3\n\rGitRepository\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x15\n\rrelative_path\x18\x02 \x01(\t\"h\n\x0bGitLogEntry\x12\x0e\n\x06\x63ommit\x18\x01 \x01(\t\x12\x0e\n\x06\x61uthor\x18\x02 \x01(\t\x12(\n\x04\x64\x61te\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0f\n\x07message\x18\x04 \x01(\t\"\xc8\x01\n\nMakeResult\x12\x12\n\nrepository\x18\x01 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x02 \x01(\t\x12\x0e\n\x06\x62ranch\x18\x03 \x01(\t\x12\x0b\n\x03tag\x18\x04 \x01(\t\x12\x0e\n\x06\x64\x65vice\x18\x05 \x01(\t\x12\x1a\n\x12runtime_identifier\x18\x06 \x01(\t\x12#\n\x08\x63ommands\x18\x07 \x03(\x0b\x32\x11.makit.v1.Command\x12\x14\n\x0cinitial_size\x18\x08 \x01(\x05\x12\x12\n\nfinal_size\x18\t \x01(\x05\"?\n\rDotNetNewArgs\x12\x10\n\x08template\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06output\x18\x03 \x01(\t\"^\n\rManifestEntry\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x31\n\rlast_modified\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04size\x18\x03 \x01(\x03**\n\x08Language\x12\x08\n\x04RUBY\x10\x00\x12\n\n\x06\x43SHARP\x10\x01\x12\x08\n\x04RUST\x10\x02*,\n\x0bPackageType\x12\x07\n\x03GEM\x10\x00\x12\t\n\x05NUGET\x10\x01\x12\t\n\x05\x43RATE\x10\x03\x32H\n\x0e\x43ommandService\x12\x36\n\x07\x45xecute\x12\x18.makit.v1.CommandRequest\x1a\x11.makit.v1.Commandb\x06proto3"
|
12
|
-
|
13
|
-
pool = Google::Protobuf::DescriptorPool.generated_pool
|
14
|
-
pool.add_serialized_file(descriptor_data)
|
15
|
-
|
16
|
-
module Makit
|
17
|
-
module V1
|
18
|
-
Environment = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.Environment").msgclass
|
19
|
-
DotNetProject = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.DotNetProject").msgclass
|
20
|
-
DotNetBuildArgs = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.DotNetBuildArgs").msgclass
|
21
|
-
DotNetPublishArgs = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.DotNetPublishArgs").msgclass
|
22
|
-
DotNetTestArgs = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.DotNetTestArgs").msgclass
|
23
|
-
Project = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.Project").msgclass
|
24
|
-
CommandRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.CommandRequest").msgclass
|
25
|
-
Command = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.Command").msgclass
|
26
|
-
Configuration = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.Configuration").msgclass
|
27
|
-
GitRepository = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.GitRepository").msgclass
|
28
|
-
GitLogEntry = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.GitLogEntry").msgclass
|
29
|
-
MakeResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.MakeResult").msgclass
|
30
|
-
DotNetNewArgs = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.DotNetNewArgs").msgclass
|
31
|
-
ManifestEntry = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.ManifestEntry").msgclass
|
32
|
-
Language = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.Language").enummodule
|
33
|
-
PackageType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.PackageType").enummodule
|
34
|
-
end
|
35
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
4
|
+
# source: lib/makit/v1/makit.v1.proto
|
5
|
+
|
6
|
+
require "google/protobuf"
|
7
|
+
|
8
|
+
require "google/protobuf/timestamp_pb"
|
9
|
+
require "google/protobuf/duration_pb"
|
10
|
+
|
11
|
+
descriptor_data = "\n\x1blib/makit/v1/makit.v1.proto\x12\x08makit.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\"/\n\x0b\x45nvironment\x12\n\n\x02os\x18\x01 \x01(\t\x12\x14\n\x0c\x61rchitecture\x18\x02 \x01(\t\"\x92\x02\n\rDotNetProject\x12\x10\n\x08template\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06output\x18\x03 \x01(\t\x12\x10\n\x08packages\x18\x04 \x03(\t\x12\x12\n\nreferences\x18\x05 \x03(\t\x12\n\n\x02os\x18\x06 \x01(\t\x12\x10\n\x08\x63ommands\x18\x07 \x03(\t\x12-\n\nbuild_args\x18\x08 \x03(\x0b\x32\x19.makit.v1.DotNetBuildArgs\x12\x31\n\x0cpublish_args\x18\t \x03(\x0b\x32\x1b.makit.v1.DotNetPublishArgs\x12+\n\ttest_args\x18\n \x03(\x0b\x32\x18.makit.v1.DotNetTestArgs\"8\n\x0f\x44otNetBuildArgs\x12\x15\n\rconfiguration\x18\x01 \x01(\t\x12\x0e\n\x06output\x18\x02 \x01(\t\":\n\x11\x44otNetPublishArgs\x12\x15\n\rconfiguration\x18\x01 \x01(\t\x12\x0e\n\x06output\x18\x02 \x01(\t\"7\n\x0e\x44otNetTestArgs\x12\x15\n\rconfiguration\x18\x01 \x01(\t\x12\x0e\n\x06output\x18\x02 \x01(\t\"\xa8\x01\n\x07Project\x12\x16\n\x0egit_remote_url\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\tartifacts\x18\x03 \x03(\t\x12\x32\n\x10\x63ommand_requests\x18\x04 \x03(\x0b\x32\x18.makit.v1.CommandRequest\x12\x30\n\x0f\x64otnet_projects\x18\x05 \x03(\x0b\x32\x17.makit.v1.DotNetProject\"\xa5\x01\n\x0e\x43ommandRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\targuments\x18\x02 \x03(\t\x12+\n\x07timeout\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\tdirectory\x18\x04 \x01(\t\x12\x0c\n\x04task\x18\x05 \x01(\t\x12\r\n\x05input\x18\x06 \x01(\x0c\x12\x15\n\rexit_on_error\x18\x07 \x01(\x08\"\x91\x02\n\x07\x43ommand\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\targuments\x18\x03 \x03(\t\x12\x11\n\texit_code\x18\x04 \x01(\x05\x12\r\n\x05input\x18\x05 \x01(\x0c\x12\x0e\n\x06output\x18\x06 \x01(\x0c\x12\r\n\x05\x65rror\x18\x07 \x01(\x0c\x12.\n\nstarted_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0c\n\x04user\x18\n \x01(\t\x12\x0e\n\x06\x64\x65vice\x18\x0b \x01(\t\x12\n\n\x02os\x18\x0c \x01(\t\x12\x11\n\tdirectory\x18\r \x01(\t\"I\n\rConfiguration\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x08\x63ommands\x18\x02 \x03(\x0b\x32\x18.makit.v1.CommandRequest\"3\n\rGitRepository\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x15\n\rrelative_path\x18\x02 \x01(\t\"h\n\x0bGitLogEntry\x12\x0e\n\x06\x63ommit\x18\x01 \x01(\t\x12\x0e\n\x06\x61uthor\x18\x02 \x01(\t\x12(\n\x04\x64\x61te\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0f\n\x07message\x18\x04 \x01(\t\"\xc8\x01\n\nMakeResult\x12\x12\n\nrepository\x18\x01 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x02 \x01(\t\x12\x0e\n\x06\x62ranch\x18\x03 \x01(\t\x12\x0b\n\x03tag\x18\x04 \x01(\t\x12\x0e\n\x06\x64\x65vice\x18\x05 \x01(\t\x12\x1a\n\x12runtime_identifier\x18\x06 \x01(\t\x12#\n\x08\x63ommands\x18\x07 \x03(\x0b\x32\x11.makit.v1.Command\x12\x14\n\x0cinitial_size\x18\x08 \x01(\x05\x12\x12\n\nfinal_size\x18\t \x01(\x05\"?\n\rDotNetNewArgs\x12\x10\n\x08template\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06output\x18\x03 \x01(\t\"^\n\rManifestEntry\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x31\n\rlast_modified\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04size\x18\x03 \x01(\x03**\n\x08Language\x12\x08\n\x04RUBY\x10\x00\x12\n\n\x06\x43SHARP\x10\x01\x12\x08\n\x04RUST\x10\x02*,\n\x0bPackageType\x12\x07\n\x03GEM\x10\x00\x12\t\n\x05NUGET\x10\x01\x12\t\n\x05\x43RATE\x10\x03\x32H\n\x0e\x43ommandService\x12\x36\n\x07\x45xecute\x12\x18.makit.v1.CommandRequest\x1a\x11.makit.v1.Commandb\x06proto3"
|
12
|
+
|
13
|
+
pool = Google::Protobuf::DescriptorPool.generated_pool
|
14
|
+
pool.add_serialized_file(descriptor_data)
|
15
|
+
|
16
|
+
module Makit
|
17
|
+
module V1
|
18
|
+
Environment = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.Environment").msgclass
|
19
|
+
DotNetProject = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.DotNetProject").msgclass
|
20
|
+
DotNetBuildArgs = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.DotNetBuildArgs").msgclass
|
21
|
+
DotNetPublishArgs = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.DotNetPublishArgs").msgclass
|
22
|
+
DotNetTestArgs = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.DotNetTestArgs").msgclass
|
23
|
+
Project = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.Project").msgclass
|
24
|
+
CommandRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.CommandRequest").msgclass
|
25
|
+
Command = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.Command").msgclass
|
26
|
+
Configuration = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.Configuration").msgclass
|
27
|
+
GitRepository = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.GitRepository").msgclass
|
28
|
+
GitLogEntry = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.GitLogEntry").msgclass
|
29
|
+
MakeResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.MakeResult").msgclass
|
30
|
+
DotNetNewArgs = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.DotNetNewArgs").msgclass
|
31
|
+
ManifestEntry = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.ManifestEntry").msgclass
|
32
|
+
Language = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.Language").enummodule
|
33
|
+
PackageType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.PackageType").enummodule
|
34
|
+
end
|
35
|
+
end
|