awskeyring 1.9.1 → 1.9.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a30aa3b190aaf468207e6b79f4b2169561ddf4f5ceaad9f195d38a0cd1d4e1c8
4
- data.tar.gz: e00232d1936ed6a99d5b7926a19a2d7b472ebce13b61d9bbd153a28c2bb2ef85
3
+ metadata.gz: 31da4ef422d59adf9c5963938ad2ffeaf6ca6457b5b5f8ca2fa3857290316ed3
4
+ data.tar.gz: 8fd51c42d7211c456ab6300561bce071a29acdbe90dea71a2b896f631cd29f07
5
5
  SHA512:
6
- metadata.gz: 26193f4fb124fbcab81c96828a33a23f5ee19f00512a9e4ed458ed4e75dbec31992a92ad886c54e7e8d2f594fd169ac8349ff1a3b541f6b53fcce2b0b8c2c051
7
- data.tar.gz: aa7d5787dc45b3b9b213bbf186b1531cd4b89d9684b3a4ac535f7fd5674b4251147a32fe4c2ec2944988a0b514acaa92b3052185f6e16acd5bd51dd775ed133f
6
+ metadata.gz: 7036e99a3e9ef4d171e0c71fbfd883cb9dbe3158a0f07c3457f380016503ac4e8876121ae4b82a0fd5a8f9b4c3266581041d66fd47f7a72ac3fc201a8d0d27e8
7
+ data.tar.gz: e5cb973a8903077a01bd83eda8ef3f0a00fc6ea7e42257cd3e71c8953258975b428020e0078a58c02672a1d92d1595dae5af5563647ca462f30c7f7c87554325
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2017-2021 Tristan Morgan
3
+ Copyright (c) 2016-2022 Tristan Morgan
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ![Awskeyring](https://raw.githubusercontent.com/servian/awskeyring/main/awskeyring-144.png)
4
4
 
5
- * [![Build Status](https://travis-ci.com/servian/awskeyring.svg?branch=main)](https://travis-ci.com/servian/awskeyring)
5
+ * [![Build Status](https://app.travis-ci.com/servian/awskeyring.svg?branch=main)](https://app.travis-ci.com/github/servian/awskeyring)
6
6
  * [![Gem Version](https://badge.fury.io/rb/awskeyring.svg)](https://badge.fury.io/rb/awskeyring)
7
7
  * [![license MIT](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)
8
8
  * [![All Downloads](https://ruby-gem-downloads-badge.herokuapp.com/awskeyring?type=total)](https://rubygems.org/gems/awskeyring)
data/awskeyring.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.homepage = Awskeyring::HOMEPAGE
16
16
  spec.licenses = ['MIT']
17
17
 
18
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^spec/|^\..*|C.*\.md|.*\.ronn|.*\.png}) }
18
+ spec.files = %w[awskeyring.gemspec README.md LICENSE.txt] + Dir['exe/*', 'lib/**/*.rb', 'man/*.5', 'i18n/*']
19
19
  spec.bindir = 'exe'
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
  'bug_tracker_uri' => "#{Awskeyring::HOMEPAGE}/issues",
27
27
  'changelog_uri' => "#{Awskeyring::HOMEPAGE}/blob/main/CHANGELOG.md",
28
28
  'documentation_uri' => "https://rubydoc.info/gems/#{spec.name}/#{Awskeyring::VERSION}",
29
+ 'rubygems_mfa_required' => 'true',
29
30
  'source_code_uri' => "#{Awskeyring::HOMEPAGE}/tree/v#{Awskeyring::VERSION}",
30
31
  'wiki_uri' => "#{Awskeyring::HOMEPAGE}/wiki"
31
32
  }
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aws-sdk-core'
4
+ require 'awskeyring'
5
+
6
+ module Awskeyring
7
+ # Provide a credential provider for use as a library, eg.
8
+ # require 'awskeyring/credential_provider'
9
+ # client = Aws::STS::Client.new(
10
+ # credentials: Awskeyring::CredentialProvider.new("company-acc")
11
+ # )
12
+ class CredentialProvider
13
+ include Aws::CredentialProvider
14
+
15
+ attr_accessor :account
16
+
17
+ def initialize(account)
18
+ @account = account
19
+ end
20
+
21
+ # returns a new Aws::Credentials object
22
+ def credentials
23
+ cred = Awskeyring.get_valid_creds(account: account)
24
+ Aws::Credentials.new(cred[:key],
25
+ cred[:secret],
26
+ cred[:token])
27
+ end
28
+ end
29
+ end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'base64'
4
+
3
5
  # Awskeyring Module,
4
6
  # gives you an interface to access keychains and items.
5
7
  module Awskeyring
@@ -27,7 +29,11 @@ module Awskeyring
27
29
  #
28
30
  # @param [String] aws_secret_access_key The aws_secret_access_key
29
31
  def self.secret_access_key(aws_secret_access_key)
30
- raise 'Secret Access Key is not 40 chars' if aws_secret_access_key.length != 40
32
+ begin
33
+ raise 'Invalid Secret Access Key' unless Base64.strict_decode64(aws_secret_access_key).length == 30
34
+ rescue ArgumentError
35
+ raise 'Invalid Secret Access Key'
36
+ end
31
37
 
32
38
  aws_secret_access_key
33
39
  end
@@ -6,7 +6,7 @@ require 'json'
6
6
  # Version const and query of latest.
7
7
  module Awskeyring
8
8
  # The Gem's version number
9
- VERSION = '1.9.1'
9
+ VERSION = '1.9.4'
10
10
  # The Gem's homepage
11
11
  HOMEPAGE = 'https://github.com/servian/awskeyring'
12
12
 
data/lib/awskeyring.rb CHANGED
@@ -52,6 +52,7 @@ module Awskeyring # rubocop:disable Metrics/ModuleLength
52
52
  prefs = {
53
53
  awskeyring: awskeyring,
54
54
  keyage: DEFAULT_KEY_AGE,
55
+ browser: DEFAULT_BROWSER_LIST,
55
56
  console: DEFAULT_CONSOLE_LIST
56
57
  }
57
58
  File.new(Awskeyring::PREFS_FILE, 'w').write JSON.dump(prefs)
@@ -133,7 +133,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
133
133
  key: cred[:key],
134
134
  secret: cred[:secret],
135
135
  token: cred[:token],
136
- expiry: (expiry || Time.new + Awskeyring::Awsapi::ONE_HOUR).iso8601
136
+ expiry: (expiry || (Time.new + Awskeyring::Awsapi::ONE_HOUR)).iso8601
137
137
  )
138
138
  end
139
139
 
@@ -372,7 +372,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
372
372
  mfa: item_hash[:mfa],
373
373
  key: item_hash[:key],
374
374
  secret: item_hash[:secret],
375
- user: ENV['USER']
375
+ user: ENV.fetch('USER', 'awskeyring')
376
376
  )
377
377
  Awskeyring.delete_token(account: account, message: '# Removing STS credentials')
378
378
  rescue Aws::Errors::ServiceError => e
@@ -415,7 +415,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
415
415
  secret: cred[:secret],
416
416
  token: cred[:token],
417
417
  path: path,
418
- user: ENV['USER']
418
+ user: ENV.fetch('USER', 'awskeyring')
419
419
  )
420
420
  rescue Aws::Errors::ServiceError => e
421
421
  warn e.to_s
@@ -436,8 +436,8 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
436
436
  # autocomplete
437
437
  def autocomplete(curr, prev = nil)
438
438
  curr, prev = fix_args(curr, prev)
439
- comp_line = ENV['COMP_LINE']
440
- comp_point_str = ENV['COMP_POINT']
439
+ comp_line = ENV.fetch('COMP_LINE', nil)
440
+ comp_point_str = ENV.fetch('COMP_POINT', nil)
441
441
  unless comp_line && comp_point_str
442
442
  exec_name = File.basename($PROGRAM_NAME)
443
443
  warn I18n.t('message.awskeyring', path: $PROGRAM_NAME, bin: exec_name)
@@ -609,7 +609,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
609
609
  bundled_env = to_delete.map { |elem| elem[('BUNDLER_ORIG_'.length)..] }
610
610
  to_delete << 'BUNDLE_GEMFILE'
611
611
  bundled_env.each do |env_name|
612
- ENV[env_name] = ENV["BUNDLER_ORIG_#{env_name}"]
612
+ ENV[env_name] = ENV.fetch("BUNDLER_ORIG_#{env_name}", nil)
613
613
  to_delete << env_name if ENV["BUNDLER_ORIG_#{env_name}"].start_with? 'BUNDLER_'
614
614
  end
615
615
  to_delete.each do |env_name|
data/man/awskeyring.5 CHANGED
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "AWSKEYRING" "5" "September 2021" "" ""
4
+ .TH "AWSKEYRING" "5" "April 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBAwskeyring\fR \- is a small tool to manage AWS account keys in the macOS Keychain
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awskeyring
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.1
4
+ version: 1.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tristan Morgan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-03 00:00:00.000000000 Z
11
+ date: 2022-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-iam
@@ -73,15 +73,14 @@ executables:
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
- - Gemfile
77
76
  - LICENSE.txt
78
77
  - README.md
79
- - Rakefile
80
78
  - awskeyring.gemspec
81
79
  - exe/awskeyring
82
80
  - i18n/en.yml
83
81
  - lib/awskeyring.rb
84
82
  - lib/awskeyring/awsapi.rb
83
+ - lib/awskeyring/credential_provider.rb
85
84
  - lib/awskeyring/input.rb
86
85
  - lib/awskeyring/validate.rb
87
86
  - lib/awskeyring/version.rb
@@ -93,8 +92,9 @@ licenses:
93
92
  metadata:
94
93
  bug_tracker_uri: https://github.com/servian/awskeyring/issues
95
94
  changelog_uri: https://github.com/servian/awskeyring/blob/main/CHANGELOG.md
96
- documentation_uri: https://rubydoc.info/gems/awskeyring/1.9.1
97
- source_code_uri: https://github.com/servian/awskeyring/tree/v1.9.1
95
+ documentation_uri: https://rubydoc.info/gems/awskeyring/1.9.4
96
+ rubygems_mfa_required: 'true'
97
+ source_code_uri: https://github.com/servian/awskeyring/tree/v1.9.4
98
98
  wiki_uri: https://github.com/servian/awskeyring/wiki
99
99
  post_install_message:
100
100
  rdoc_options: []
@@ -111,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  requirements: []
114
- rubygems_version: 3.0.3
114
+ rubygems_version: 3.0.3.1
115
115
  signing_key:
116
116
  specification_version: 4
117
117
  summary: Manages AWS credentials in the macOS keychain
data/Gemfile DELETED
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- # Specify your gem's dependencies in awskeyring.gemspec
6
- gemspec
7
-
8
- group :development do
9
- gem 'github_changelog_generator'
10
- gem 'rake'
11
- gem 'ronn'
12
- gem 'rspec'
13
- gem 'rubocop'
14
- gem 'rubocop-performance'
15
- gem 'rubocop-rake'
16
- gem 'rubocop-rspec'
17
- gem 'rubocop-rubycw'
18
- gem 'simplecov'
19
- gem 'yard'
20
- end
data/Rakefile DELETED
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/gem_tasks'
4
- require 'rubocop/rake_task'
5
- require 'ronn'
6
- require 'github_changelog_generator/task'
7
- require 'yard'
8
-
9
- GitHubChangelogGenerator::RakeTask.new :changelog do |config|
10
- config.user = 'servian'
11
- config.project = 'awskeyring'
12
- config.future_release = "v#{Awskeyring::VERSION}"
13
- config.since_tag = 'v0.10.0'
14
- end
15
-
16
- RuboCop::RakeTask.new do |rubocop|
17
- rubocop.options = %w[-D --enable-pending-cops]
18
- rubocop.requires << 'rubocop-performance'
19
- rubocop.requires << 'rubocop-rake'
20
- rubocop.requires << 'rubocop-rspec'
21
- rubocop.requires << 'rubocop-rubycw'
22
- end
23
-
24
- desc 'Run RSpec code examples'
25
- task :spec do
26
- puts 'Running RSpec...'
27
- require 'rspec/core'
28
- runner = RSpec::Core::Runner
29
- xcode = runner.run(%w[--pattern spec/**{,/*/**}/*_spec.rb --order rand --format documentation --color])
30
- abort 'RSpec failed' if xcode.positive?
31
- end
32
-
33
- desc 'Check filemode bits'
34
- task :filemode do
35
- puts 'Running FileMode...'
36
- files = Set.new(`git ls-files -z`.split("\x0"))
37
- dirs = Set.new(files.map { |file| File.dirname(file) })
38
- failure = []
39
- files.merge(dirs).each do |file|
40
- mode = File.stat(file).mode
41
- print '.'
42
- failure << file if (mode & 0x7) != (mode >> 3 & 0x7)
43
- end
44
- abort "\nError: Incorrect file mode found\n#{failure.join("\n")}" unless failure.empty?
45
- print "\n"
46
- end
47
-
48
- desc 'generate manpage'
49
- task :ronn do
50
- puts 'Running Ronn...'
51
- doc = Ronn::Document.new('man/awskeyring.5.ronn')
52
- doc.date = Time.parse(`git show -s --format=%ad --date=short`)
53
- File.write('man/awskeyring.5', doc.to_roff)
54
- puts "done\n\n"
55
- end
56
-
57
- YARD::Rake::YardocTask.new do |t|
58
- t.options = ['--fail-on-warning', '--no-progress', '--files', '*.md']
59
- t.stats_options = ['--list-undoc']
60
- end
61
-
62
- desc 'Run Linting, Tests and Documetation tasks'
63
- task default: %i[filemode rubocop spec ronn yard]