aws_assume_role 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +31 -11
- data/Gemfile +7 -13
- data/LICENSE.md +201 -19
- data/README.md +176 -145
- data/aws_assume_role.gemspec +35 -21
- data/bin/aws-assume-role +1 -83
- data/i18n/en.yml +106 -0
- data/lib/aws_assume_role.rb +2 -3
- data/lib/aws_assume_role/cli.rb +15 -0
- data/lib/aws_assume_role/cli/actions/abstract_action.rb +53 -0
- data/lib/aws_assume_role/cli/actions/configure_profile.rb +21 -0
- data/lib/aws_assume_role/cli/actions/configure_role_assumption.rb +19 -0
- data/lib/aws_assume_role/cli/actions/console.rb +68 -0
- data/lib/aws_assume_role/cli/actions/delete_profile.rb +20 -0
- data/lib/aws_assume_role/cli/actions/includes.rb +18 -0
- data/lib/aws_assume_role/cli/actions/list_profiles.rb +10 -0
- data/lib/aws_assume_role/cli/actions/migrate_profile.rb +18 -0
- data/lib/aws_assume_role/cli/actions/reset_environment.rb +48 -0
- data/lib/aws_assume_role/cli/actions/run.rb +34 -0
- data/lib/aws_assume_role/cli/actions/set_environment.rb +60 -0
- data/lib/aws_assume_role/cli/actions/test.rb +31 -0
- data/lib/aws_assume_role/cli/commands/configure.rb +29 -0
- data/lib/aws_assume_role/cli/commands/console.rb +17 -0
- data/lib/aws_assume_role/cli/commands/delete.rb +11 -0
- data/lib/aws_assume_role/cli/commands/environment.rb +32 -0
- data/lib/aws_assume_role/cli/commands/list.rb +10 -0
- data/lib/aws_assume_role/cli/commands/migrate.rb +11 -0
- data/lib/aws_assume_role/cli/commands/run.rb +17 -0
- data/lib/aws_assume_role/cli/commands/test.rb +18 -0
- data/lib/aws_assume_role/configuration.rb +19 -0
- data/lib/aws_assume_role/core_ext/aws-sdk/credential_provider_chain.rb +2 -0
- data/lib/aws_assume_role/core_ext/aws-sdk/includes.rb +7 -0
- data/lib/aws_assume_role/credentials/factories.rb +9 -0
- data/lib/aws_assume_role/credentials/factories/abstract_factory.rb +31 -0
- data/lib/aws_assume_role/credentials/factories/assume_role.rb +38 -0
- data/lib/aws_assume_role/credentials/factories/default_chain_provider.rb +101 -0
- data/lib/aws_assume_role/credentials/factories/environment.rb +24 -0
- data/lib/aws_assume_role/credentials/factories/includes.rb +17 -0
- data/lib/aws_assume_role/credentials/factories/instance_profile.rb +17 -0
- data/lib/aws_assume_role/credentials/factories/repository.rb +35 -0
- data/lib/aws_assume_role/credentials/factories/shared.rb +15 -0
- data/lib/aws_assume_role/credentials/factories/shared_keyring.rb +16 -0
- data/lib/aws_assume_role/credentials/factories/static.rb +16 -0
- data/lib/aws_assume_role/credentials/providers/assume_role_credentials.rb +58 -0
- data/lib/aws_assume_role/credentials/providers/includes.rb +9 -0
- data/lib/aws_assume_role/credentials/providers/mfa_session_credentials.rb +102 -0
- data/lib/aws_assume_role/credentials/providers/shared_keyring_credentials.rb +22 -0
- data/lib/aws_assume_role/includes.rb +30 -0
- data/lib/aws_assume_role/logging.rb +16 -28
- data/lib/aws_assume_role/profile_configuration.rb +71 -0
- data/lib/aws_assume_role/runner.rb +39 -0
- data/lib/aws_assume_role/store/includes.rb +16 -0
- data/lib/aws_assume_role/store/keyring.rb +59 -0
- data/lib/aws_assume_role/store/serialization.rb +18 -0
- data/lib/aws_assume_role/store/shared_config_with_keyring.rb +175 -0
- data/lib/aws_assume_role/types.rb +30 -0
- data/lib/aws_assume_role/ui.rb +55 -0
- data/lib/aws_assume_role/vendored/aws.rb +4 -0
- data/lib/aws_assume_role/vendored/aws/README.md +2 -0
- data/lib/aws_assume_role/vendored/aws/assume_role_credentials.rb +68 -0
- data/lib/aws_assume_role/vendored/aws/includes.rb +9 -0
- data/lib/aws_assume_role/vendored/aws/refreshing_credentials.rb +60 -0
- data/lib/aws_assume_role/vendored/aws/shared_config.rb +220 -0
- data/lib/aws_assume_role/version.rb +3 -0
- metadata +264 -20
- data/.rspec +0 -2
- data/Rakefile +0 -2
- data/bin/test.rb +0 -39
- data/lib/aws_assume_role/credentials.rb +0 -92
- data/lib/aws_assume_role/profile.rb +0 -203
- data/lib/aws_assume_role/profile/assume_role.rb +0 -127
- data/lib/aws_assume_role/profile/basic.rb +0 -152
- data/lib/aws_assume_role/profile/list.rb +0 -57
@@ -0,0 +1,20 @@
|
|
1
|
+
require_relative "includes"
|
2
|
+
require_relative "../../store/shared_config_with_keyring"
|
3
|
+
|
4
|
+
class AwsAssumeRole::Cli::Actions::DeleteProfile < AwsAssumeRole::Cli::Actions::AbstractAction
|
5
|
+
CommandSchema = proc do
|
6
|
+
required(:profile).value(:filled?)
|
7
|
+
end
|
8
|
+
|
9
|
+
def act_on(config)
|
10
|
+
prompt_for_option(:name_to_delete, "Name", proc { eql? config.profile }, fmt: config.profile)
|
11
|
+
AwsAssumeRole.shared_config.delete_profile config.profile
|
12
|
+
out format t("commands.delete.completed"), config.profile
|
13
|
+
rescue KeyError, Aws::Errors::NoSuchProfileError
|
14
|
+
error format(t("errors.NoSuchProfileError"), config.profile)
|
15
|
+
raise
|
16
|
+
rescue Aws::Errors::MissingCredentialsError
|
17
|
+
error t("errors.MissingCredentialsError")
|
18
|
+
raise
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "i18n"
|
2
|
+
require "aws-sdk"
|
3
|
+
require "dry-types"
|
4
|
+
require_relative "../../types"
|
5
|
+
require "dry-validation"
|
6
|
+
require "active_support/core_ext/hash/compact"
|
7
|
+
require "active_support/core_ext/hash/keys"
|
8
|
+
require "launchy"
|
9
|
+
require "open-uri"
|
10
|
+
require "json"
|
11
|
+
require_relative "../../../aws_assume_role"
|
12
|
+
|
13
|
+
module AwsAssumeRole
|
14
|
+
module Cli
|
15
|
+
module Actions
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative "includes"
|
2
|
+
|
3
|
+
class AwsAssumeRole::Cli::Actions::MigrateProfile < AwsAssumeRole::Cli::Actions::AbstractAction
|
4
|
+
CommandSchema = proc do
|
5
|
+
required(:profile).value(:filled?)
|
6
|
+
end
|
7
|
+
|
8
|
+
def act_on(config)
|
9
|
+
AwsAssumeRole.shared_config.migrate_profile config.profile
|
10
|
+
out format(t("commands.configure.saved"), config[:profile], AwsAssumeRole.shared_config.config_path)
|
11
|
+
rescue KeyError, Aws::Errors::NoSuchProfileError
|
12
|
+
error format(t("errors.NoSuchProfileError"), config.profile)
|
13
|
+
raise
|
14
|
+
rescue Aws::Errors::MissingCredentialsError
|
15
|
+
error t("errors.MissingCredentialsError")
|
16
|
+
raise
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require_relative "includes"
|
2
|
+
|
3
|
+
class AwsAssumeRole::Cli::Actions::ResetEnvironment < AwsAssumeRole::Cli::Actions::AbstractAction
|
4
|
+
include AwsAssumeRole::Ui
|
5
|
+
|
6
|
+
SHELL_STRINGS = {
|
7
|
+
sh: {
|
8
|
+
env_command: "unset %<key>s; ",
|
9
|
+
},
|
10
|
+
csh: {
|
11
|
+
env_command: "unset %<key>s; ",
|
12
|
+
},
|
13
|
+
fish: {
|
14
|
+
env_command: "set -ex %<key>s; ",
|
15
|
+
footer: "commands.reset_environment.shells.fish",
|
16
|
+
},
|
17
|
+
powershell: {
|
18
|
+
env_command: "remove-item ENV:%<key>s; ",
|
19
|
+
footer: "commands.reset_environment.shells.powershell",
|
20
|
+
},
|
21
|
+
}.freeze
|
22
|
+
|
23
|
+
CommandSchema = proc do
|
24
|
+
required(:shell_type).value(included_in?: SHELL_STRINGS.stringify_keys.keys)
|
25
|
+
end
|
26
|
+
|
27
|
+
def act_on(config)
|
28
|
+
shell_strings = SHELL_STRINGS[config.shell_type.to_sym]
|
29
|
+
str = ""
|
30
|
+
%w(AWS_ACCESS_KEY_ID
|
31
|
+
AWS_SECRET_ACCESS_KEY
|
32
|
+
AWS_SESSION_TOKEN
|
33
|
+
AWS_PROFILE
|
34
|
+
AWS_ASSUME_ROLE_LOG_LEVEL
|
35
|
+
GLI_DEBUG
|
36
|
+
AWS_ASSUME_ROLE_KEYRING_BACKEND).each do |key|
|
37
|
+
str << format(shell_strings[:env_command], key: key) if ENV.fetch(key, false)
|
38
|
+
end
|
39
|
+
str << "# #{pastel.yellow t(shell_strings.fetch(:footer, 'commands.set_environment.shells.others'))}"
|
40
|
+
puts str
|
41
|
+
rescue KeyError, Aws::Errors::NoSuchProfileError
|
42
|
+
error format(t("errors.NoSuchProfileError"), config.profile)
|
43
|
+
raise
|
44
|
+
rescue Aws::Errors::MissingCredentialsError
|
45
|
+
error t("errors.MissingCredentialsError")
|
46
|
+
raise
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require_relative "includes"
|
2
|
+
require_relative "../../runner"
|
3
|
+
require_relative "../../credentials/factories/default_chain_provider"
|
4
|
+
|
5
|
+
class AwsAssumeRole::Cli::Actions::Run < AwsAssumeRole::Cli::Actions::AbstractAction
|
6
|
+
include AwsAssumeRole::Ui
|
7
|
+
|
8
|
+
CommandSchema = proc do
|
9
|
+
required(:profile).maybe
|
10
|
+
optional(:region) { filled? > format?(REGION_REGEX) }
|
11
|
+
optional(:serial_number) { filled? > format?(MFA_REGEX) }
|
12
|
+
required(:role_arn).maybe
|
13
|
+
required(:role_session_name).maybe
|
14
|
+
required(:duration_seconds).maybe
|
15
|
+
rule(role_specification: [:profile, :role_arn, :role_session_name, :duration_seconds]) do |p, r, s, d|
|
16
|
+
(p.filled? | p.empty? & r.filled?) & (r.filled? > s.filled? & d.filled?)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def act_on(config)
|
21
|
+
credentials = try_for_credentials config.to_h
|
22
|
+
unless config.args.empty?
|
23
|
+
Runner.new(config.args,
|
24
|
+
environment: { "AWS_DEFAULT_REGION" => resolved_region },
|
25
|
+
credentials: credentials)
|
26
|
+
end
|
27
|
+
rescue KeyError, Aws::Errors::NoSuchProfileError
|
28
|
+
error format(t("errors.NoSuchProfileError"), config.profile)
|
29
|
+
raise
|
30
|
+
rescue Aws::Errors::MissingCredentialsError
|
31
|
+
error t("errors.MissingCredentialsError")
|
32
|
+
raise
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require_relative "includes"
|
2
|
+
require_relative "../../credentials/factories/default_chain_provider"
|
3
|
+
|
4
|
+
class AwsAssumeRole::Cli::Actions::SetEnvironment < AwsAssumeRole::Cli::Actions::AbstractAction
|
5
|
+
include AwsAssumeRole::Ui
|
6
|
+
|
7
|
+
SHELL_STRINGS = {
|
8
|
+
sh: {
|
9
|
+
env_command: "%<key>s=%<value>s; export %<key>s; ",
|
10
|
+
},
|
11
|
+
csh: {
|
12
|
+
env_command: "setenv %<key>s %<value>s; ",
|
13
|
+
},
|
14
|
+
fish: {
|
15
|
+
env_command: "set -x %<key>s %<value>s; ",
|
16
|
+
footer: "commands.set_environment.shells.fish",
|
17
|
+
},
|
18
|
+
powershell: {
|
19
|
+
env_command: "set-item ENV:%<key>s %<value>s; ",
|
20
|
+
footer: "commands.set_environment.shells.powershell",
|
21
|
+
},
|
22
|
+
}.freeze
|
23
|
+
|
24
|
+
CommandSchema = proc do
|
25
|
+
optional(:profile).filled?
|
26
|
+
optional(:region) { filled? > format?(REGION_REGEX) }
|
27
|
+
optional(:serial_number) { filled? > format?(MFA_REGEX) }
|
28
|
+
optional(:external_id) { filled? > format?(EXTERNAL_ID_REGEX) }
|
29
|
+
required(:shell_type).value(included_in?: SHELL_STRINGS.stringify_keys.keys)
|
30
|
+
required(:role_arn).maybe { filled? > format?(ROLE_REGEX) }
|
31
|
+
required(:role_session_name).maybe { filled? > format?(ROLE_SESSION_NAME_REGEX) }
|
32
|
+
required(:duration_seconds).maybe
|
33
|
+
rule(role_specification: [:profile, :role_arn, :role_session_name, :duration_seconds]) do |p, r, s, d|
|
34
|
+
(p.filled? | p.empty? & r.filled?) & (r.filled? > s.filled? & d.filled?)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def act_on(config)
|
39
|
+
credentials = try_for_credentials config.to_h
|
40
|
+
shell_strings = SHELL_STRINGS[config.shell_type.to_sym]
|
41
|
+
str = ""
|
42
|
+
[
|
43
|
+
[:access_key_id, "AWS_ACCESS_KEY_ID"],
|
44
|
+
[:secret_access_key, "AWS_SECRET_ACCESS_KEY"],
|
45
|
+
[:session_token, "AWS_SESSION_TOKEN"],
|
46
|
+
].each do |key|
|
47
|
+
value = credentials.credentials.send key[0]
|
48
|
+
next if value.blank?
|
49
|
+
str << format(shell_strings[:env_command], key: key[1], value: value)
|
50
|
+
end
|
51
|
+
str << "# #{pastel.yellow t(shell_strings.fetch(:footer, 'commands.set_environment.shells.others'))}"
|
52
|
+
puts str
|
53
|
+
rescue KeyError, Aws::Errors::NoSuchProfileError
|
54
|
+
error format(t("errors.NoSuchProfileError"), config.profile)
|
55
|
+
raise
|
56
|
+
rescue Aws::Errors::MissingCredentialsError
|
57
|
+
error t("errors.MissingCredentialsError")
|
58
|
+
raise
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative "includes"
|
2
|
+
require_relative "../../credentials/factories/default_chain_provider"
|
3
|
+
|
4
|
+
class AwsAssumeRole::Cli::Actions::Test < AwsAssumeRole::Cli::Actions::AbstractAction
|
5
|
+
include AwsAssumeRole::Ui
|
6
|
+
|
7
|
+
CommandSchema = proc do
|
8
|
+
required(:profile).maybe
|
9
|
+
optional(:region) { filled? > format?(REGION_REGEX) }
|
10
|
+
optional(:serial_number) { filled? > format?(MFA_REGEX) }
|
11
|
+
required(:role_arn).maybe
|
12
|
+
required(:role_session_name).maybe
|
13
|
+
required(:duration_seconds).maybe
|
14
|
+
rule(role_specification: [:profile, :role_arn, :role_session_name, :duration_seconds]) do |p, r, s, d|
|
15
|
+
(p.filled? | p.empty? & r.filled?) & (r.filled? > s.filled? & d.filled?)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def act_on(config)
|
20
|
+
credentials = try_for_credentials config.to_h
|
21
|
+
client = Aws::STS::Client.new(credentials: credentials, region: resolved_region)
|
22
|
+
identity = client.get_caller_identity
|
23
|
+
out format(t("commands.test.output"), identity.account, identity.arn, identity.user_id)
|
24
|
+
rescue KeyError, Aws::Errors::NoSuchProfileError
|
25
|
+
error format(t("errors.NoSuchProfileError"), config.profile)
|
26
|
+
raise
|
27
|
+
rescue Aws::Errors::MissingCredentialsError
|
28
|
+
error t("errors.MissingCredentialsError")
|
29
|
+
raise
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative "../actions/configure_profile"
|
2
|
+
require_relative "../actions/configure_role_assumption"
|
3
|
+
|
4
|
+
module AwsAssumeRole::Cli
|
5
|
+
desc t "commands.configure.desc"
|
6
|
+
long_desc t "commands.configure.long_desc"
|
7
|
+
command :configure do |c|
|
8
|
+
c.flag [:p, "profile"], desc: t("options.profile_name")
|
9
|
+
c.action do |global_options, options, args|
|
10
|
+
AwsAssumeRole::Cli::Actions::ConfigureProfile.new(global_options, options, args)
|
11
|
+
end
|
12
|
+
|
13
|
+
c.desc t "commands.configure.desc"
|
14
|
+
c.long_desc t "commands.configure.long_desc"
|
15
|
+
c.command :role do |r|
|
16
|
+
r.flag ["source-profile"], desc: t("options.source_profile")
|
17
|
+
r.flag ["role-session-name"], desc: t("options.role_session_name")
|
18
|
+
r.flag ["role-arn"], desc: t("options.role_arn")
|
19
|
+
r.flag ["mfa-serial"], desc: t("options.mfa_serial")
|
20
|
+
r.flag ["region"], desc: t("options.region")
|
21
|
+
r.flag ["external-id"], desc: t("options.external_id")
|
22
|
+
r.flag ["duration-seconds"], desc: t("options.duration_seconds"), default_value: 3600
|
23
|
+
|
24
|
+
r.action do |global_options, options, args|
|
25
|
+
AwsAssumeRole::Cli::Actions::ConfigureRoleAssumption.new(global_options, options, args)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative "../actions/console"
|
2
|
+
|
3
|
+
module AwsAssumeRole::Cli
|
4
|
+
desc t "commands.console.desc"
|
5
|
+
command :console do |c|
|
6
|
+
c.flag [:p, "profile"], desc: t("options.profile_name")
|
7
|
+
c.flag ["role-session-name"], desc: t("options.role_session_name")
|
8
|
+
c.flag ["role-arn"], desc: t("options.role_arn")
|
9
|
+
c.flag ["mfa-serial"], desc: t("options.mfa_serial")
|
10
|
+
c.flag ["region"], desc: t("options.region")
|
11
|
+
c.flag ["external-id"], desc: t("options.external_id")
|
12
|
+
c.flag ["duration-seconds"], desc: t("options.duration_seconds"), default_value: 3600
|
13
|
+
c.action do |global_options, options, args|
|
14
|
+
AwsAssumeRole::Cli::Actions::Console.new(global_options, options, args)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require_relative "../actions/delete_profile"
|
2
|
+
|
3
|
+
module AwsAssumeRole::Cli
|
4
|
+
desc t "commands.delete.desc"
|
5
|
+
command :delete do |c|
|
6
|
+
c.flag [:p, "profile"], desc: t("options.profile_name")
|
7
|
+
c.action do |global_options, options, args|
|
8
|
+
AwsAssumeRole::Cli::Actions::DeleteProfile.new(global_options, options, args)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require_relative "../actions/set_environment"
|
2
|
+
require_relative "../actions/reset_environment"
|
3
|
+
|
4
|
+
module AwsAssumeRole::Cli
|
5
|
+
desc t "commands.set_environment.desc"
|
6
|
+
long_desc t "commands.set_environment.long_desc"
|
7
|
+
command :environment do |c|
|
8
|
+
desc t "commands.set_environment.desc"
|
9
|
+
long_desc t "commands.set_environment.long_desc"
|
10
|
+
c.command :set do |s|
|
11
|
+
s.flag [:p, "profile"], desc: t("options.profile_name")
|
12
|
+
s.flag [:s, "shell-type"], desc: t("options.shell_type"), default_value: "sh"
|
13
|
+
s.flag ["role-session-name"], desc: t("options.role_session_name")
|
14
|
+
s.flag ["role-arn"], desc: t("options.role_arn")
|
15
|
+
s.flag ["mfa-serial"], desc: t("options.mfa_serial")
|
16
|
+
s.flag ["region"], desc: t("options.region")
|
17
|
+
s.flag ["external-id"], desc: t("options.external_id")
|
18
|
+
s.flag ["duration-seconds"], desc: t("options.duration_seconds"), default_value: 3600
|
19
|
+
s.action do |global_options, options, args|
|
20
|
+
AwsAssumeRole::Cli::Actions::SetEnvironment.new(global_options, options, args)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
desc t "commands.reset_environment.desc"
|
25
|
+
long_desc t "commands.reset_environment.long_desc"
|
26
|
+
c.command :reset do |s|
|
27
|
+
s.action do |global_options, options, args|
|
28
|
+
AwsAssumeRole::Cli::Actions::ResetEnvironment.new(global_options, options, args)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require_relative "../actions/list_profiles"
|
2
|
+
|
3
|
+
module AwsAssumeRole::Cli
|
4
|
+
desc t "commands.list.desc"
|
5
|
+
command :list do |c|
|
6
|
+
c.action do |global_options, options, args|
|
7
|
+
AwsAssumeRole::Cli::Actions::ListProfiles.new(global_options, options, args)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require_relative "../actions/migrate_profile"
|
2
|
+
|
3
|
+
module AwsAssumeRole::Cli
|
4
|
+
desc t "commands.migrate.desc"
|
5
|
+
command :migrate do |c|
|
6
|
+
c.flag [:p, "profile"], desc: t("options.profile_name")
|
7
|
+
c.action do |global_options, options, args|
|
8
|
+
AwsAssumeRole::Cli::Actions::MigrateProfile.new(global_options, options, args)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative "../actions/run"
|
2
|
+
|
3
|
+
module AwsAssumeRole::Cli
|
4
|
+
desc t "commands.run.desc"
|
5
|
+
command :run do |c|
|
6
|
+
c.flag [:p, "profile"], desc: t("options.profile_name")
|
7
|
+
c.flag ["role-session-name"], desc: t("options.role_session_name")
|
8
|
+
c.flag ["role-arn"], desc: t("options.role_arn")
|
9
|
+
c.flag ["mfa-serial"], desc: t("options.mfa_serial")
|
10
|
+
c.flag ["region"], desc: t("options.region")
|
11
|
+
c.flag ["external-id"], desc: t("options.external_id")
|
12
|
+
c.flag ["duration-seconds"], desc: t("options.duration_seconds"), default_value: 3600
|
13
|
+
c.action do |global_options, options, args|
|
14
|
+
AwsAssumeRole::Cli::Actions::Run.new(global_options, options, args)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative "../actions/test"
|
2
|
+
|
3
|
+
module AwsAssumeRole::Cli
|
4
|
+
desc t "commands.test.desc"
|
5
|
+
command :test do |c|
|
6
|
+
c.flag [:p, "profile"], desc: t("options.profile_name")
|
7
|
+
c.flag ["role-session-name"], desc: t("options.role_session_name")
|
8
|
+
c.flag ["role-arn"], desc: t("options.role_arn")
|
9
|
+
c.flag ["mfa-serial"], desc: t("options.mfa_serial")
|
10
|
+
c.flag ["region"], desc: t("options.region")
|
11
|
+
c.flag ["external-id"], desc: t("options.external_id")
|
12
|
+
c.flag ["duration-seconds"], desc: t("options.duration_seconds"), default_value: 3600
|
13
|
+
c.switch ["no-profile"], desc: t("options.duration_seconds"), default_value: false
|
14
|
+
c.action do |global_options, options, args|
|
15
|
+
AwsAssumeRole::Cli::Actions::Test.new(global_options, options, args)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative "includes"
|
2
|
+
|
3
|
+
module AwsAssumeRole
|
4
|
+
class Configuration
|
5
|
+
extend Dry::Configurable
|
6
|
+
Types = Dry::Types.module
|
7
|
+
|
8
|
+
setting(:backend_plugin, ENV.fetch("AWS_ASSUME_ROLE_KEYRING_PLUGIN", nil)) do |value|
|
9
|
+
Types::Coercible::String[value]
|
10
|
+
end
|
11
|
+
|
12
|
+
setting(:backend, ENV.fetch("AWS_ASSUME_ROLE_KEYRING_BACKEND", "automatic")) do |value|
|
13
|
+
value == "automatic" ? nil : Types::Coercible::String[value]
|
14
|
+
end
|
15
|
+
|
16
|
+
setting(:log_level, ENV.fetch("AWS_ASSUME_ROLE_LOG_LEVEL", "WARN"))
|
17
|
+
end
|
18
|
+
Config = Configuration.config
|
19
|
+
end
|