credman 0.0.2.pre.alpha → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 14ab2fa1b4e48d6a90fdcc7632bf78993238e82533010090388f92e1f91f553d
4
- data.tar.gz: 3c88995c1aec932c2d1ce18cdd7c332ca94fab5124280c864030038a9aa8b30e
3
+ metadata.gz: 7f3f7223fef1b2a86ff1cb2d922ceb13ab7be255564904e3d9c323ea8b01f8f2
4
+ data.tar.gz: fb0930eea7b736c7205b9d395ea4798bd66bdc6fd16c8a16ffb88e8fbf101112
5
5
  SHA512:
6
- metadata.gz: 5dea53acfd5ced3cc7b9d277bc8512552aece3c6268e1329a8cb2a23592058401e2c34d5f77bf2acb5bb89b414ab02217646fd3a2b8385ebebc11d78dfdd845a
7
- data.tar.gz: 71401829d82d9555f4bee7672eb4168ffb8211e7e1b2b627a1aa10570d0439204812e68b1d7ec573cbd5fc439a99ee53f71e36f05743793be2a16c073b31bab2
6
+ metadata.gz: 8cab55b97eac2c2bde4b6a28e2d60866261aedf7359189b2c70c5feb5e8c58d4358ccb096271657532cb1108db5c7887d42044e5bed52aede92faa318363bbab
7
+ data.tar.gz: 3e1b42772d70645693f918d87da78b9590a54a100b30b195ad284d067112d326bb36944a3a1635ed0d79b44bd1a9c61f6d0718e1512723612ce22d738a7a4b0a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## [0.0.3] - 2022-08-24
2
+
3
+ - add `bin/rspec` binstubs
4
+ - introduce `delete` command
5
+
1
6
  ## [0.0.2-alpha] - 2022-08-24
2
7
  - Rename gem to `credman`
3
8
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- credman (0.0.2.pre.alpha)
4
+ credman (0.0.3)
5
5
  activesupport (>= 6.0)
6
6
  dry-cli (~> 0.7)
7
7
  hash_diff (~> 1.0)
data/bin/rspec ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rspec' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("rspec-core", "rspec")
@@ -48,6 +48,22 @@ module Credman
48
48
  end
49
49
  end
50
50
 
51
+ class Delete < Dry::CLI::Command
52
+ desc "Delete a key for given environments"
53
+
54
+ argument :keys, type: :array, required: true, desc: "keys to delete"
55
+
56
+ option :environments,
57
+ aliases: ["e"],
58
+ type: :array,
59
+ default: [],
60
+ desc: "filter for environments"
61
+
62
+ def call(keys:, environments:, **)
63
+ Credman::Delete.new(environments).perform(keys)
64
+ end
65
+ end
66
+
51
67
  class Diff < Dry::CLI::Command
52
68
  desc "Show credentials diff between given branch (heroku by default) and current changes"
53
69
 
@@ -0,0 +1,56 @@
1
+ module Credman
2
+ class Delete < Credman::Base
3
+ def perform(keys)
4
+ abort pastel.red("At least one key required") if keys.empty?
5
+
6
+ configs.each do |env, config|
7
+ puts pastel.green("#{env}:")
8
+
9
+ updated_config = config.dup
10
+ is_updated = false
11
+
12
+ keys_with_path = keys.index_with { |key| key.split(".").map(&:to_sym) }
13
+ keys_with_path.each do |full_key, key_path|
14
+ if config_has_keys?(config, key_path)
15
+ is_updated ||= true
16
+ deep_delete!(updated_config, key_path)
17
+ print pastel.blue("\t#{full_key}:\t"), pastel.green("✅ deleted\n")
18
+ else
19
+ print pastel.blue("\t#{full_key}:\t"), pastel.red("❌ key not found, can't delete\n")
20
+ end
21
+ end
22
+
23
+ if is_updated
24
+ # removes "---\n" in the very beginning
25
+ config_as_string = updated_config.deep_stringify_keys.to_yaml[4..]
26
+ rewrite_config_for(env, config_as_string)
27
+ end
28
+ end
29
+ end
30
+
31
+ def rewrite_config_for(environment, new_config)
32
+ ActiveSupport::EncryptedConfiguration.new(
33
+ config_path: "config/credentials/#{environment}.yml.enc",
34
+ key_path: "config/credentials/#{environment}.key",
35
+ env_key: "RAILS_MASTER_KEY",
36
+ raise_if_missing_key: true
37
+ ).write(new_config)
38
+ end
39
+
40
+ def deep_delete!(obj, keys)
41
+ key = keys.first
42
+ if keys.length == 1
43
+ obj.delete(key)
44
+ else
45
+ obj[key] = {} unless obj[key]
46
+ deep_delete!(obj[key], keys.slice(1..-1))
47
+ end
48
+ end
49
+
50
+ def normalize_new_value(new_value)
51
+ return if new_value.in?(%w[nil null])
52
+
53
+ new_value
54
+ end
55
+ end
56
+ end
@@ -1,3 +1,3 @@
1
1
  module Credman
2
- VERSION = "0.0.2-alpha".freeze
2
+ VERSION = "0.0.3".freeze
3
3
  end
data/lib/credman.rb CHANGED
@@ -10,6 +10,7 @@ require_relative "credman/commands"
10
10
  require_relative "credman/get"
11
11
  require_relative "credman/list"
12
12
  require_relative "credman/set"
13
+ require_relative "credman/delete"
13
14
  require_relative "credman/diff"
14
15
  require_relative "credman/conflicts"
15
16
  require_relative "credman/version"
@@ -22,6 +23,7 @@ module Credman
22
23
  register "get", Get
23
24
  register "list", List
24
25
  register "set", Set
26
+ register "delete", Delete
25
27
  register "diff", Diff
26
28
  register "conflicts", Conflicts
27
29
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: credman
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2.pre.alpha
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Andronov
@@ -126,12 +126,14 @@ files:
126
126
  - Rakefile
127
127
  - bin/console
128
128
  - bin/credman
129
+ - bin/rspec
129
130
  - bin/setup
130
131
  - credman.gemspec
131
132
  - lib/credman.rb
132
133
  - lib/credman/base.rb
133
134
  - lib/credman/commands.rb
134
135
  - lib/credman/conflicts.rb
136
+ - lib/credman/delete.rb
135
137
  - lib/credman/diff.rb
136
138
  - lib/credman/get.rb
137
139
  - lib/credman/list.rb
@@ -155,9 +157,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
155
157
  version: 2.7.0
156
158
  required_rubygems_version: !ruby/object:Gem::Requirement
157
159
  requirements:
158
- - - ">"
160
+ - - ">="
159
161
  - !ruby/object:Gem::Version
160
- version: 1.3.1
162
+ version: '0'
161
163
  requirements: []
162
164
  rubygems_version: 3.1.6
163
165
  signing_key: