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.
- 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/azure/blob_storage.rb +257 -257
- data/lib/makit/azure/cli.rb +284 -284
- data/lib/makit/cli/base.rb +17 -17
- 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 +41 -41
- 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 +78 -78
- data/lib/makit/cli/pipeline_commands.rb +311 -311
- 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 +207 -207
- 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 +386 -386
- data/lib/makit/commands/strategies/base.rb +171 -171
- data/lib/makit/commands/strategies/child_process.rb +162 -162
- data/lib/makit/commands/strategies/factory.rb +136 -136
- data/lib/makit/commands/strategies/synchronous.rb +139 -139
- data/lib/makit/commands.rb +50 -50
- data/lib/makit/configuration/dotnet_project.rb +48 -48
- data/lib/makit/configuration/gitlab_helper.rb +61 -61
- data/lib/makit/configuration/project.rb +292 -292
- data/lib/makit/configuration/rakefile_helper.rb +43 -43
- data/lib/makit/configuration/step.rb +34 -34
- data/lib/makit/configuration/timeout.rb +74 -74
- data/lib/makit/configuration.rb +21 -21
- 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 +170 -170
- 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 +32 -32
- data/lib/makit/files.rb +43 -43
- data/lib/makit/gems.rb +40 -40
- data/lib/makit/git/cli.rb +78 -54
- data/lib/makit/git/repository.rb +100 -100
- data/lib/makit/git.rb +104 -104
- data/lib/makit/gitlab/pipeline.rb +857 -857
- data/lib/makit/gitlab/pipeline_service_impl.rb +1535 -1535
- data/lib/makit/gitlab_runner.rb +59 -59
- data/lib/makit/humanize.rb +218 -218
- data/lib/makit/indexer.rb +47 -47
- data/lib/makit/io/filesystem.rb +111 -111
- data/lib/makit/io/filesystem_service_impl.rb +337 -337
- data/lib/makit/lint.rb +212 -212
- data/lib/makit/logging/configuration.rb +309 -309
- 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 +578 -578
- 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 +205 -205
- data/lib/makit/nuget.rb +74 -74
- data/lib/makit/podman/podman.rb +458 -458
- data/lib/makit/podman/podman_service_impl.rb +1081 -1081
- data/lib/makit/port.rb +32 -32
- data/lib/makit/process.rb +377 -377
- data/lib/makit/protoc.rb +112 -112
- data/lib/makit/rake/cli.rb +196 -196
- data/lib/makit/rake/trace_controller.rb +174 -174
- data/lib/makit/rake.rb +81 -81
- data/lib/makit/ruby/cli.rb +185 -185
- data/lib/makit/ruby.rb +25 -25
- data/lib/makit/rubygems.rb +137 -0
- data/lib/makit/secrets/azure_key_vault.rb +322 -322
- data/lib/makit/secrets/azure_secrets.rb +183 -183
- data/lib/makit/secrets/local_secrets.rb +72 -72
- data/lib/makit/secrets/secrets_manager.rb +105 -105
- data/lib/makit/secrets.rb +16 -16
- 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 +367 -367
- 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/pages.rb +11 -11
- 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 +175 -175
- 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/bump.rb +7 -7
- 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/info.rb +368 -368
- data/lib/makit/tasks/init.rb +49 -49
- data/lib/makit/tasks/integrate.rb +60 -56
- data/lib/makit/tasks/pull_incoming.rb +13 -13
- data/lib/makit/tasks/secrets.rb +7 -7
- data/lib/makit/tasks/setup.rb +16 -16
- data/lib/makit/tasks/sync.rb +14 -17
- data/lib/makit/tasks/tag.rb +27 -27
- 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/version.rb +6 -6
- data/lib/makit/tasks.rb +24 -24
- data/lib/makit/test_cache.rb +239 -239
- data/lib/makit/tree.rb +37 -37
- data/lib/makit/v1/configuration/project_service_impl.rb +370 -370
- data/lib/makit/v1/git/git_repository_service_impl.rb +295 -295
- data/lib/makit/v1/makit.v1_pb.rb +35 -35
- data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
- data/lib/makit/v1/services/repository_manager_service_impl.rb +572 -572
- data/lib/makit/version.rb +661 -503
- 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 +115 -114
- metadata +3 -2
data/lib/makit/tasks/info.rb
CHANGED
|
@@ -1,368 +1,368 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "pathname"
|
|
4
|
-
require "open3"
|
|
5
|
-
|
|
6
|
-
desc "Display information about the current project"
|
|
7
|
-
task :info do
|
|
8
|
-
# Start timing for debug logging
|
|
9
|
-
start_time = Time.now
|
|
10
|
-
is_debug = Makit::Logging.current_log_level == :debug
|
|
11
|
-
|
|
12
|
-
if is_debug
|
|
13
|
-
Makit::Logging.debug("rake info task started")
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# Get verbosity level
|
|
17
|
-
verbosity = Makit::Logging.current_verbosity
|
|
18
|
-
|
|
19
|
-
# Get GIT_REMOTE_URL - try multiple sources (optimized: check constant first, avoid slow operations)
|
|
20
|
-
git_remote_url_start = Time.now if is_debug
|
|
21
|
-
git_remote_url = if defined?(GIT_REMOTE_URL) && !GIT_REMOTE_URL.nil? && !GIT_REMOTE_URL.empty?
|
|
22
|
-
GIT_REMOTE_URL
|
|
23
|
-
elsif Dir.exist?(".git") || File.exist?(".git")
|
|
24
|
-
# Fast check: directly check for .git directory/file instead of calling Makit::Git.git_repo?
|
|
25
|
-
# which executes multiple git commands. Then directly get remote URL.
|
|
26
|
-
begin
|
|
27
|
-
# Direct git command execution - much faster than going through repository state
|
|
28
|
-
remote_url_output, _stderr, status = Open3.capture3('git', 'remote', 'get-url', 'origin')
|
|
29
|
-
if status.success? && remote_url_output && !remote_url_output.strip.empty?
|
|
30
|
-
remote_url_output.strip
|
|
31
|
-
else
|
|
32
|
-
nil
|
|
33
|
-
end
|
|
34
|
-
rescue
|
|
35
|
-
nil
|
|
36
|
-
end
|
|
37
|
-
elsif File.exist?(".makit.json")
|
|
38
|
-
# Only load project config if .makit.json exists (avoid creating it unnecessarily)
|
|
39
|
-
begin
|
|
40
|
-
project = Makit::Configuration::Project.default
|
|
41
|
-
project.git_remote_url unless project.git_remote_url.nil? || project.git_remote_url.empty?
|
|
42
|
-
rescue
|
|
43
|
-
nil
|
|
44
|
-
end
|
|
45
|
-
else
|
|
46
|
-
nil
|
|
47
|
-
end
|
|
48
|
-
if is_debug
|
|
49
|
-
elapsed = Time.now - git_remote_url_start
|
|
50
|
-
Makit::Logging.debug("GIT_REMOTE_URL lookup took #{sprintf('%.3f', elapsed)} seconds")
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# Get VERSION and VERSION_FILE - using same logic as rake version
|
|
54
|
-
# This ensures consistency between rake info and rake version
|
|
55
|
-
# Optimized: Use Makit::Directories::PROJECT_ROOT directly, check specific files before glob
|
|
56
|
-
version_start = Time.now if is_debug
|
|
57
|
-
version_file = nil
|
|
58
|
-
version = nil
|
|
59
|
-
|
|
60
|
-
begin
|
|
61
|
-
# Use Makit::Directories::PROJECT_ROOT directly (already loaded, fast)
|
|
62
|
-
project_root = Makit::Directories::PROJECT_ROOT
|
|
63
|
-
|
|
64
|
-
if project_root && Dir.exist?(project_root)
|
|
65
|
-
# Check for manually defined VERSION_FILE constant first
|
|
66
|
-
if defined?(VERSION_FILE) && !VERSION_FILE.nil?
|
|
67
|
-
version_file = File.expand_path(VERSION_FILE, project_root)
|
|
68
|
-
version_file = nil unless File.exist?(version_file)
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
# If no VERSION_FILE constant, search for common version files
|
|
72
|
-
# Optimized: Check specific files first (fast File.exist?) before using glob (slower)
|
|
73
|
-
unless version_file
|
|
74
|
-
# Check specific files first (much faster than glob patterns)
|
|
75
|
-
specific_files = [
|
|
76
|
-
"Directory.Build.props",
|
|
77
|
-
"Cargo.toml",
|
|
78
|
-
"package.json",
|
|
79
|
-
"pyproject.toml",
|
|
80
|
-
"pom.xml"
|
|
81
|
-
]
|
|
82
|
-
|
|
83
|
-
specific_files.each do |filename|
|
|
84
|
-
file_path = File.join(project_root, filename)
|
|
85
|
-
if File.exist?(file_path)
|
|
86
|
-
version_file = file_path
|
|
87
|
-
break
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
# Only use glob for gemspec if no specific file found (glob can be slow on large dirs)
|
|
92
|
-
unless version_file
|
|
93
|
-
gemspec_matches = Dir.glob(File.join(project_root, "*.gemspec"))
|
|
94
|
-
version_file = gemspec_matches.first unless gemspec_matches.empty?
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
# Extract version from the file if found (same logic as Makit::Version.extract_version_from_ssot_file)
|
|
99
|
-
if version_file && File.exist?(version_file)
|
|
100
|
-
case File.basename(version_file)
|
|
101
|
-
when /\.gemspec$/
|
|
102
|
-
content = File.read(version_file)
|
|
103
|
-
match = content.match(/spec\.version\s*=\s*["']([^"']+)["']/)
|
|
104
|
-
version = match[1] if match
|
|
105
|
-
when "Directory.Build.props"
|
|
106
|
-
content = File.read(version_file)
|
|
107
|
-
match = content.match(%r{<Version>([^<]+)</Version>})
|
|
108
|
-
version = match[1] if match
|
|
109
|
-
when "Cargo.toml"
|
|
110
|
-
content = File.read(version_file)
|
|
111
|
-
match = content.match(/version\s*=\s*["']([^"']+)["']/)
|
|
112
|
-
version = match[1] if match
|
|
113
|
-
when "package.json"
|
|
114
|
-
require "json"
|
|
115
|
-
json = JSON.parse(File.read(version_file))
|
|
116
|
-
version = json["version"]
|
|
117
|
-
when "pyproject.toml"
|
|
118
|
-
content = File.read(version_file)
|
|
119
|
-
match = content.match(/\[project\]\s*version\s*=\s*["']([^"']+)["']/)
|
|
120
|
-
version = match[1] if match
|
|
121
|
-
unless version
|
|
122
|
-
match = content.match(/\[tool\.poetry\]\s*version\s*=\s*["']([^"']+)["']/)
|
|
123
|
-
version = match[1] if match
|
|
124
|
-
end
|
|
125
|
-
when "pom.xml"
|
|
126
|
-
content = File.read(version_file)
|
|
127
|
-
match = content.match(%r{<version>([^<]+)</version>})
|
|
128
|
-
version = match[1] if match
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
# Convert to relative path for display (same as Makit::Version.info)
|
|
132
|
-
if version_file && project_root
|
|
133
|
-
# Normalize paths to use forward slashes for consistency (Windows-safe)
|
|
134
|
-
normalized_version_file = version_file.gsub(/\\/, "/")
|
|
135
|
-
normalized_project_root = project_root.gsub(/\\/, "/")
|
|
136
|
-
version_file = normalized_version_file.sub(normalized_project_root + "/", "")
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
rescue => e
|
|
141
|
-
# Silently handle errors - fall back to VERSION constant
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
# Fallback to Rakefile VERSION constant or Makit::Version.version if no version file found
|
|
145
|
-
unless version
|
|
146
|
-
version = defined?(VERSION) ? VERSION : Makit::Version.version
|
|
147
|
-
end
|
|
148
|
-
if is_debug
|
|
149
|
-
elapsed = Time.now - version_start
|
|
150
|
-
Makit::Logging.debug("VERSION and VERSION_FILE lookup took #{sprintf('%.3f', elapsed)} seconds")
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
# Get BRANCH - from git if available (optimized, Windows-safe)
|
|
154
|
-
# Reuse git repo check from GIT_REMOTE_URL lookup to avoid duplicate check
|
|
155
|
-
branch_start = Time.now if is_debug
|
|
156
|
-
branch = if git_remote_url || Dir.exist?(".git") || File.exist?(".git")
|
|
157
|
-
# Fast check: directly execute git branch command instead of calling Makit::Git.branch
|
|
158
|
-
# which executes the expensive get_repository_state with multiple git commands
|
|
159
|
-
begin
|
|
160
|
-
branch_output, _stderr, status = Open3.capture3('git', 'branch', '--show-current')
|
|
161
|
-
current_branch = if status.success? && branch_output && !branch_output.strip.empty?
|
|
162
|
-
branch_output.strip
|
|
163
|
-
else
|
|
164
|
-
'(unknown)'
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
# Check if current branch is the default branch (Windows-safe error handling)
|
|
168
|
-
if current_branch != '(unknown)'
|
|
169
|
-
begin
|
|
170
|
-
# Get default branch from remote (Windows-safe: use Open3 for proper error handling)
|
|
171
|
-
default_branch_output, _stderr, status = Open3.capture3('git', 'symbolic-ref', 'refs/remotes/origin/HEAD')
|
|
172
|
-
if status.success? && default_branch_output && !default_branch_output.strip.empty?
|
|
173
|
-
default_branch = default_branch_output.strip.sub('refs/remotes/origin/', '')
|
|
174
|
-
if current_branch == default_branch
|
|
175
|
-
current_branch = "#{current_branch} (default)"
|
|
176
|
-
end
|
|
177
|
-
end
|
|
178
|
-
rescue
|
|
179
|
-
# Silently fail if we can't determine default branch
|
|
180
|
-
end
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
current_branch
|
|
184
|
-
rescue
|
|
185
|
-
'(unknown)'
|
|
186
|
-
end
|
|
187
|
-
else
|
|
188
|
-
'(not a git repo)'
|
|
189
|
-
end
|
|
190
|
-
if is_debug
|
|
191
|
-
elapsed = Time.now - branch_start
|
|
192
|
-
Makit::Logging.debug("BRANCH lookup took #{sprintf('%.3f', elapsed)} seconds")
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
# Display information with colors
|
|
196
|
-
display_start = Time.now if is_debug
|
|
197
|
-
name_color = :grey
|
|
198
|
-
value_color = :green
|
|
199
|
-
label_width = 20 # Fixed width for label column
|
|
200
|
-
|
|
201
|
-
git_remote_display = git_remote_url || '(not set)'
|
|
202
|
-
|
|
203
|
-
# Always show basic info
|
|
204
|
-
label1 = 'GIT_REMOTE_URL'.rjust(label_width).colorize(name_color)
|
|
205
|
-
value1 = git_remote_display.colorize(value_color)
|
|
206
|
-
puts " #{label1} #{value1}"
|
|
207
|
-
|
|
208
|
-
label2 = 'VERSION'.rjust(label_width).colorize(name_color)
|
|
209
|
-
value2 = version.to_s.colorize(value_color)
|
|
210
|
-
puts " #{label2} #{value2}"
|
|
211
|
-
|
|
212
|
-
if version_file
|
|
213
|
-
label_version_file = 'VERSION_FILE'.rjust(label_width).colorize(name_color)
|
|
214
|
-
value_version_file = version_file.colorize(value_color)
|
|
215
|
-
puts " #{label_version_file} #{value_version_file}"
|
|
216
|
-
end
|
|
217
|
-
|
|
218
|
-
label3 = 'BRANCH'.rjust(label_width).colorize(name_color)
|
|
219
|
-
value3 = branch.colorize(value_color)
|
|
220
|
-
puts " #{label3} #{value3}"
|
|
221
|
-
|
|
222
|
-
# Show LOG_LEVEL and VERBOSITY for normal and above
|
|
223
|
-
if [:normal, :verbose, :debug].include?(verbosity)
|
|
224
|
-
log_level = Makit::Logging.current_log_level.to_s
|
|
225
|
-
verbosity_str = verbosity.to_s
|
|
226
|
-
|
|
227
|
-
label4 = 'LOG_LEVEL'.rjust(label_width).colorize(name_color)
|
|
228
|
-
value4 = log_level.colorize(value_color)
|
|
229
|
-
puts " #{label4} #{value4}"
|
|
230
|
-
|
|
231
|
-
label5 = 'VERBOSITY'.rjust(label_width).colorize(name_color)
|
|
232
|
-
value5 = verbosity_str.colorize(value_color)
|
|
233
|
-
puts " #{label5} #{value5}"
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
# Show additional sections for verbose and debug
|
|
237
|
-
if [:verbose, :debug].include?(verbosity)
|
|
238
|
-
# Project section
|
|
239
|
-
begin
|
|
240
|
-
project = Makit::Configuration::Project.default
|
|
241
|
-
project_root = Makit::Directories::PROJECT_ROOT
|
|
242
|
-
project_root_display = if project_root && Dir.exist?(project_root)
|
|
243
|
-
# Show relative path if possible
|
|
244
|
-
begin
|
|
245
|
-
Pathname.new(project_root).relative_path_from(Pathname.new(Dir.pwd)).to_s
|
|
246
|
-
rescue
|
|
247
|
-
project_root
|
|
248
|
-
end
|
|
249
|
-
else
|
|
250
|
-
'(not found)'
|
|
251
|
-
end
|
|
252
|
-
|
|
253
|
-
puts ""
|
|
254
|
-
puts "Project:".colorize(:cyan)
|
|
255
|
-
display_field('NAME', project.name || '(not set)', label_width, name_color, value_color)
|
|
256
|
-
display_field('TYPE', project.project_type || '(not set)', label_width, name_color, value_color)
|
|
257
|
-
display_field('ROOT', project_root_display, label_width, name_color, value_color)
|
|
258
|
-
display_field('AUTHORS', project.authors || '(not set)', label_width, name_color, value_color)
|
|
259
|
-
display_field('LICENSE', project.license_expression || '(not set)', label_width, name_color, value_color)
|
|
260
|
-
rescue => e
|
|
261
|
-
# Silently handle errors loading project info
|
|
262
|
-
end
|
|
263
|
-
|
|
264
|
-
# Git section (optimized: reuse branch from main section, avoid expensive git operations)
|
|
265
|
-
if branch && branch != '(not a git repo)'
|
|
266
|
-
begin
|
|
267
|
-
# Reuse branch from main section (already optimized)
|
|
268
|
-
verbose_branch = branch
|
|
269
|
-
|
|
270
|
-
# Get git status and commit info (optimized: direct git commands instead of get_repository_state)
|
|
271
|
-
begin
|
|
272
|
-
# Check if clean using direct git command (faster than Makit::Git.clean?)
|
|
273
|
-
status_output, _stderr, status = Open3.capture3('git', 'status', '--porcelain')
|
|
274
|
-
status = status.success? && status_output.strip.empty? ? 'clean' : 'dirty'
|
|
275
|
-
rescue
|
|
276
|
-
status = 'unknown'
|
|
277
|
-
end
|
|
278
|
-
|
|
279
|
-
begin
|
|
280
|
-
# Get commit SHA using direct git command (faster than Makit::Git.commitsha)
|
|
281
|
-
commit_output, _stderr, commit_status = Open3.capture3('git', 'rev-parse', 'HEAD')
|
|
282
|
-
commit = commit_status.success? && commit_output ? commit_output.strip : nil
|
|
283
|
-
commit_display = commit ? commit[0, 7] : '(unknown)'
|
|
284
|
-
rescue
|
|
285
|
-
commit_display = '(unknown)'
|
|
286
|
-
end
|
|
287
|
-
|
|
288
|
-
puts ""
|
|
289
|
-
puts "Git:".colorize(:cyan)
|
|
290
|
-
display_field('BRANCH', verbose_branch, label_width, name_color, value_color)
|
|
291
|
-
display_field('STATUS', status, label_width, name_color, value_color)
|
|
292
|
-
display_field('COMMIT', commit_display, label_width, name_color, value_color)
|
|
293
|
-
rescue => e
|
|
294
|
-
# Silently handle errors loading git info
|
|
295
|
-
end
|
|
296
|
-
end
|
|
297
|
-
|
|
298
|
-
# Environment section
|
|
299
|
-
begin
|
|
300
|
-
ruby_version = RUBY_VERSION
|
|
301
|
-
os = Makit::Environment.get_os || '(unknown)'
|
|
302
|
-
makit_version = Makit::Version.version rescue '0.0.0'
|
|
303
|
-
|
|
304
|
-
puts ""
|
|
305
|
-
puts "Environment:".colorize(:cyan)
|
|
306
|
-
display_field('RUBY_VERSION', ruby_version, label_width, name_color, value_color)
|
|
307
|
-
display_field('OS', os, label_width, name_color, value_color)
|
|
308
|
-
display_field('MAKIT_VERSION', makit_version, label_width, name_color, value_color)
|
|
309
|
-
rescue => e
|
|
310
|
-
# Silently handle errors loading environment info
|
|
311
|
-
end
|
|
312
|
-
end
|
|
313
|
-
|
|
314
|
-
# Show debug-only sections
|
|
315
|
-
if verbosity == :debug
|
|
316
|
-
# Secrets section
|
|
317
|
-
begin
|
|
318
|
-
secrets_manager = Makit::Secrets.new
|
|
319
|
-
backend_type = secrets_manager.instance_variable_get(:@secrets_backend).class.name.split("::").last
|
|
320
|
-
secrets_file = secrets_manager.get_secrets_filename rescue nil
|
|
321
|
-
secrets_hash = secrets_manager.get_secrets_hash rescue {}
|
|
322
|
-
secret_count = secrets_hash.keys.count rescue 0
|
|
323
|
-
|
|
324
|
-
puts ""
|
|
325
|
-
puts "Secrets:".colorize(:cyan)
|
|
326
|
-
display_field('BACKEND', backend_type, label_width, name_color, value_color)
|
|
327
|
-
if secrets_file
|
|
328
|
-
display_field('SECRETS_FILE', secrets_file, label_width, name_color, value_color)
|
|
329
|
-
end
|
|
330
|
-
display_field('SECRET_COUNT', secret_count.to_s, label_width, name_color, value_color)
|
|
331
|
-
rescue => e
|
|
332
|
-
# Silently handle errors loading secrets info
|
|
333
|
-
end
|
|
334
|
-
|
|
335
|
-
# Paths section
|
|
336
|
-
begin
|
|
337
|
-
log_dir = Makit::Directories::LOG
|
|
338
|
-
artifacts_dir = Makit::Directories::PROJECT_ARTIFACTS || '(not set)'
|
|
339
|
-
project_root = Makit::Directories::PROJECT_ROOT || '(not found)'
|
|
340
|
-
|
|
341
|
-
puts ""
|
|
342
|
-
puts "Paths:".colorize(:cyan)
|
|
343
|
-
display_field('LOG_DIR', log_dir, label_width, name_color, value_color)
|
|
344
|
-
display_field('ARTIFACTS', artifacts_dir, label_width, name_color, value_color)
|
|
345
|
-
display_field('PROJECT_ROOT', project_root, label_width, name_color, value_color)
|
|
346
|
-
rescue => e
|
|
347
|
-
# Silently handle errors loading paths info
|
|
348
|
-
end
|
|
349
|
-
end
|
|
350
|
-
|
|
351
|
-
if is_debug
|
|
352
|
-
display_elapsed = Time.now - display_start
|
|
353
|
-
Makit::Logging.debug("Display operations took #{sprintf('%.3f', display_elapsed)} seconds")
|
|
354
|
-
end
|
|
355
|
-
|
|
356
|
-
# Log total execution time in debug mode
|
|
357
|
-
if is_debug
|
|
358
|
-
elapsed_time = Time.now - start_time
|
|
359
|
-
Makit::Logging.debug("rake info task completed in #{sprintf('%.3f', elapsed_time)} seconds")
|
|
360
|
-
end
|
|
361
|
-
end
|
|
362
|
-
|
|
363
|
-
# Helper method to display a field with consistent formatting
|
|
364
|
-
def display_field(label, value, label_width, name_color, value_color)
|
|
365
|
-
label_str = label.rjust(label_width).colorize(name_color)
|
|
366
|
-
value_str = value.to_s.colorize(value_color)
|
|
367
|
-
puts " #{label_str} #{value_str}"
|
|
368
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pathname"
|
|
4
|
+
require "open3"
|
|
5
|
+
|
|
6
|
+
desc "Display information about the current project"
|
|
7
|
+
task :info do
|
|
8
|
+
# Start timing for debug logging
|
|
9
|
+
start_time = Time.now
|
|
10
|
+
is_debug = Makit::Logging.current_log_level == :debug
|
|
11
|
+
|
|
12
|
+
if is_debug
|
|
13
|
+
Makit::Logging.debug("rake info task started")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Get verbosity level
|
|
17
|
+
verbosity = Makit::Logging.current_verbosity
|
|
18
|
+
|
|
19
|
+
# Get GIT_REMOTE_URL - try multiple sources (optimized: check constant first, avoid slow operations)
|
|
20
|
+
git_remote_url_start = Time.now if is_debug
|
|
21
|
+
git_remote_url = if defined?(GIT_REMOTE_URL) && !GIT_REMOTE_URL.nil? && !GIT_REMOTE_URL.empty?
|
|
22
|
+
GIT_REMOTE_URL
|
|
23
|
+
elsif Dir.exist?(".git") || File.exist?(".git")
|
|
24
|
+
# Fast check: directly check for .git directory/file instead of calling Makit::Git.git_repo?
|
|
25
|
+
# which executes multiple git commands. Then directly get remote URL.
|
|
26
|
+
begin
|
|
27
|
+
# Direct git command execution - much faster than going through repository state
|
|
28
|
+
remote_url_output, _stderr, status = Open3.capture3('git', 'remote', 'get-url', 'origin')
|
|
29
|
+
if status.success? && remote_url_output && !remote_url_output.strip.empty?
|
|
30
|
+
remote_url_output.strip
|
|
31
|
+
else
|
|
32
|
+
nil
|
|
33
|
+
end
|
|
34
|
+
rescue
|
|
35
|
+
nil
|
|
36
|
+
end
|
|
37
|
+
elsif File.exist?(".makit.json")
|
|
38
|
+
# Only load project config if .makit.json exists (avoid creating it unnecessarily)
|
|
39
|
+
begin
|
|
40
|
+
project = Makit::Configuration::Project.default
|
|
41
|
+
project.git_remote_url unless project.git_remote_url.nil? || project.git_remote_url.empty?
|
|
42
|
+
rescue
|
|
43
|
+
nil
|
|
44
|
+
end
|
|
45
|
+
else
|
|
46
|
+
nil
|
|
47
|
+
end
|
|
48
|
+
if is_debug
|
|
49
|
+
elapsed = Time.now - git_remote_url_start
|
|
50
|
+
Makit::Logging.debug("GIT_REMOTE_URL lookup took #{sprintf('%.3f', elapsed)} seconds")
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Get VERSION and VERSION_FILE - using same logic as rake version
|
|
54
|
+
# This ensures consistency between rake info and rake version
|
|
55
|
+
# Optimized: Use Makit::Directories::PROJECT_ROOT directly, check specific files before glob
|
|
56
|
+
version_start = Time.now if is_debug
|
|
57
|
+
version_file = nil
|
|
58
|
+
version = nil
|
|
59
|
+
|
|
60
|
+
begin
|
|
61
|
+
# Use Makit::Directories::PROJECT_ROOT directly (already loaded, fast)
|
|
62
|
+
project_root = Makit::Directories::PROJECT_ROOT
|
|
63
|
+
|
|
64
|
+
if project_root && Dir.exist?(project_root)
|
|
65
|
+
# Check for manually defined VERSION_FILE constant first
|
|
66
|
+
if defined?(VERSION_FILE) && !VERSION_FILE.nil?
|
|
67
|
+
version_file = File.expand_path(VERSION_FILE, project_root)
|
|
68
|
+
version_file = nil unless File.exist?(version_file)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# If no VERSION_FILE constant, search for common version files
|
|
72
|
+
# Optimized: Check specific files first (fast File.exist?) before using glob (slower)
|
|
73
|
+
unless version_file
|
|
74
|
+
# Check specific files first (much faster than glob patterns)
|
|
75
|
+
specific_files = [
|
|
76
|
+
"Directory.Build.props",
|
|
77
|
+
"Cargo.toml",
|
|
78
|
+
"package.json",
|
|
79
|
+
"pyproject.toml",
|
|
80
|
+
"pom.xml"
|
|
81
|
+
]
|
|
82
|
+
|
|
83
|
+
specific_files.each do |filename|
|
|
84
|
+
file_path = File.join(project_root, filename)
|
|
85
|
+
if File.exist?(file_path)
|
|
86
|
+
version_file = file_path
|
|
87
|
+
break
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Only use glob for gemspec if no specific file found (glob can be slow on large dirs)
|
|
92
|
+
unless version_file
|
|
93
|
+
gemspec_matches = Dir.glob(File.join(project_root, "*.gemspec"))
|
|
94
|
+
version_file = gemspec_matches.first unless gemspec_matches.empty?
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Extract version from the file if found (same logic as Makit::Version.extract_version_from_ssot_file)
|
|
99
|
+
if version_file && File.exist?(version_file)
|
|
100
|
+
case File.basename(version_file)
|
|
101
|
+
when /\.gemspec$/
|
|
102
|
+
content = File.read(version_file)
|
|
103
|
+
match = content.match(/spec\.version\s*=\s*["']([^"']+)["']/)
|
|
104
|
+
version = match[1] if match
|
|
105
|
+
when "Directory.Build.props"
|
|
106
|
+
content = File.read(version_file)
|
|
107
|
+
match = content.match(%r{<Version>([^<]+)</Version>})
|
|
108
|
+
version = match[1] if match
|
|
109
|
+
when "Cargo.toml"
|
|
110
|
+
content = File.read(version_file)
|
|
111
|
+
match = content.match(/version\s*=\s*["']([^"']+)["']/)
|
|
112
|
+
version = match[1] if match
|
|
113
|
+
when "package.json"
|
|
114
|
+
require "json"
|
|
115
|
+
json = JSON.parse(File.read(version_file))
|
|
116
|
+
version = json["version"]
|
|
117
|
+
when "pyproject.toml"
|
|
118
|
+
content = File.read(version_file)
|
|
119
|
+
match = content.match(/\[project\]\s*version\s*=\s*["']([^"']+)["']/)
|
|
120
|
+
version = match[1] if match
|
|
121
|
+
unless version
|
|
122
|
+
match = content.match(/\[tool\.poetry\]\s*version\s*=\s*["']([^"']+)["']/)
|
|
123
|
+
version = match[1] if match
|
|
124
|
+
end
|
|
125
|
+
when "pom.xml"
|
|
126
|
+
content = File.read(version_file)
|
|
127
|
+
match = content.match(%r{<version>([^<]+)</version>})
|
|
128
|
+
version = match[1] if match
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# Convert to relative path for display (same as Makit::Version.info)
|
|
132
|
+
if version_file && project_root
|
|
133
|
+
# Normalize paths to use forward slashes for consistency (Windows-safe)
|
|
134
|
+
normalized_version_file = version_file.gsub(/\\/, "/")
|
|
135
|
+
normalized_project_root = project_root.gsub(/\\/, "/")
|
|
136
|
+
version_file = normalized_version_file.sub(normalized_project_root + "/", "")
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
rescue => e
|
|
141
|
+
# Silently handle errors - fall back to VERSION constant
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# Fallback to Rakefile VERSION constant or Makit::Version.version if no version file found
|
|
145
|
+
unless version
|
|
146
|
+
version = defined?(VERSION) ? VERSION : Makit::Version.version
|
|
147
|
+
end
|
|
148
|
+
if is_debug
|
|
149
|
+
elapsed = Time.now - version_start
|
|
150
|
+
Makit::Logging.debug("VERSION and VERSION_FILE lookup took #{sprintf('%.3f', elapsed)} seconds")
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
# Get BRANCH - from git if available (optimized, Windows-safe)
|
|
154
|
+
# Reuse git repo check from GIT_REMOTE_URL lookup to avoid duplicate check
|
|
155
|
+
branch_start = Time.now if is_debug
|
|
156
|
+
branch = if git_remote_url || Dir.exist?(".git") || File.exist?(".git")
|
|
157
|
+
# Fast check: directly execute git branch command instead of calling Makit::Git.branch
|
|
158
|
+
# which executes the expensive get_repository_state with multiple git commands
|
|
159
|
+
begin
|
|
160
|
+
branch_output, _stderr, status = Open3.capture3('git', 'branch', '--show-current')
|
|
161
|
+
current_branch = if status.success? && branch_output && !branch_output.strip.empty?
|
|
162
|
+
branch_output.strip
|
|
163
|
+
else
|
|
164
|
+
'(unknown)'
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# Check if current branch is the default branch (Windows-safe error handling)
|
|
168
|
+
if current_branch != '(unknown)'
|
|
169
|
+
begin
|
|
170
|
+
# Get default branch from remote (Windows-safe: use Open3 for proper error handling)
|
|
171
|
+
default_branch_output, _stderr, status = Open3.capture3('git', 'symbolic-ref', 'refs/remotes/origin/HEAD')
|
|
172
|
+
if status.success? && default_branch_output && !default_branch_output.strip.empty?
|
|
173
|
+
default_branch = default_branch_output.strip.sub('refs/remotes/origin/', '')
|
|
174
|
+
if current_branch == default_branch
|
|
175
|
+
current_branch = "#{current_branch} (default)"
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
rescue
|
|
179
|
+
# Silently fail if we can't determine default branch
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
current_branch
|
|
184
|
+
rescue
|
|
185
|
+
'(unknown)'
|
|
186
|
+
end
|
|
187
|
+
else
|
|
188
|
+
'(not a git repo)'
|
|
189
|
+
end
|
|
190
|
+
if is_debug
|
|
191
|
+
elapsed = Time.now - branch_start
|
|
192
|
+
Makit::Logging.debug("BRANCH lookup took #{sprintf('%.3f', elapsed)} seconds")
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# Display information with colors
|
|
196
|
+
display_start = Time.now if is_debug
|
|
197
|
+
name_color = :grey
|
|
198
|
+
value_color = :green
|
|
199
|
+
label_width = 20 # Fixed width for label column
|
|
200
|
+
|
|
201
|
+
git_remote_display = git_remote_url || '(not set)'
|
|
202
|
+
|
|
203
|
+
# Always show basic info
|
|
204
|
+
label1 = 'GIT_REMOTE_URL'.rjust(label_width).colorize(name_color)
|
|
205
|
+
value1 = git_remote_display.colorize(value_color)
|
|
206
|
+
puts " #{label1} #{value1}"
|
|
207
|
+
|
|
208
|
+
label2 = 'VERSION'.rjust(label_width).colorize(name_color)
|
|
209
|
+
value2 = version.to_s.colorize(value_color)
|
|
210
|
+
puts " #{label2} #{value2}"
|
|
211
|
+
|
|
212
|
+
if version_file
|
|
213
|
+
label_version_file = 'VERSION_FILE'.rjust(label_width).colorize(name_color)
|
|
214
|
+
value_version_file = version_file.colorize(value_color)
|
|
215
|
+
puts " #{label_version_file} #{value_version_file}"
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
label3 = 'BRANCH'.rjust(label_width).colorize(name_color)
|
|
219
|
+
value3 = branch.colorize(value_color)
|
|
220
|
+
puts " #{label3} #{value3}"
|
|
221
|
+
|
|
222
|
+
# Show LOG_LEVEL and VERBOSITY for normal and above
|
|
223
|
+
if [:normal, :verbose, :debug].include?(verbosity)
|
|
224
|
+
log_level = Makit::Logging.current_log_level.to_s
|
|
225
|
+
verbosity_str = verbosity.to_s
|
|
226
|
+
|
|
227
|
+
label4 = 'LOG_LEVEL'.rjust(label_width).colorize(name_color)
|
|
228
|
+
value4 = log_level.colorize(value_color)
|
|
229
|
+
puts " #{label4} #{value4}"
|
|
230
|
+
|
|
231
|
+
label5 = 'VERBOSITY'.rjust(label_width).colorize(name_color)
|
|
232
|
+
value5 = verbosity_str.colorize(value_color)
|
|
233
|
+
puts " #{label5} #{value5}"
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
# Show additional sections for verbose and debug
|
|
237
|
+
if [:verbose, :debug].include?(verbosity)
|
|
238
|
+
# Project section
|
|
239
|
+
begin
|
|
240
|
+
project = Makit::Configuration::Project.default
|
|
241
|
+
project_root = Makit::Directories::PROJECT_ROOT
|
|
242
|
+
project_root_display = if project_root && Dir.exist?(project_root)
|
|
243
|
+
# Show relative path if possible
|
|
244
|
+
begin
|
|
245
|
+
Pathname.new(project_root).relative_path_from(Pathname.new(Dir.pwd)).to_s
|
|
246
|
+
rescue
|
|
247
|
+
project_root
|
|
248
|
+
end
|
|
249
|
+
else
|
|
250
|
+
'(not found)'
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
puts ""
|
|
254
|
+
puts "Project:".colorize(:cyan)
|
|
255
|
+
display_field('NAME', project.name || '(not set)', label_width, name_color, value_color)
|
|
256
|
+
display_field('TYPE', project.project_type || '(not set)', label_width, name_color, value_color)
|
|
257
|
+
display_field('ROOT', project_root_display, label_width, name_color, value_color)
|
|
258
|
+
display_field('AUTHORS', project.authors || '(not set)', label_width, name_color, value_color)
|
|
259
|
+
display_field('LICENSE', project.license_expression || '(not set)', label_width, name_color, value_color)
|
|
260
|
+
rescue => e
|
|
261
|
+
# Silently handle errors loading project info
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
# Git section (optimized: reuse branch from main section, avoid expensive git operations)
|
|
265
|
+
if branch && branch != '(not a git repo)'
|
|
266
|
+
begin
|
|
267
|
+
# Reuse branch from main section (already optimized)
|
|
268
|
+
verbose_branch = branch
|
|
269
|
+
|
|
270
|
+
# Get git status and commit info (optimized: direct git commands instead of get_repository_state)
|
|
271
|
+
begin
|
|
272
|
+
# Check if clean using direct git command (faster than Makit::Git.clean?)
|
|
273
|
+
status_output, _stderr, status = Open3.capture3('git', 'status', '--porcelain')
|
|
274
|
+
status = status.success? && status_output.strip.empty? ? 'clean' : 'dirty'
|
|
275
|
+
rescue
|
|
276
|
+
status = 'unknown'
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
begin
|
|
280
|
+
# Get commit SHA using direct git command (faster than Makit::Git.commitsha)
|
|
281
|
+
commit_output, _stderr, commit_status = Open3.capture3('git', 'rev-parse', 'HEAD')
|
|
282
|
+
commit = commit_status.success? && commit_output ? commit_output.strip : nil
|
|
283
|
+
commit_display = commit ? commit[0, 7] : '(unknown)'
|
|
284
|
+
rescue
|
|
285
|
+
commit_display = '(unknown)'
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
puts ""
|
|
289
|
+
puts "Git:".colorize(:cyan)
|
|
290
|
+
display_field('BRANCH', verbose_branch, label_width, name_color, value_color)
|
|
291
|
+
display_field('STATUS', status, label_width, name_color, value_color)
|
|
292
|
+
display_field('COMMIT', commit_display, label_width, name_color, value_color)
|
|
293
|
+
rescue => e
|
|
294
|
+
# Silently handle errors loading git info
|
|
295
|
+
end
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
# Environment section
|
|
299
|
+
begin
|
|
300
|
+
ruby_version = RUBY_VERSION
|
|
301
|
+
os = Makit::Environment.get_os || '(unknown)'
|
|
302
|
+
makit_version = Makit::Version.version rescue '0.0.0'
|
|
303
|
+
|
|
304
|
+
puts ""
|
|
305
|
+
puts "Environment:".colorize(:cyan)
|
|
306
|
+
display_field('RUBY_VERSION', ruby_version, label_width, name_color, value_color)
|
|
307
|
+
display_field('OS', os, label_width, name_color, value_color)
|
|
308
|
+
display_field('MAKIT_VERSION', makit_version, label_width, name_color, value_color)
|
|
309
|
+
rescue => e
|
|
310
|
+
# Silently handle errors loading environment info
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
# Show debug-only sections
|
|
315
|
+
if verbosity == :debug
|
|
316
|
+
# Secrets section
|
|
317
|
+
begin
|
|
318
|
+
secrets_manager = Makit::Secrets.new
|
|
319
|
+
backend_type = secrets_manager.instance_variable_get(:@secrets_backend).class.name.split("::").last
|
|
320
|
+
secrets_file = secrets_manager.get_secrets_filename rescue nil
|
|
321
|
+
secrets_hash = secrets_manager.get_secrets_hash rescue {}
|
|
322
|
+
secret_count = secrets_hash.keys.count rescue 0
|
|
323
|
+
|
|
324
|
+
puts ""
|
|
325
|
+
puts "Secrets:".colorize(:cyan)
|
|
326
|
+
display_field('BACKEND', backend_type, label_width, name_color, value_color)
|
|
327
|
+
if secrets_file
|
|
328
|
+
display_field('SECRETS_FILE', secrets_file, label_width, name_color, value_color)
|
|
329
|
+
end
|
|
330
|
+
display_field('SECRET_COUNT', secret_count.to_s, label_width, name_color, value_color)
|
|
331
|
+
rescue => e
|
|
332
|
+
# Silently handle errors loading secrets info
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
# Paths section
|
|
336
|
+
begin
|
|
337
|
+
log_dir = Makit::Directories::LOG
|
|
338
|
+
artifacts_dir = Makit::Directories::PROJECT_ARTIFACTS || '(not set)'
|
|
339
|
+
project_root = Makit::Directories::PROJECT_ROOT || '(not found)'
|
|
340
|
+
|
|
341
|
+
puts ""
|
|
342
|
+
puts "Paths:".colorize(:cyan)
|
|
343
|
+
display_field('LOG_DIR', log_dir, label_width, name_color, value_color)
|
|
344
|
+
display_field('ARTIFACTS', artifacts_dir, label_width, name_color, value_color)
|
|
345
|
+
display_field('PROJECT_ROOT', project_root, label_width, name_color, value_color)
|
|
346
|
+
rescue => e
|
|
347
|
+
# Silently handle errors loading paths info
|
|
348
|
+
end
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
if is_debug
|
|
352
|
+
display_elapsed = Time.now - display_start
|
|
353
|
+
Makit::Logging.debug("Display operations took #{sprintf('%.3f', display_elapsed)} seconds")
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
# Log total execution time in debug mode
|
|
357
|
+
if is_debug
|
|
358
|
+
elapsed_time = Time.now - start_time
|
|
359
|
+
Makit::Logging.debug("rake info task completed in #{sprintf('%.3f', elapsed_time)} seconds")
|
|
360
|
+
end
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
# Helper method to display a field with consistent formatting
|
|
364
|
+
def display_field(label, value, label_width, name_color, value_color)
|
|
365
|
+
label_str = label.rjust(label_width).colorize(name_color)
|
|
366
|
+
value_str = value.to_s.colorize(value_color)
|
|
367
|
+
puts " #{label_str} #{value_str}"
|
|
368
|
+
end
|