makit 0.0.163 → 0.0.165
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 +224 -224
- 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 +110 -110
- 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 +49 -49
- data/lib/makit/git/cli.rb +103 -103
- 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 +454 -429
- 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 -137
- data/lib/makit/secrets/azure_key_vault.rb +322 -322
- data/lib/makit/secrets/azure_secrets.rb +221 -183
- data/lib/makit/secrets/local_secrets.rb +72 -72
- data/lib/makit/secrets/secrets_manager.rb +105 -105
- data/lib/makit/secrets.rb +96 -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 -60
- 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 -14
- 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 +21 -21
- 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 -661
- 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 +119 -119
- metadata +2 -2
data/lib/makit/rubygems.rb
CHANGED
|
@@ -1,137 +1,137 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "fileutils"
|
|
4
|
-
require "yaml"
|
|
5
|
-
require "colorize"
|
|
6
|
-
require_relative "secrets"
|
|
7
|
-
|
|
8
|
-
module Makit
|
|
9
|
-
# RubyGems operations helper module
|
|
10
|
-
# Provides centralized RubyGems functionality, starting with credential management
|
|
11
|
-
module RubyGems
|
|
12
|
-
# Retrieves RubyGems API key from secrets management system or credentials file
|
|
13
|
-
# Priority: 1) Secrets (RUBYGEMS_API_KEY or rubygems_api_key), 2) ~/.gem/credentials file
|
|
14
|
-
# @return [String, nil] API key if found, nil otherwise
|
|
15
|
-
def self.get_api_key
|
|
16
|
-
# Priority 1: Check secrets management system
|
|
17
|
-
begin
|
|
18
|
-
secrets = Makit::Secrets.new
|
|
19
|
-
api_key = secrets.get("RUBYGEMS_API_KEY") || secrets.get("rubygems_api_key")
|
|
20
|
-
return api_key if api_key && !api_key.empty?
|
|
21
|
-
rescue StandardError => e
|
|
22
|
-
# Secrets backend may be unavailable (network error, auth failure, etc.)
|
|
23
|
-
# Fall back to credentials file with warning
|
|
24
|
-
credentials_file = File.expand_path("~/.gem/credentials")
|
|
25
|
-
if File.exist?(credentials_file)
|
|
26
|
-
warn " Warning: Secrets backend unavailable (#{e.class.name}), falling back to ~/.gem/credentials".colorize(:yellow)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# Priority 2: Check ~/.gem/credentials file
|
|
31
|
-
credentials_file = File.expand_path("~/.gem/credentials")
|
|
32
|
-
if File.exist?(credentials_file)
|
|
33
|
-
begin
|
|
34
|
-
credentials = YAML.load_file(credentials_file)
|
|
35
|
-
api_key = credentials[:rubygems_api_key] if credentials && credentials[:rubygems_api_key]
|
|
36
|
-
return api_key if api_key && !api_key.empty?
|
|
37
|
-
rescue StandardError => e
|
|
38
|
-
# Credentials file may be malformed
|
|
39
|
-
# Will be handled by error messages
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
nil
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Validates API key format (basic validation)
|
|
47
|
-
# Checks: non-empty, length >= 20, valid characters (alphanumeric, hyphens, underscores)
|
|
48
|
-
# @param api_key [String, nil] The API key to validate
|
|
49
|
-
# @return [Boolean] true if valid, false otherwise
|
|
50
|
-
def self.validate_api_key_format(api_key)
|
|
51
|
-
return false if api_key.nil? || api_key.strip.empty?
|
|
52
|
-
return false if api_key.length < 20
|
|
53
|
-
return false unless api_key.match?(/\A[a-zA-Z0-9_-]+\z/)
|
|
54
|
-
true
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
# Syncs API key from secrets to ~/.gem/credentials file
|
|
58
|
-
# Only updates if file doesn't exist or API key is different
|
|
59
|
-
# Sets file permissions to 600 (owner read/write only) for security
|
|
60
|
-
# @param api_key [String] The API key to sync
|
|
61
|
-
# @return [void]
|
|
62
|
-
def self.sync_credentials_from_secrets(api_key)
|
|
63
|
-
return if api_key.nil? || api_key.empty?
|
|
64
|
-
|
|
65
|
-
credentials_file = File.expand_path("~/.gem/credentials")
|
|
66
|
-
|
|
67
|
-
# Check if file exists and has same API key
|
|
68
|
-
if File.exist?(credentials_file)
|
|
69
|
-
begin
|
|
70
|
-
require "yaml"
|
|
71
|
-
existing_credentials = YAML.load_file(credentials_file)
|
|
72
|
-
existing_key = existing_credentials[:rubygems_api_key] if existing_credentials
|
|
73
|
-
return if existing_key == api_key # No update needed
|
|
74
|
-
rescue StandardError
|
|
75
|
-
# File may be malformed, proceed with update
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# Create or update credentials file
|
|
80
|
-
credentials_dir = File.dirname(credentials_file)
|
|
81
|
-
FileUtils.mkdir_p(credentials_dir) unless Dir.exist?(credentials_dir)
|
|
82
|
-
|
|
83
|
-
credentials_content = { rubygems_api_key: api_key }.to_yaml
|
|
84
|
-
File.write(credentials_file, credentials_content)
|
|
85
|
-
File.chmod(0o600, credentials_file) # rw------- (owner read/write only)
|
|
86
|
-
|
|
87
|
-
puts " Updated ~/.gem/credentials from secrets".colorize(:green)
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
# Generates context-aware credential setup instructions
|
|
91
|
-
# Prioritizes methods based on detected configuration (Azure Key Vault, LocalSecrets, or neither)
|
|
92
|
-
# @return [String] Formatted error message with setup instructions
|
|
93
|
-
def self.credential_setup_instructions
|
|
94
|
-
methods = []
|
|
95
|
-
|
|
96
|
-
# Detect configuration and prioritize
|
|
97
|
-
azure_configured = ENV["AZURE_SERVICE_PRINCIPAL_APP_ID"] && !ENV["AZURE_SERVICE_PRINCIPAL_APP_ID"].empty? &&
|
|
98
|
-
ENV["AZURE_KEYVAULT_NAME"] && !ENV["AZURE_KEYVAULT_NAME"].empty?
|
|
99
|
-
|
|
100
|
-
if azure_configured
|
|
101
|
-
methods << "1. Using Azure Key Vault (recommended for your setup):"
|
|
102
|
-
methods << " az login"
|
|
103
|
-
methods << " az keyvault secret set \\"
|
|
104
|
-
methods << " --vault-name '#{ENV["AZURE_KEYVAULT_NAME"]}' \\"
|
|
105
|
-
methods << " --name RUBYGEMS_API_KEY \\"
|
|
106
|
-
methods << " --value 'your-api-key-here'"
|
|
107
|
-
methods << ""
|
|
108
|
-
methods << " For full Azure Key Vault setup, see: docs/azure-keyvault-permissions.md"
|
|
109
|
-
methods << ""
|
|
110
|
-
methods << "2. Using Local Secrets:"
|
|
111
|
-
methods << " rake secrets # Check current secrets"
|
|
112
|
-
methods << " # Edit ~/.makit/secrets.json and add:"
|
|
113
|
-
methods << " # \"RUBYGEMS_API_KEY\": \"your-api-key-here\""
|
|
114
|
-
else
|
|
115
|
-
methods << "1. Using Secrets Management (recommended):"
|
|
116
|
-
methods << " rake secrets # Check current secrets"
|
|
117
|
-
methods << " # Edit ~/.makit/secrets.json and add:"
|
|
118
|
-
methods << " # \"RUBYGEMS_API_KEY\": \"your-api-key-here\""
|
|
119
|
-
methods << ""
|
|
120
|
-
methods << " For Azure Key Vault setup, see: docs/azure-keyvault-permissions.md"
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
methods << ""
|
|
124
|
-
methods << "3. Using gem signin:"
|
|
125
|
-
methods << " gem signin"
|
|
126
|
-
methods << " Follow the prompts to enter your RubyGems username and password."
|
|
127
|
-
methods << ""
|
|
128
|
-
methods << "4. Manual credentials file:"
|
|
129
|
-
methods << " a. Get your API key from: https://rubygems.org/api_keys"
|
|
130
|
-
methods << " b. Create ~/.gem/credentials with the following content:"
|
|
131
|
-
methods << " :rubygems_api_key: YOUR_API_KEY_HERE"
|
|
132
|
-
|
|
133
|
-
"Error: RubyGems credentials not found\n\nTo set up credentials, choose one of the following methods:\n\n#{methods.join("\n")}\n\nFor detailed instructions, see: docs/RUBYGEMS_PUBLISHING.md"
|
|
134
|
-
end
|
|
135
|
-
end
|
|
136
|
-
end
|
|
137
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "fileutils"
|
|
4
|
+
require "yaml"
|
|
5
|
+
require "colorize"
|
|
6
|
+
require_relative "secrets"
|
|
7
|
+
|
|
8
|
+
module Makit
|
|
9
|
+
# RubyGems operations helper module
|
|
10
|
+
# Provides centralized RubyGems functionality, starting with credential management
|
|
11
|
+
module RubyGems
|
|
12
|
+
# Retrieves RubyGems API key from secrets management system or credentials file
|
|
13
|
+
# Priority: 1) Secrets (RUBYGEMS_API_KEY or rubygems_api_key), 2) ~/.gem/credentials file
|
|
14
|
+
# @return [String, nil] API key if found, nil otherwise
|
|
15
|
+
def self.get_api_key
|
|
16
|
+
# Priority 1: Check secrets management system
|
|
17
|
+
begin
|
|
18
|
+
secrets = Makit::Secrets.new
|
|
19
|
+
api_key = secrets.get("RUBYGEMS_API_KEY") || secrets.get("rubygems_api_key")
|
|
20
|
+
return api_key if api_key && !api_key.empty?
|
|
21
|
+
rescue StandardError => e
|
|
22
|
+
# Secrets backend may be unavailable (network error, auth failure, etc.)
|
|
23
|
+
# Fall back to credentials file with warning
|
|
24
|
+
credentials_file = File.expand_path("~/.gem/credentials")
|
|
25
|
+
if File.exist?(credentials_file)
|
|
26
|
+
warn " Warning: Secrets backend unavailable (#{e.class.name}), falling back to ~/.gem/credentials".colorize(:yellow)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Priority 2: Check ~/.gem/credentials file
|
|
31
|
+
credentials_file = File.expand_path("~/.gem/credentials")
|
|
32
|
+
if File.exist?(credentials_file)
|
|
33
|
+
begin
|
|
34
|
+
credentials = YAML.load_file(credentials_file)
|
|
35
|
+
api_key = credentials[:rubygems_api_key] if credentials && credentials[:rubygems_api_key]
|
|
36
|
+
return api_key if api_key && !api_key.empty?
|
|
37
|
+
rescue StandardError => e
|
|
38
|
+
# Credentials file may be malformed
|
|
39
|
+
# Will be handled by error messages
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
nil
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Validates API key format (basic validation)
|
|
47
|
+
# Checks: non-empty, length >= 20, valid characters (alphanumeric, hyphens, underscores)
|
|
48
|
+
# @param api_key [String, nil] The API key to validate
|
|
49
|
+
# @return [Boolean] true if valid, false otherwise
|
|
50
|
+
def self.validate_api_key_format(api_key)
|
|
51
|
+
return false if api_key.nil? || api_key.strip.empty?
|
|
52
|
+
return false if api_key.length < 20
|
|
53
|
+
return false unless api_key.match?(/\A[a-zA-Z0-9_-]+\z/)
|
|
54
|
+
true
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Syncs API key from secrets to ~/.gem/credentials file
|
|
58
|
+
# Only updates if file doesn't exist or API key is different
|
|
59
|
+
# Sets file permissions to 600 (owner read/write only) for security
|
|
60
|
+
# @param api_key [String] The API key to sync
|
|
61
|
+
# @return [void]
|
|
62
|
+
def self.sync_credentials_from_secrets(api_key)
|
|
63
|
+
return if api_key.nil? || api_key.empty?
|
|
64
|
+
|
|
65
|
+
credentials_file = File.expand_path("~/.gem/credentials")
|
|
66
|
+
|
|
67
|
+
# Check if file exists and has same API key
|
|
68
|
+
if File.exist?(credentials_file)
|
|
69
|
+
begin
|
|
70
|
+
require "yaml"
|
|
71
|
+
existing_credentials = YAML.load_file(credentials_file)
|
|
72
|
+
existing_key = existing_credentials[:rubygems_api_key] if existing_credentials
|
|
73
|
+
return if existing_key == api_key # No update needed
|
|
74
|
+
rescue StandardError
|
|
75
|
+
# File may be malformed, proceed with update
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Create or update credentials file
|
|
80
|
+
credentials_dir = File.dirname(credentials_file)
|
|
81
|
+
FileUtils.mkdir_p(credentials_dir) unless Dir.exist?(credentials_dir)
|
|
82
|
+
|
|
83
|
+
credentials_content = { rubygems_api_key: api_key }.to_yaml
|
|
84
|
+
File.write(credentials_file, credentials_content)
|
|
85
|
+
File.chmod(0o600, credentials_file) # rw------- (owner read/write only)
|
|
86
|
+
|
|
87
|
+
puts " Updated ~/.gem/credentials from secrets".colorize(:green)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Generates context-aware credential setup instructions
|
|
91
|
+
# Prioritizes methods based on detected configuration (Azure Key Vault, LocalSecrets, or neither)
|
|
92
|
+
# @return [String] Formatted error message with setup instructions
|
|
93
|
+
def self.credential_setup_instructions
|
|
94
|
+
methods = []
|
|
95
|
+
|
|
96
|
+
# Detect configuration and prioritize
|
|
97
|
+
azure_configured = ENV["AZURE_SERVICE_PRINCIPAL_APP_ID"] && !ENV["AZURE_SERVICE_PRINCIPAL_APP_ID"].empty? &&
|
|
98
|
+
ENV["AZURE_KEYVAULT_NAME"] && !ENV["AZURE_KEYVAULT_NAME"].empty?
|
|
99
|
+
|
|
100
|
+
if azure_configured
|
|
101
|
+
methods << "1. Using Azure Key Vault (recommended for your setup):"
|
|
102
|
+
methods << " az login"
|
|
103
|
+
methods << " az keyvault secret set \\"
|
|
104
|
+
methods << " --vault-name '#{ENV["AZURE_KEYVAULT_NAME"]}' \\"
|
|
105
|
+
methods << " --name RUBYGEMS_API_KEY \\"
|
|
106
|
+
methods << " --value 'your-api-key-here'"
|
|
107
|
+
methods << ""
|
|
108
|
+
methods << " For full Azure Key Vault setup, see: docs/azure-keyvault-permissions.md"
|
|
109
|
+
methods << ""
|
|
110
|
+
methods << "2. Using Local Secrets:"
|
|
111
|
+
methods << " rake secrets # Check current secrets"
|
|
112
|
+
methods << " # Edit ~/.makit/secrets.json and add:"
|
|
113
|
+
methods << " # \"RUBYGEMS_API_KEY\": \"your-api-key-here\""
|
|
114
|
+
else
|
|
115
|
+
methods << "1. Using Secrets Management (recommended):"
|
|
116
|
+
methods << " rake secrets # Check current secrets"
|
|
117
|
+
methods << " # Edit ~/.makit/secrets.json and add:"
|
|
118
|
+
methods << " # \"RUBYGEMS_API_KEY\": \"your-api-key-here\""
|
|
119
|
+
methods << ""
|
|
120
|
+
methods << " For Azure Key Vault setup, see: docs/azure-keyvault-permissions.md"
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
methods << ""
|
|
124
|
+
methods << "3. Using gem signin:"
|
|
125
|
+
methods << " gem signin"
|
|
126
|
+
methods << " Follow the prompts to enter your RubyGems username and password."
|
|
127
|
+
methods << ""
|
|
128
|
+
methods << "4. Manual credentials file:"
|
|
129
|
+
methods << " a. Get your API key from: https://rubygems.org/api_keys"
|
|
130
|
+
methods << " b. Create ~/.gem/credentials with the following content:"
|
|
131
|
+
methods << " :rubygems_api_key: YOUR_API_KEY_HERE"
|
|
132
|
+
|
|
133
|
+
"Error: RubyGems credentials not found\n\nTo set up credentials, choose one of the following methods:\n\n#{methods.join("\n")}\n\nFor detailed instructions, see: docs/RUBYGEMS_PUBLISHING.md"
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|