aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/commands/credentials
diff options
context:
space:
mode:
Diffstat (limited to 'railties/lib/rails/commands/credentials')
-rw-r--r--railties/lib/rails/commands/credentials/credentials_command.rb40
-rw-r--r--railties/lib/rails/commands/credentials/credentials_command/diffing.rb2
2 files changed, 19 insertions, 23 deletions
diff --git a/railties/lib/rails/commands/credentials/credentials_command.rb b/railties/lib/rails/commands/credentials/credentials_command.rb
index 99ec0be761..d1054f8b63 100644
--- a/railties/lib/rails/commands/credentials/credentials_command.rb
+++ b/railties/lib/rails/commands/credentials/credentials_command.rb
@@ -43,24 +43,27 @@ module Rails
say "Couldn't decrypt #{content_path}. Perhaps you passed the wrong key?"
end
- def show(git_textconv_path = nil)
- if git_textconv_path
- default_environment = extract_environment_from_path(git_textconv_path)
- fallback_message = File.read(git_textconv_path)
- end
+ def show
+ extract_environment_option_from_argument(default_environment: nil)
+ require_application!
- extract_environment_option_from_argument(default_environment: default_environment)
+ say credentials.read.presence || missing_credentials_message
+ end
+
+ def diff(content_path)
+ @content_path = content_path
+
+ extract_environment_option_from_argument(default_environment: extract_environment_from_path(content_path))
require_application!
- say credentials(git_textconv_path).read.presence || fallback_message || missing_credentials_message
- rescue => e
- raise(e) unless git_textconv_path
- fallback_message
+ say credentials.read.presence || credentials.content_path.read
+ rescue
+ say credentials.content_path.read
end
private
- def credentials(content = nil)
- Rails.application.encrypted(content || content_path, key_path: key_path)
+ def credentials
+ Rails.application.encrypted(content_path, key_path: key_path)
end
def ensure_encryption_key_has_been_added
@@ -90,8 +93,9 @@ module Rails
end
end
+
def content_path
- options[:environment] ? "config/credentials/#{options[:environment]}.yml.enc" : "config/credentials.yml.enc"
+ @content_path ||= options[:environment] ? "config/credentials/#{options[:environment]}.yml.enc" : "config/credentials.yml.enc"
end
def key_path
@@ -99,15 +103,7 @@ module Rails
end
def extract_environment_from_path(path)
- regex = %r{
- ([A-Za-z0-9]+) # match the environment
- (?<!credentials) # don't match if file contains the word "credentials"
- # in such case, the environment should be the default one
- \.yml\.enc # look for `.yml.enc` file extension
- }x
- path.match(regex)
-
- Regexp.last_match(1)
+ available_environments.find { |env| path.include? env } if path.match?(/\.yml\.enc$/)
end
def encryption_key_file_generator
diff --git a/railties/lib/rails/commands/credentials/credentials_command/diffing.rb b/railties/lib/rails/commands/credentials/credentials_command/diffing.rb
index f3e798b25c..1598ecaa8d 100644
--- a/railties/lib/rails/commands/credentials/credentials_command/diffing.rb
+++ b/railties/lib/rails/commands/credentials/credentials_command/diffing.rb
@@ -24,7 +24,7 @@ module Rails::Command::CredentialsCommand::Diffing # :nodoc:
end
def enable
- system_call("git config diff.rails_credentials.textconv 'bin/rails credentials:show'", accepted_codes: [0])
+ system_call("git config diff.rails_credentials.textconv 'bin/rails credentials:diff'", accepted_codes: [0])
git_attributes = Rails.root.join(".gitattributes")
File.open(git_attributes, "a+") do |file|