Skip to content

Commit bcba75d

Browse files
authored
Merge pull request #3 from pcreux/dont-require-bundler
Don't require bundler
2 parents 7f06682 + 7c24b97 commit bcba75d

File tree

6 files changed

+108
-109
lines changed

6 files changed

+108
-109
lines changed

aws-rotate-keys.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# coding: utf-8
22
lib = File.expand_path('../lib', __FILE__)
33
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4-
require 'version'
4+
require 'aws_rotate_keys/version'
55

66
Gem::Specification.new do |spec|
77
spec.name = "aws-rotate-keys"

exe/aws-rotate-keys

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#!/usr/bin/env ruby
22

3-
require "bundler/setup"
43
require "aws_rotate_keys"
54

6-
AwsRotateKeys.call
5+
AwsRotateKeys::CLI.call

lib/aws_rotate_keys.rb

Lines changed: 1 addition & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,104 +1 @@
1-
require "version"
2-
require "aws-sdk"
3-
require 'fileutils'
4-
5-
module AwsRotateKeys
6-
def self.call(*args)
7-
Runner.new(*args).call
8-
end
9-
10-
class Runner
11-
attr_reader :iam, :credentials_path, :stdout, :env
12-
13-
def initialize(iam: Aws::IAM::Client.new,
14-
credentials_path: "#{Dir.home}/.aws/credentials",
15-
stdout: $stdout,
16-
env: ENV)
17-
@iam = iam
18-
@credentials_path = credentials_path
19-
@stdout = stdout
20-
@env = env
21-
end
22-
23-
def call
24-
log "Creating access key..."
25-
new_key = create_access_key
26-
27-
create_credentials_directory_if_needed
28-
29-
if credentials_file_exists?
30-
log "Backing up #{credentials_path} to #{credentials_backup_path}..."
31-
backup_aws_credentials_file
32-
end
33-
34-
log "Writing new access key to #{credentials_path}"
35-
write_aws_credentials_file(new_key)
36-
37-
log "Deleting your oldest access key..."
38-
delete_oldest_access_key
39-
40-
log "You're all set!"
41-
42-
if aws_environment_variables?
43-
log aws_environment_variables_warning_message
44-
end
45-
end
46-
47-
private
48-
49-
def create_access_key
50-
create_access_key_response = iam.create_access_key
51-
create_access_key_response.access_key
52-
end
53-
54-
def create_credentials_directory_if_needed
55-
FileUtils.mkdir_p(credentials_dir)
56-
end
57-
58-
def credentials_file_exists?
59-
File.exist?(credentials_path)
60-
end
61-
62-
# ex. ~/aws/credentials.bkp-2017-01-06-16-38-07--0800
63-
def credentials_backup_path
64-
credentials_path + ".bkp-#{Time.now.to_s.gsub(/[^\d]/, '-')}"
65-
end
66-
67-
def backup_aws_credentials_file
68-
FileUtils.cp(credentials_path, credentials_backup_path)
69-
end
70-
71-
def write_aws_credentials_file(access_key)
72-
File.open(credentials_path, "w") do |f|
73-
f.puts "[default]"
74-
f.puts "aws_access_key_id = #{access_key.access_key_id}"
75-
f.puts "aws_secret_access_key = #{access_key.secret_access_key}"
76-
end
77-
end
78-
79-
def delete_oldest_access_key
80-
list_access_keys_response = iam.list_access_keys
81-
access_keys = list_access_keys_response.access_key_metadata
82-
83-
oldest_access_key = access_keys.sort_by(&:create_date).first
84-
iam.delete_access_key(access_key_id: oldest_access_key.access_key_id)
85-
end
86-
87-
def credentials_dir
88-
File.dirname(credentials_path)
89-
end
90-
91-
def log(msg)
92-
stdout.puts msg
93-
end
94-
95-
def aws_environment_variables?
96-
env['AWS_ACCESS_KEY_ID'] || env['AWS_SECRET_ACCESS_KEY']
97-
end
98-
99-
def aws_environment_variables_warning_message
100-
"We've noticed that the environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are set.\n" +
101-
"Please remove them so that aws cli and libraries use #{credentials_path} instead."
102-
end
103-
end
104-
end
1+
require "aws_rotate_keys/cli"

lib/aws_rotate_keys/cli.rb

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
require "aws-sdk"
2+
require "fileutils"
3+
4+
module AwsRotateKeys
5+
class CLI
6+
def self.call(*args)
7+
new(*args).call
8+
end
9+
10+
attr_reader :iam, :credentials_path, :stdout, :env
11+
12+
def initialize(iam: Aws::IAM::Client.new,
13+
credentials_path: "#{Dir.home}/.aws/credentials",
14+
stdout: $stdout,
15+
env: ENV)
16+
@iam = iam
17+
@credentials_path = credentials_path
18+
@stdout = stdout
19+
@env = env
20+
end
21+
22+
def call
23+
log "Creating access key..."
24+
new_key = create_access_key
25+
26+
create_credentials_directory_if_needed
27+
28+
if credentials_file_exists?
29+
log "Backing up #{credentials_path} to #{credentials_backup_path}..."
30+
backup_aws_credentials_file
31+
end
32+
33+
log "Writing new access key to #{credentials_path}"
34+
write_aws_credentials_file(new_key)
35+
36+
log "Deleting your oldest access key..."
37+
delete_oldest_access_key
38+
39+
log "You're all set!"
40+
41+
if aws_environment_variables?
42+
log aws_environment_variables_warning_message
43+
end
44+
end
45+
46+
private
47+
48+
def create_access_key
49+
create_access_key_response = iam.create_access_key
50+
create_access_key_response.access_key
51+
end
52+
53+
def create_credentials_directory_if_needed
54+
FileUtils.mkdir_p(credentials_dir)
55+
end
56+
57+
def credentials_file_exists?
58+
File.exist?(credentials_path)
59+
end
60+
61+
# ex. ~/aws/credentials.bkp-2017-01-06-16-38-07--0800
62+
def credentials_backup_path
63+
credentials_path + ".bkp-#{Time.now.to_s.gsub(/[^\d]/, '-')}"
64+
end
65+
66+
def backup_aws_credentials_file
67+
FileUtils.cp(credentials_path, credentials_backup_path)
68+
end
69+
70+
def write_aws_credentials_file(access_key)
71+
File.open(credentials_path, "w") do |f|
72+
f.puts "[default]"
73+
f.puts "aws_access_key_id = #{access_key.access_key_id}"
74+
f.puts "aws_secret_access_key = #{access_key.secret_access_key}"
75+
end
76+
end
77+
78+
def delete_oldest_access_key
79+
list_access_keys_response = iam.list_access_keys
80+
access_keys = list_access_keys_response.access_key_metadata
81+
82+
oldest_access_key = access_keys.sort_by(&:create_date).first
83+
iam.delete_access_key(access_key_id: oldest_access_key.access_key_id)
84+
end
85+
86+
def credentials_dir
87+
File.dirname(credentials_path)
88+
end
89+
90+
def log(msg)
91+
stdout.puts msg
92+
end
93+
94+
def aws_environment_variables?
95+
env['AWS_ACCESS_KEY_ID'] || env['AWS_SECRET_ACCESS_KEY']
96+
end
97+
98+
def aws_environment_variables_warning_message
99+
"We've noticed that the environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are set.\n" +
100+
"Please remove them so that aws cli and libraries use #{credentials_path} instead."
101+
end
102+
end
103+
end
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module AwsRotateKeys
2-
VERSION = "0.1.1"
2+
VERSION = "0.1.2"
33
end

spec/aws_rotate_keys_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def delete_access_key(access_key_id:)
3535
let(:credentials_path) { "./spec/tmp/aws/credentials" }
3636

3737
def rotate_keys(args = {})
38-
AwsRotateKeys.call(
38+
AwsRotateKeys::CLI.call(
3939
{
4040
iam: iam_double,
4141
credentials_path: credentials_path

0 commit comments

Comments
 (0)