makit 0.0.147 → 0.0.153
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/lib/generated/makit/v1/configuration/project_pb.rb +22 -0
- data/lib/generated/makit/v1/configuration/project_service_pb.rb +34 -0
- data/lib/generated/makit/v1/configuration/project_service_services_pb.rb +51 -0
- data/lib/generated/makit/v1/git/git_repository_model_pb.rb +22 -0
- data/lib/generated/makit/v1/git/git_repository_service_pb.rb +29 -0
- data/lib/generated/makit/v1/git/git_repository_service_services_pb.rb +39 -0
- data/lib/generated/makit/v1/gitlab/pipeline_pb.rb +26 -0
- data/lib/generated/makit/v1/gitlab/pipeline_result_pb.rb +29 -0
- data/lib/generated/makit/v1/gitlab/pipeline_service_pb.rb +36 -0
- data/lib/generated/makit/v1/gitlab/pipeline_service_services_pb.rb +41 -0
- data/lib/generated/makit/v1/grpc/service_specification_pb.rb +27 -0
- data/lib/generated/makit/v1/grpc/test_specification_pb.rb +29 -0
- data/lib/generated/makit/v1/io/filesystem_pb.rb +27 -0
- data/lib/generated/makit/v1/io/filesystem_services_pb.rb +47 -0
- data/lib/generated/makit/v1/makit.v1_pb.rb +35 -0
- data/lib/generated/makit/v1/makit.v1_services_pb.rb +26 -0
- data/lib/generated/makit/v1/podman/podman_service_pb.rb +64 -0
- data/lib/generated/makit/v1/podman/podman_service_services_pb.rb +52 -0
- data/lib/generated/makit/v1/services/repository_manager_model_pb.rb +23 -0
- data/lib/generated/makit/v1/services/repository_manager_service_pb.rb +32 -0
- data/lib/generated/makit/v1/services/repository_manager_service_services_pb.rb +35 -0
- data/lib/generated/makit/v1/spec/message_proto_generator_pb.rb +33 -0
- data/lib/generated/makit/v1/spec/message_proto_generator_services_pb.rb +38 -0
- data/lib/generated/makit/v1/spec/message_spec_pb.rb +31 -0
- data/lib/generated/makit/v1/spec/message_spec_suite_pb.rb +30 -0
- data/lib/generated/makit/v1/spec/message_spec_test_pb.rb +34 -0
- data/lib/generated/makit/v1/spec/proto_service_pb.rb +53 -0
- data/lib/generated/makit/v1/spec/proto_service_services_pb.rb +42 -0
- data/lib/generated/makit/v1/spec/spec_manifest_pb.rb +44 -0
- data/lib/generated/makit/v1/web/link_pb.rb +20 -0
- data/lib/makit/azure/blob_storage.rb +257 -0
- data/lib/makit/azure/cli.rb +285 -0
- data/lib/makit/configuration/project.rb +137 -291
- data/lib/makit/git/repository.rb +24 -190
- data/lib/makit/gitlab/pipeline.rb +16 -16
- data/lib/makit/gitlab/pipeline_service_impl.rb +43 -43
- data/lib/makit/io/filesystem_service_impl.rb +6 -6
- data/lib/makit/lint.rb +212 -0
- data/lib/makit/logging/configuration.rb +2 -1
- data/lib/makit/logging.rb +15 -2
- data/lib/makit/podman/podman.rb +20 -20
- data/lib/makit/podman/podman_service_impl.rb +41 -41
- data/lib/makit/secrets/azure_key_vault.rb +323 -0
- data/lib/makit/secrets/azure_secrets.rb +183 -0
- data/lib/makit/secrets/local_secrets.rb +72 -0
- data/lib/makit/secrets/secrets_manager.rb +105 -0
- data/lib/makit/secrets.rb +10 -45
- data/lib/makit/tasks/bump.rb +7 -0
- data/lib/makit/tasks/info.rb +204 -0
- data/lib/makit/tasks/integrate.rb +28 -1
- data/lib/makit/tasks/secrets.rb +7 -0
- data/lib/makit/tasks/version.rb +6 -0
- data/lib/makit/tasks.rb +4 -0
- data/lib/makit/v1/configuration/project_service_impl.rb +1 -1
- data/lib/makit/version.rb +382 -1
- data/lib/makit.rb +21 -18
- metadata +46 -5
data/lib/makit/secrets.rb
CHANGED
|
@@ -1,51 +1,16 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
def add(key, value)
|
|
6
|
-
secrets_hash = get_secrets_hash
|
|
7
|
-
secrets_hash[key] = value
|
|
8
|
-
save_secrets_hash(secrets_hash)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def remove(key)
|
|
12
|
-
secrets_hash = get_secrets_hash
|
|
13
|
-
secrets_hash.delete(key)
|
|
14
|
-
save_secrets_hash(secrets_hash)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def has_key?(key)
|
|
18
|
-
secrets_hash = get_secrets_hash
|
|
19
|
-
secrets_hash.key?(key)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def get(key)
|
|
23
|
-
secrets_hash = get_secrets_hash
|
|
24
|
-
secrets_hash[key]
|
|
25
|
-
end
|
|
3
|
+
require_relative "secrets/local_secrets"
|
|
4
|
+
require_relative "secrets/secrets_manager"
|
|
26
5
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
def
|
|
34
|
-
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def get_secrets_hash
|
|
38
|
-
secrets_file = get_secrets_filename
|
|
39
|
-
return {} unless File.exist?(secrets_file)
|
|
40
|
-
|
|
41
|
-
text = File.read(secrets_file)
|
|
42
|
-
JSON.parse(text)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def save_secrets_hash(hash)
|
|
46
|
-
secrets_file = get_secrets_filename
|
|
47
|
-
# pretty print the hash
|
|
48
|
-
File.open(secrets_file, "w") { |f| f.puts JSON.pretty_generate(hash) }
|
|
6
|
+
module Makit
|
|
7
|
+
module Secrets
|
|
8
|
+
# Module for secrets management
|
|
9
|
+
# Contains LocalSecrets and SecretsManager classes
|
|
10
|
+
|
|
11
|
+
# Backward compatibility: Factory method to create a SecretsManager instance
|
|
12
|
+
def self.new
|
|
13
|
+
SecretsManager.new
|
|
49
14
|
end
|
|
50
15
|
end
|
|
51
16
|
end
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pathname"
|
|
4
|
+
|
|
5
|
+
desc "Display information about the current project"
|
|
6
|
+
task :info do
|
|
7
|
+
# Get verbosity level
|
|
8
|
+
verbosity = Makit::Logging.current_verbosity
|
|
9
|
+
|
|
10
|
+
# Get GIT_REMOTE_URL - try multiple sources
|
|
11
|
+
git_remote_url = if defined?(GIT_REMOTE_URL)
|
|
12
|
+
GIT_REMOTE_URL
|
|
13
|
+
elsif Makit::Git.git_repo?
|
|
14
|
+
Makit::Git.get_remote_url
|
|
15
|
+
else
|
|
16
|
+
project = Makit::Configuration::Project.default
|
|
17
|
+
project.git_remote_url unless project.git_remote_url.nil? || project.git_remote_url.empty?
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Get VERSION - from Rakefile constant
|
|
21
|
+
version = defined?(VERSION) ? VERSION : Makit::Version.version
|
|
22
|
+
|
|
23
|
+
# Get BRANCH - from git if available
|
|
24
|
+
branch = if Makit::Git.git_repo?
|
|
25
|
+
current_branch = Makit::Git.branch || '(unknown)'
|
|
26
|
+
|
|
27
|
+
# Check if current branch is the default branch
|
|
28
|
+
if current_branch != '(unknown)'
|
|
29
|
+
begin
|
|
30
|
+
# Get default branch from remote
|
|
31
|
+
default_branch_output = `git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null`.strip
|
|
32
|
+
if default_branch_output && !default_branch_output.empty?
|
|
33
|
+
default_branch = default_branch_output.sub('refs/remotes/origin/', '')
|
|
34
|
+
if current_branch == default_branch
|
|
35
|
+
current_branch = "#{current_branch} (default)"
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
rescue
|
|
39
|
+
# Silently fail if we can't determine default branch
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
current_branch
|
|
44
|
+
else
|
|
45
|
+
'(not a git repo)'
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Display information with colors
|
|
49
|
+
name_color = :grey
|
|
50
|
+
value_color = :green
|
|
51
|
+
label_width = 20 # Fixed width for label column
|
|
52
|
+
|
|
53
|
+
git_remote_display = git_remote_url || '(not set)'
|
|
54
|
+
|
|
55
|
+
# Always show basic info
|
|
56
|
+
label1 = 'GIT_REMOTE_URL'.rjust(label_width).colorize(name_color)
|
|
57
|
+
value1 = git_remote_display.colorize(value_color)
|
|
58
|
+
puts " #{label1} #{value1}"
|
|
59
|
+
|
|
60
|
+
label2 = 'VERSION'.rjust(label_width).colorize(name_color)
|
|
61
|
+
value2 = version.to_s.colorize(value_color)
|
|
62
|
+
puts " #{label2} #{value2}"
|
|
63
|
+
|
|
64
|
+
label3 = 'BRANCH'.rjust(label_width).colorize(name_color)
|
|
65
|
+
value3 = branch.colorize(value_color)
|
|
66
|
+
puts " #{label3} #{value3}"
|
|
67
|
+
|
|
68
|
+
# Show LOG_LEVEL and VERBOSITY for normal and above
|
|
69
|
+
if [:normal, :verbose, :debug].include?(verbosity)
|
|
70
|
+
log_level = Makit::Logging.current_log_level.to_s
|
|
71
|
+
verbosity_str = verbosity.to_s
|
|
72
|
+
|
|
73
|
+
label4 = 'LOG_LEVEL'.rjust(label_width).colorize(name_color)
|
|
74
|
+
value4 = log_level.colorize(value_color)
|
|
75
|
+
puts " #{label4} #{value4}"
|
|
76
|
+
|
|
77
|
+
label5 = 'VERBOSITY'.rjust(label_width).colorize(name_color)
|
|
78
|
+
value5 = verbosity_str.colorize(value_color)
|
|
79
|
+
puts " #{label5} #{value5}"
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Show additional sections for verbose and debug
|
|
83
|
+
if [:verbose, :debug].include?(verbosity)
|
|
84
|
+
# Project section
|
|
85
|
+
begin
|
|
86
|
+
project = Makit::Configuration::Project.default
|
|
87
|
+
project_root = Makit::Directories::PROJECT_ROOT
|
|
88
|
+
project_root_display = if project_root && Dir.exist?(project_root)
|
|
89
|
+
# Show relative path if possible
|
|
90
|
+
begin
|
|
91
|
+
Pathname.new(project_root).relative_path_from(Pathname.new(Dir.pwd)).to_s
|
|
92
|
+
rescue
|
|
93
|
+
project_root
|
|
94
|
+
end
|
|
95
|
+
else
|
|
96
|
+
'(not found)'
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
puts ""
|
|
100
|
+
puts "Project:".colorize(:cyan)
|
|
101
|
+
display_field('NAME', project.name || '(not set)', label_width, name_color, value_color)
|
|
102
|
+
display_field('TYPE', project.project_type || '(not set)', label_width, name_color, value_color)
|
|
103
|
+
display_field('ROOT', project_root_display, label_width, name_color, value_color)
|
|
104
|
+
display_field('AUTHORS', project.authors || '(not set)', label_width, name_color, value_color)
|
|
105
|
+
display_field('LICENSE', project.license_expression || '(not set)', label_width, name_color, value_color)
|
|
106
|
+
rescue => e
|
|
107
|
+
# Silently handle errors loading project info
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Git section
|
|
111
|
+
if Makit::Git.git_repo?
|
|
112
|
+
begin
|
|
113
|
+
verbose_branch = Makit::Git.branch || '(unknown)'
|
|
114
|
+
|
|
115
|
+
# Check if current branch is the default branch
|
|
116
|
+
if verbose_branch != '(unknown)'
|
|
117
|
+
begin
|
|
118
|
+
# Get default branch from remote
|
|
119
|
+
default_branch_output = `git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null`.strip
|
|
120
|
+
if default_branch_output && !default_branch_output.empty?
|
|
121
|
+
default_branch = default_branch_output.sub('refs/remotes/origin/', '')
|
|
122
|
+
if verbose_branch == default_branch
|
|
123
|
+
verbose_branch = "#{verbose_branch} (default)"
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
rescue
|
|
127
|
+
# Silently fail if we can't determine default branch
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
status = Makit::Git.clean? ? 'clean' : 'dirty'
|
|
132
|
+
commit = Makit::Git.commitsha
|
|
133
|
+
commit_display = commit ? commit[0, 7] : '(unknown)'
|
|
134
|
+
|
|
135
|
+
puts ""
|
|
136
|
+
puts "Git:".colorize(:cyan)
|
|
137
|
+
display_field('BRANCH', verbose_branch, label_width, name_color, value_color)
|
|
138
|
+
display_field('STATUS', status, label_width, name_color, value_color)
|
|
139
|
+
display_field('COMMIT', commit_display, label_width, name_color, value_color)
|
|
140
|
+
rescue => e
|
|
141
|
+
# Silently handle errors loading git info
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# Environment section
|
|
146
|
+
begin
|
|
147
|
+
ruby_version = RUBY_VERSION
|
|
148
|
+
os = Makit::Environment.get_os || '(unknown)'
|
|
149
|
+
makit_version = Makit::Version.version rescue '0.0.0'
|
|
150
|
+
|
|
151
|
+
puts ""
|
|
152
|
+
puts "Environment:".colorize(:cyan)
|
|
153
|
+
display_field('RUBY_VERSION', ruby_version, label_width, name_color, value_color)
|
|
154
|
+
display_field('OS', os, label_width, name_color, value_color)
|
|
155
|
+
display_field('MAKIT_VERSION', makit_version, label_width, name_color, value_color)
|
|
156
|
+
rescue => e
|
|
157
|
+
# Silently handle errors loading environment info
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
# Show debug-only sections
|
|
162
|
+
if verbosity == :debug
|
|
163
|
+
# Secrets section
|
|
164
|
+
begin
|
|
165
|
+
secrets_manager = Makit::Secrets.new
|
|
166
|
+
backend_type = secrets_manager.instance_variable_get(:@secrets_backend).class.name.split("::").last
|
|
167
|
+
secrets_file = secrets_manager.get_secrets_filename rescue nil
|
|
168
|
+
secrets_hash = secrets_manager.get_secrets_hash rescue {}
|
|
169
|
+
secret_count = secrets_hash.keys.count rescue 0
|
|
170
|
+
|
|
171
|
+
puts ""
|
|
172
|
+
puts "Secrets:".colorize(:cyan)
|
|
173
|
+
display_field('BACKEND', backend_type, label_width, name_color, value_color)
|
|
174
|
+
if secrets_file
|
|
175
|
+
display_field('SECRETS_FILE', secrets_file, label_width, name_color, value_color)
|
|
176
|
+
end
|
|
177
|
+
display_field('SECRET_COUNT', secret_count.to_s, label_width, name_color, value_color)
|
|
178
|
+
rescue => e
|
|
179
|
+
# Silently handle errors loading secrets info
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
# Paths section
|
|
183
|
+
begin
|
|
184
|
+
log_dir = Makit::Directories::LOG
|
|
185
|
+
artifacts_dir = Makit::Directories::PROJECT_ARTIFACTS || '(not set)'
|
|
186
|
+
project_root = Makit::Directories::PROJECT_ROOT || '(not found)'
|
|
187
|
+
|
|
188
|
+
puts ""
|
|
189
|
+
puts "Paths:".colorize(:cyan)
|
|
190
|
+
display_field('LOG_DIR', log_dir, label_width, name_color, value_color)
|
|
191
|
+
display_field('ARTIFACTS', artifacts_dir, label_width, name_color, value_color)
|
|
192
|
+
display_field('PROJECT_ROOT', project_root, label_width, name_color, value_color)
|
|
193
|
+
rescue => e
|
|
194
|
+
# Silently handle errors loading paths info
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# Helper method to display a field with consistent formatting
|
|
200
|
+
def display_field(label, value, label_width, name_color, value_color)
|
|
201
|
+
label_str = label.rjust(label_width).colorize(name_color)
|
|
202
|
+
value_str = value.to_s.colorize(value_color)
|
|
203
|
+
puts " #{label_str} #{value_str}"
|
|
204
|
+
end
|
|
@@ -3,9 +3,36 @@
|
|
|
3
3
|
require_relative "../git/repository"
|
|
4
4
|
|
|
5
5
|
if Dir.exist?(".git")
|
|
6
|
-
desc "Integrate changes into the git repository."
|
|
6
|
+
desc "Integrate changes into the git repository (only runs on default branch)."
|
|
7
7
|
task :integrate do
|
|
8
8
|
Makit::Logging.default_logger.task_start("integrate")
|
|
9
|
+
|
|
10
|
+
# Check if we're on the default branch
|
|
11
|
+
current_branch = Makit::Git.branch
|
|
12
|
+
if current_branch.nil? || current_branch.empty?
|
|
13
|
+
Makit::Logging.default_logger.info("Skipping integrate: cannot determine current branch")
|
|
14
|
+
next
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Get default branch from remote
|
|
18
|
+
default_branch = nil
|
|
19
|
+
begin
|
|
20
|
+
default_branch_output = `git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null`.strip
|
|
21
|
+
if default_branch_output && !default_branch_output.empty?
|
|
22
|
+
default_branch = default_branch_output.sub('refs/remotes/origin/', '')
|
|
23
|
+
end
|
|
24
|
+
rescue
|
|
25
|
+
# If we can't determine default branch, assume it's 'main'
|
|
26
|
+
default_branch = 'main'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Skip if not on default branch
|
|
30
|
+
if current_branch != default_branch
|
|
31
|
+
Makit::Logging.default_logger.info("Skipping integrate: not on default branch (current: #{current_branch}, default: #{default_branch || 'unknown'})")
|
|
32
|
+
next
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Proceed with integration
|
|
9
36
|
unstaged_files = Makit::Git::Repository.unstaged_files
|
|
10
37
|
untracked_files = Makit::Git::Repository.untracked_files
|
|
11
38
|
if unstaged_files.length.positive? || untracked_files.length.positive?
|
data/lib/makit/tasks.rb
CHANGED
|
@@ -18,3 +18,7 @@ require_relative "tasks/setup"
|
|
|
18
18
|
require_relative "tasks/test"
|
|
19
19
|
require_relative "tasks/format"
|
|
20
20
|
require_relative "tasks/update"
|
|
21
|
+
require_relative "tasks/version"
|
|
22
|
+
require_relative "tasks/bump"
|
|
23
|
+
require_relative "tasks/secrets"
|
|
24
|
+
require_relative "tasks/info"
|