diff options
author | Kasper Timm Hansen <kaspth@gmail.com> | 2019-08-04 01:32:41 +0200 |
---|---|---|
committer | Kasper Timm Hansen <kaspth@gmail.com> | 2019-08-04 01:32:41 +0200 |
commit | 03e44f93001db97953917e0a100c627e189e2be6 (patch) | |
tree | 644d82e33a8b7269bfeb22e7f363cd726a6c97be /railties/lib/rails/commands/credentials/credentials_command.rb | |
parent | 6db2c426c0156dd3738673a676261693cfe92a8d (diff) | |
download | rails-03e44f93001db97953917e0a100c627e189e2be6.tar.gz rails-03e44f93001db97953917e0a100c627e189e2be6.tar.bz2 rails-03e44f93001db97953917e0a100c627e189e2be6.zip |
Revise credentials diffing flow to use a separate diff command
Didn't like the complicated stuff that happened on credentials:edit. It
would append to .gitattributes multiple times. Though I see why it was
written that way.
I'm cutting off for now, but since this new flow would require each developer
to run --enable perhaps this should really be:
1. Developer enrolls Rails app by running `credentials:diff --enable`
2. credentials:edit checks .gitattributes for `diff=rails_credentials` and
if the current file is covered by that.
3. If so, set up the "rails_credentials" driver automatically.
Diffstat (limited to 'railties/lib/rails/commands/credentials/credentials_command.rb')
-rw-r--r-- | railties/lib/rails/commands/credentials/credentials_command.rb | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/railties/lib/rails/commands/credentials/credentials_command.rb b/railties/lib/rails/commands/credentials/credentials_command.rb index d1054f8b63..9b3a7dbb86 100644 --- a/railties/lib/rails/commands/credentials/credentials_command.rb +++ b/railties/lib/rails/commands/credentials/credentials_command.rb @@ -38,7 +38,6 @@ module Rails end say "File encrypted and saved." - enable_credentials_diffing rescue ActiveSupport::MessageEncryptor::InvalidMessage say "Couldn't decrypt #{content_path}. Perhaps you passed the wrong key?" end @@ -50,14 +49,20 @@ module Rails say credentials.read.presence || missing_credentials_message end - def diff(content_path) - @content_path = content_path + option :enable, type: :boolean, default: false, + desc: "Pass `--enable` to make credential files diffable with `git diff`" - extract_environment_option_from_argument(default_environment: extract_environment_from_path(content_path)) - require_application! + def diff(content_path = nil) + if @content_path = content_path + extract_environment_option_from_argument(default_environment: extract_environment_from_path(content_path)) + require_application! - say credentials.read.presence || credentials.content_path.read - rescue + say credentials.read.presence || credentials.content_path.read + else + require_application! + enable_diffing if options[:enable] + end + rescue ActiveSupport::MessageEncryptor::InvalidMessage say credentials.content_path.read end |