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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generated/makit/v1/configuration/project_pb.rb +22 -0
  3. data/lib/generated/makit/v1/configuration/project_service_pb.rb +34 -0
  4. data/lib/generated/makit/v1/configuration/project_service_services_pb.rb +51 -0
  5. data/lib/generated/makit/v1/git/git_repository_model_pb.rb +22 -0
  6. data/lib/generated/makit/v1/git/git_repository_service_pb.rb +29 -0
  7. data/lib/generated/makit/v1/git/git_repository_service_services_pb.rb +39 -0
  8. data/lib/generated/makit/v1/gitlab/pipeline_pb.rb +26 -0
  9. data/lib/generated/makit/v1/gitlab/pipeline_result_pb.rb +29 -0
  10. data/lib/generated/makit/v1/gitlab/pipeline_service_pb.rb +36 -0
  11. data/lib/generated/makit/v1/gitlab/pipeline_service_services_pb.rb +41 -0
  12. data/lib/generated/makit/v1/grpc/service_specification_pb.rb +27 -0
  13. data/lib/generated/makit/v1/grpc/test_specification_pb.rb +29 -0
  14. data/lib/generated/makit/v1/io/filesystem_pb.rb +27 -0
  15. data/lib/generated/makit/v1/io/filesystem_services_pb.rb +47 -0
  16. data/lib/generated/makit/v1/makit.v1_pb.rb +35 -0
  17. data/lib/generated/makit/v1/makit.v1_services_pb.rb +26 -0
  18. data/lib/generated/makit/v1/podman/podman_service_pb.rb +64 -0
  19. data/lib/generated/makit/v1/podman/podman_service_services_pb.rb +52 -0
  20. data/lib/generated/makit/v1/services/repository_manager_model_pb.rb +23 -0
  21. data/lib/generated/makit/v1/services/repository_manager_service_pb.rb +32 -0
  22. data/lib/generated/makit/v1/services/repository_manager_service_services_pb.rb +35 -0
  23. data/lib/generated/makit/v1/spec/message_proto_generator_pb.rb +33 -0
  24. data/lib/generated/makit/v1/spec/message_proto_generator_services_pb.rb +38 -0
  25. data/lib/generated/makit/v1/spec/message_spec_pb.rb +31 -0
  26. data/lib/generated/makit/v1/spec/message_spec_suite_pb.rb +30 -0
  27. data/lib/generated/makit/v1/spec/message_spec_test_pb.rb +34 -0
  28. data/lib/generated/makit/v1/spec/proto_service_pb.rb +53 -0
  29. data/lib/generated/makit/v1/spec/proto_service_services_pb.rb +42 -0
  30. data/lib/generated/makit/v1/spec/spec_manifest_pb.rb +44 -0
  31. data/lib/generated/makit/v1/web/link_pb.rb +20 -0
  32. data/lib/makit/azure/blob_storage.rb +257 -0
  33. data/lib/makit/azure/cli.rb +285 -0
  34. data/lib/makit/configuration/project.rb +137 -291
  35. data/lib/makit/git/repository.rb +24 -190
  36. data/lib/makit/gitlab/pipeline.rb +16 -16
  37. data/lib/makit/gitlab/pipeline_service_impl.rb +43 -43
  38. data/lib/makit/io/filesystem_service_impl.rb +6 -6
  39. data/lib/makit/lint.rb +212 -0
  40. data/lib/makit/logging/configuration.rb +2 -1
  41. data/lib/makit/logging.rb +15 -2
  42. data/lib/makit/podman/podman.rb +20 -20
  43. data/lib/makit/podman/podman_service_impl.rb +41 -41
  44. data/lib/makit/secrets/azure_key_vault.rb +323 -0
  45. data/lib/makit/secrets/azure_secrets.rb +183 -0
  46. data/lib/makit/secrets/local_secrets.rb +72 -0
  47. data/lib/makit/secrets/secrets_manager.rb +105 -0
  48. data/lib/makit/secrets.rb +10 -45
  49. data/lib/makit/tasks/bump.rb +7 -0
  50. data/lib/makit/tasks/info.rb +204 -0
  51. data/lib/makit/tasks/integrate.rb +28 -1
  52. data/lib/makit/tasks/secrets.rb +7 -0
  53. data/lib/makit/tasks/version.rb +6 -0
  54. data/lib/makit/tasks.rb +4 -0
  55. data/lib/makit/v1/configuration/project_service_impl.rb +1 -1
  56. data/lib/makit/version.rb +382 -1
  57. data/lib/makit.rb +21 -18
  58. metadata +46 -5
data/lib/makit/secrets.rb CHANGED
@@ -1,51 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Makit
4
- class Secrets
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
- def set(key, value)
28
- secrets_hash = get_secrets_hash
29
- secrets_hash[key] = value
30
- save_secrets_hash(secrets_hash)
31
- end
32
-
33
- def get_secrets_filename
34
- "#{Makit::Directories::ROOT}/secrets.json"
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,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ desc "Bump the patch version and display updated version information"
4
+ task :bump do
5
+ Makit::Version.bump
6
+ Makit::Version.info
7
+ 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?
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ desc "Display a list of available secret names"
4
+ task :secrets do
5
+ Makit::Secrets.new.info
6
+ end
7
+
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ desc "Display version information for the current project"
4
+ task :version do
5
+ Makit::Version.info
6
+ end
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"
@@ -77,7 +77,7 @@ module Makit
77
77
  license_expression: "MIT",
78
78
  steps: []
79
79
  )
80
- Makit::Logging.default_logger.warn("Project not configured")
80
+ #Makit::Logging.default_logger.warn("Project not configured")
81
81
  project
82
82
  end
83
83
  rescue StandardError => e