switchcreds 0.1.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7b6a7baed34dd8494411e042ff3153b1f06bc93a
4
+ data.tar.gz: dfabfa8b9121c76627ed9de33d14ba9147914977
5
+ SHA512:
6
+ metadata.gz: d5a05f1a248454da3b6cbc914a8af145bd811d78c5f803a1ff727d6fd1ecd8628b6a70bb31f1d04739d857a6a7357de3c96e053f0994c88477a161a7bbfb1ced
7
+ data.tar.gz: 3fe299ca64645ed1bf7c852446f6bb5c6a9138518912d4d5dfc6643f4b80c94febe75f29d489be10ec12c594446d12ea7700ad2da9312786c0664b6799d210ff
data/bin/switchcreds ADDED
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env ruby
2
+ require 'switchcreds'
3
+ require 'colorize'
4
+ require 'optparse'
5
+ require 'pp'
6
+
7
+ class ParseOpts
8
+ def self.banner
9
+ puts "
10
+ ███████╗██╗ ██╗██╗████████╗ ██████╗██╗ ██╗ ██████╗██████╗ ███████╗██████╗ ███████╗
11
+ ██╔════╝██║ ██║██║╚══██╔══╝██╔════╝██║ ██║██╔════╝██╔══██╗██╔════╝██╔══██╗██╔════╝
12
+ ███████╗██║ █╗ ██║██║ ██║ ██║ ███████║██║ ██████╔╝█████╗ ██║ ██║███████╗
13
+ ╚════██║██║███╗██║██║ ██║ ██║ ██╔══██║██║ ██╔══██╗██╔══╝ ██║ ██║╚════██║
14
+ ███████║╚███╔███╔╝██║ ██║ ╚██████╗██║ ██║╚██████╗██║ ██║███████╗██████╔╝███████║
15
+ ╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═════╝ ╚══════╝#{SwitchCreds::VERSION}
16
+
17
+ ".colorize(:green)
18
+ end
19
+
20
+ def self.parse(args)
21
+ arg_arragy = args
22
+
23
+ arg_arragy.each { |arg| puts arg }
24
+ options = {}
25
+
26
+ opt_parse = OptionParser.new do |opts|
27
+ opts.banner = "Usage: switchcreds [config_file_to_switch_to]\nOptions: switchcreds [options]"
28
+
29
+ opts.on('-v','--version','Prints the current version of switchcreds') do |v|
30
+ puts SwitchCreds::VERSION.colorize(:default)
31
+ exit
32
+ end
33
+
34
+ opts.on('-h','--help','Shows help') do
35
+ banner
36
+ puts opts
37
+ exit
38
+ end
39
+
40
+ opts.on('-l','--list','List available AWS credentials files') do |l|
41
+ options[:list] = l
42
+ banner
43
+ end
44
+
45
+ opts.on('-s','--switch','Initiate switch logic') do |s|
46
+ options[:switch] = s
47
+ end
48
+
49
+ end
50
+
51
+ opt_parse.parse!(args)
52
+ if options == {}
53
+ puts 'Usage: switchcreds -s (try -h, --help for more info)'.colorize(:default)
54
+ exit
55
+ end
56
+ return options
57
+ end
58
+ end
59
+
60
+ options = ParseOpts.parse(ARGV)
61
+
62
+ if options[:list]
63
+ puts "Your available AWS credentials:".colorize(:green)
64
+ creds = SwitchCreds::get_creds()
65
+ creds.each do |file|
66
+ puts "\t- #{file}"
67
+ end
68
+ end
69
+
70
+ if options[:switch]
71
+ SwitchCreds::switch_creds
72
+ end
@@ -0,0 +1,70 @@
1
+ require "switchcreds/version"
2
+ require "os"
3
+
4
+ module SwitchCreds
5
+ def self.get_creds
6
+ # detect the OS and user to find the .aws directory
7
+ if OS.mac?
8
+ $user = Dir.home[7, Dir.home.length].to_s
9
+ elsif OS.windows?
10
+ $user = Dir.home[9, Dir.home.length].to_s
11
+ # when OS.linux?
12
+ # TODO: build out Linux implentation (other OSs too?)
13
+ else
14
+ puts "ERROR:".colorize(:red) + " Neither WINDOWS nor MAC OS detected.\n Unable to proceed."
15
+ end
16
+ dir = Dir.entries("/Users/#{$user}/.aws")
17
+ creds = []
18
+ dir.each do |f|
19
+ if f.length > 11 && f[0,12] == "credentials_"
20
+ creds.push(f[12, f.length])
21
+ end
22
+ end
23
+ creds
24
+ end
25
+
26
+ def self.switch_creds
27
+ creds = get_creds()
28
+ puts "
29
+ ==========================================================================================================================================================
30
+ == === ==== ==== == == ==== === ==== ======= ==== ========= ==== ==== == ==== == ==== === ==== === ==
31
+ = ==== == ==== ==== === ====== ====== === == ==== ========== ====== == ======== ==== ==== == ==== === ==== === == ==== == ==== =
32
+ = ==== == ==== ==== === ====== ===== ======== ==== ========== ===== ==== ======= ==== ==== == ==== === === ======== ==== == ==== =
33
+ == ======= ==== ==== === ====== ===== ======== ==== ========== ===== ==== ======= ==== ==== == ==== === === ======== ==== ======= ==
34
+ ==== ===== == == ==== ====== ===== ======== ========== ===== ==== ======= == == === === === ======== ====== ===
35
+ ====== ==== == == ==== ====== ===== ======== ==== ========== ===== ==== ======== == == === ==== === === ======== ==== ===== ====
36
+ = ==== === == == ==== ====== ===== ======== ==== ========== ===== ==== ======== == == === ==== === === ======== ==== ===========
37
+ = ==== ==== == ===== ====== ====== === == ==== ========== ====== == ========== == ==== ==== === ==== === == ==== ===== ====
38
+ == ====== ==== ===== ===== ======= === ==== ========== ======= ============ ==== ===== ==== == ==== === ==== ===== ====
39
+ ==========================================================================================================================================================
40
+ \n".colorize(:blue)
41
+
42
+ i = 0
43
+ creds.each do |o|
44
+ puts "\t#{i}: #{o}"
45
+ i += 1
46
+ end
47
+
48
+ selection = STDIN.gets.chomp.to_i
49
+ selection = creds[selection]
50
+
51
+ IO.copy_stream("/Users/#{$user}/.aws/credentials_#{selection}", "/Users/#{$user}/.aws/credentials")
52
+
53
+ 32.times { print "*".colorize(:green) }
54
+ puts "\n* Using #{selection.upcase!.colorize(:red)} creds now *\n"
55
+ 32.times { print "*".colorize(:green) }
56
+ puts "\n"
57
+ end
58
+
59
+ def which_creds
60
+ creds = get_creds
61
+ creds.each do |cred|
62
+ if FileUtils.compare_file("/Users/#{$user}/.aws/credentials", "/Users/#{$user}/.aws/credentials_#{cred}")
63
+ 32.times { print "*".colorize(:green) }
64
+ puts "\n* You're using #{cred.upcase!.colorize(:red)} creds.*\n"
65
+ 32.times { print "*".colorize(:green) }
66
+ puts "\n"
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,3 @@
1
+ module SwitchCreds
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: switchcreds
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Chris Laflamme
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-01-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.15'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.15'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: Write a longer description or delete this line.
56
+ email:
57
+ - chrislaflamme1@gmail.com
58
+ executables:
59
+ - switchcreds
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - bin/switchcreds
64
+ - lib/switchcreds.rb
65
+ - lib/switchcreds/version.rb
66
+ homepage:
67
+ licenses:
68
+ - MIT
69
+ metadata: {}
70
+ post_install_message:
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubyforge_project:
86
+ rubygems_version: 2.6.14
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: Write a short summary, because Rubygems requires one.
90
+ test_files: []