tacoma 1.0.13 → 1.0.14

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
  SHA1:
3
- metadata.gz: 8c9da06bc8a4fc6ad6ef4e2b71e5b27446472442
4
- data.tar.gz: 6fa8578c3510a586acb5218ada7f7a8bc3fab195
3
+ metadata.gz: f2cc55778f5dd0d7e576f56f0483072d248a209c
4
+ data.tar.gz: ea54584fe182d4cfa754d721892d52d968035964
5
5
  SHA512:
6
- metadata.gz: e697d3fcc7bae802ae2cbee315bc6e930682810ed979970901ce397b26c19dd1b6871dfd6633b9b11ac37304dd7ccc1a1ea32f7d64e89c809eb7eb6f89a1dd72
7
- data.tar.gz: d1bd30c973cbe8e6cbe4f993b16d1e28bedb6fb788d363cc4e0cb928d2f9a4c046c8375ea17ee0941aa81111f3e09d09ed6c3703ce59e0f00d33dd1f74bad410
6
+ metadata.gz: 0393a9b07ac4a55666859553037e39fddc37cea4521cac1d78ce95d087663e8eca4f9eb2a107934930c9f182bc82eb0121c8849c4a3de2dbd68ef281ba37f22f
7
+ data.tar.gz: a0f8319b113b50a59f13ea5b5c1ff5ef5c974f806e83be3dcb19d7f0ec31b42b6a8d3e88bc7af2031c4b4875c029002184728b6d0534323a52a3bb17e82ee372
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ 1.0.14
2
+ - New subsection in tacoma.yml file, allowing to define settings for s3cmd on a per-project basis. See the
3
+ README for more info
1
4
  1.0.11
2
5
  - Current tacoma environment gets cached in $HOME/.tacoma_current_environment
3
6
  1.0.10
data/README.md CHANGED
@@ -13,20 +13,22 @@ Tacoma needs a special file `.tacoma.yml` in your home directory. It can create
13
13
  tacoma install
14
14
 
15
15
  The format of the `.tacoma.yml` file is pretty straighforward
16
-
17
- project:
18
- aws_identity_file: "/path/to/pem/file/my_project.pem"
19
- aws_secret_access_key: "YOURSECRETACCESSKEY"
20
- aws_access_key_id: "YOURACCESSKEYID"
21
- region: "REGION"
22
- repo: "$HOME/projects/my_project"
23
- another_project:
24
- aws_identity_file: "/path/to/another_pem.pem"
25
- aws_secret_access_key: "ANOTHERECRETACCESSKEY"
26
- aws_access_key_id: "ANOTHERACCESSKEYID"
27
- region: "REGION"
28
- repo: "$HOME/projects/another_project"
29
-
16
+ ```yml
17
+ project:
18
+ aws_identity_file: "/path/to/pem/file/my_project.pem"
19
+ aws_secret_access_key: "YOURSECRETACCESSKEY"
20
+ aws_access_key_id: "YOURACCESSKEYID"
21
+ region: "REGION"
22
+ repo: "$HOME/projects/my_project"
23
+ another_project:
24
+ aws_identity_file: "/path/to/another_pem.pem"
25
+ aws_secret_access_key: "ANOTHERECRETACCESSKEY"
26
+ aws_access_key_id: "ANOTHERACCESSKEYID"
27
+ region: "REGION"
28
+ repo: "$HOME/projects/another_project"
29
+ s3cfg:
30
+ gpg_passphrase: my_gpg_passphrase
31
+ ```
30
32
  Once setup with a file like this, you can run
31
33
 
32
34
  tacoma list
@@ -50,7 +52,7 @@ Running `tacoma switch` with the `--with-exports` option will also echo shell ex
50
52
  Will display the current tacoma version and list all available configuration templates (providers).
51
53
 
52
54
  tacoma current
53
-
55
+
54
56
  Will display the currently active tacoma environment.
55
57
 
56
58
  If you don't indicate a specific region, tacoma will use the "eu-west-1" region by default.
data/bin/tacoma CHANGED
@@ -1,5 +1,4 @@
1
- #!/usr/bin/env ruby
1
+ #!/usr/bin/env ruby
2
2
  require_relative '../lib/tacoma'
3
3
 
4
4
  Tacoma::Command.start
5
-
@@ -1,24 +1,20 @@
1
1
  module CacheEnvironment
2
+ def environment_cache_path
3
+ "#{Dir.home}/.tacoma_current_environment"
4
+ end
2
5
 
3
- def environment_cache_path
4
- "#{Dir.home}/.tacoma_current_environment"
5
- end
6
-
7
- def update_environment_to_cache(environment)
8
- begin
9
- File.open(environment_cache_path, 'w') { |file| file.write(environment) }
10
- rescue
11
- puts "Cannot write at #{environment_cache_path}"
12
- end
13
- end
6
+ def update_environment_to_cache(environment)
7
+ File.open(environment_cache_path, 'w') { |file| file.write(environment) }
8
+ rescue StandardError
9
+ puts "Cannot write at #{environment_cache_path}"
10
+ end
14
11
 
15
- def read_environment_from_cache
16
- str = begin
17
- File.open(environment_cache_path, &:readline)
18
- rescue
19
- nil
20
- end
21
- str
12
+ def read_environment_from_cache
13
+ str = begin
14
+ File.open(environment_cache_path, &:readline)
15
+ rescue StandardError
16
+ nil
22
17
  end
23
-
18
+ str
19
+ end
24
20
  end
@@ -2,13 +2,9 @@ require 'yaml'
2
2
  require 'thor'
3
3
  require 'pathname'
4
4
 
5
-
6
5
  module Tacoma
7
-
8
-
9
-
10
6
  module Tool
11
- DEFAULT_AWS_REGION = 'eu-west-1'
7
+ DEFAULT_AWS_REGION = 'eu-west-1'.freeze
12
8
 
13
9
  class << self
14
10
  attr_accessor :aws_identity_file
@@ -16,29 +12,31 @@ module Tacoma
16
12
  attr_accessor :aws_access_key_id
17
13
  attr_accessor :region
18
14
  attr_accessor :repo
15
+ attr_accessor :s3cfg
19
16
 
20
- include CacheEnvironment
17
+ include CacheEnvironment
21
18
 
22
19
  def config
23
- filename = File.join(Dir.home, ".tacoma.yml")
24
- return YAML::load_file(filename)
20
+ filename = File.join(Dir.home, '.tacoma.yml')
21
+ YAML.load_file(filename)
25
22
  end
26
23
 
27
24
  def load_vars(environment)
28
25
  return false unless exists?(environment)
29
26
 
30
- config = Tool.config
27
+ config = Tool.config
31
28
  @aws_identity_file = config[environment]['aws_identity_file']
32
29
  @aws_secret_access_key = config[environment]['aws_secret_access_key']
33
30
  @aws_access_key_id = config[environment]['aws_access_key_id']
34
31
  @region = config[environment]['region'] || DEFAULT_AWS_REGION
35
32
  @repo = config[environment]['repo']
33
+ @s3cfg = config[environment]['s3cfg'] || {}
36
34
  validate_vars
37
35
  end
38
-
36
+
39
37
  # Assume there is a ~/.aws/credentials file with a valid format
40
38
  def current_environment
41
- read_environment_from_cache
39
+ read_environment_from_cache
42
40
  end
43
41
 
44
42
  private
@@ -46,7 +44,7 @@ module Tacoma
46
44
  # shows error message if any attr is missing
47
45
  # return false if any attr is missing to exit the program
48
46
  def validate_vars
49
- errors = self.instance_variables.map do |var|
47
+ errors = instance_variables.map do |var|
50
48
  next unless instance_variable_get(var).to_s.empty?
51
49
  "Cannot find #{var} key, check your YAML config file."
52
50
  end.compact
@@ -56,71 +54,64 @@ module Tacoma
56
54
 
57
55
  def exists?(environment)
58
56
  config = Tool.config
59
- if config.keys.include?(environment) == false
60
- puts "Cannot find #{environment} key, check your YAML config file"
61
- return false
62
- else
63
- return true
64
- end
57
+ return true if config.keys.include?(environment)
58
+ puts "Cannot find #{environment} key, check your YAML config file"
65
59
  end
66
60
  end
67
61
  end
68
62
 
69
63
  class Command < Thor
70
-
71
64
  include Thor::Actions
72
65
 
73
- include CacheEnvironment
66
+ include CacheEnvironment
74
67
 
75
- desc "list", "Lists all known AWS environments"
68
+ desc 'list', 'Lists all known AWS environments'
76
69
  def list
77
- Tool.config.keys.each do |key|
70
+ Tool.config.each_key do |key|
78
71
  puts key
79
72
  end
80
73
  end
81
74
 
82
- TOOLS = {fog: '.fog',
83
- boto: '.boto',
84
- s3cfg: '.s3cfg',
85
- route53: '.route53',
86
- aws_credentials: '.aws/credentials'}
75
+ TOOLS = { fog: '.fog',
76
+ boto: '.boto',
77
+ s3cfg: '.s3cfg',
78
+ route53: '.route53',
79
+ aws_credentials: '.aws/credentials' }.freeze
87
80
 
88
- desc "version", "Displays current tacoma version"
81
+ desc 'version', 'Displays current tacoma version'
89
82
  def version
90
83
  puts "tacoma, version #{Tacoma::VERSION}"
91
- puts "Configuration templates available for:"
84
+ puts 'Configuration templates available for:'
92
85
  TOOLS.each do |tool, config_path|
93
- puts " #{tool.to_s} => '~/#{config_path}'"
86
+ puts " #{tool} => '~/#{config_path}'"
94
87
  end
95
88
  end
96
89
 
97
- desc "current", "Displays current loaded tacoma environment"
90
+ desc 'current', 'Displays current loaded tacoma environment'
98
91
  def current
99
92
  puts Tool.current_environment
100
- return true
93
+ true
101
94
  end
102
-
103
- desc "switch ENVIRONMENT", "Prepares AWS config files for the providers. --with-exports will output environment variables"
95
+
96
+ desc 'switch ENVIRONMENT', 'Prepares AWS config files for the providers. --with-exports will output environment variables'
104
97
  option :'with-exports'
105
-
106
- def switch(environment)
107
98
 
99
+ def switch(environment)
108
100
  if Tool.load_vars(environment)
109
101
  @aws_identity_file = Tool.aws_identity_file
110
102
  @aws_secret_access_key = Tool.aws_secret_access_key
111
103
  @aws_access_key_id = Tool.aws_access_key_id
112
104
  @region = Tool.region
113
105
  @repo = Tool.repo
114
-
115
-
106
+ @s3cfg = Tool.s3cfg
116
107
 
117
108
  # set configurations for tools
118
109
  TOOLS.each do |tool, config_path|
119
- template_path = Pathname.new("#{self.class.source_root}/../template/#{tool}").realpath.to_s
110
+ template_path = build_template_path(tool)
120
111
  file_path = File.join(Dir.home, config_path)
121
- template template_path, file_path, :force => true
112
+ template template_path, file_path, force: true
122
113
  end
123
-
114
+
124
115
  system("ssh-add #{@aws_identity_file}")
125
116
  if options[:'with-exports']
126
117
  puts "export AWS_SECRET_ACCESS_KEY=#{@aws_secret_access_key}"
@@ -129,48 +120,50 @@ module Tacoma
129
120
  puts "export AWS_ACCESS_KEY_ID=#{@aws_access_key_id}"
130
121
  puts "export AWS_DEFAULT_REGION=#{@region}"
131
122
  end
132
-
123
+
133
124
  update_environment_to_cache(environment)
134
-
135
- return true
125
+
126
+ true
136
127
  else
137
- return false
128
+ false
138
129
  end
139
130
  end
140
131
 
141
- desc "cd ENVIRONMENT", "Change directory to the project path"
132
+ desc 'cd ENVIRONMENT', 'Change directory to the project path'
142
133
  def cd(environment)
143
- if switch(environment)
144
- Dir.chdir `echo #{@repo}`.strip
145
- puts "Welcome to the tacoma shell"
146
- shell = ENV['SHELL'].split('/').last
147
- options =
148
- case shell
149
- when 'zsh'
150
- ''
151
- else
152
- '--login'
153
- end
154
- system("#{shell} #{options}")
155
- Process.kill(:SIGQUIT, Process.getpgid(Process.ppid))
156
- end
134
+ return unless switch(environment)
135
+
136
+ Dir.chdir `echo #{@repo}`.strip
137
+ puts 'Welcome to the tacoma shell'
138
+ shell = ENV['SHELL'].split('/').last
139
+ options =
140
+ case shell
141
+ when 'zsh'
142
+ ''
143
+ else
144
+ '--login'
145
+ end
146
+ system("#{shell} #{options}")
147
+ Process.kill(:SIGQUIT, Process.getpgid(Process.ppid))
157
148
  end
158
149
 
159
- desc "install", "Create a sample ~/.tacoma.yml file"
150
+ desc 'install', 'Create a sample ~/.tacoma.yml file'
160
151
  def install
161
- if (File.exists?(File.join(Dir.home, ".tacoma.yml")))
152
+ if File.exist?(File.join(Dir.home, '.tacoma.yml'))
162
153
  puts "File ~/.tacoma.yml already present, won't overwrite"
163
154
  else
164
- template_path=Pathname.new("#{self.class.source_root}/../template/tacoma.yml").realpath.to_s
165
- new_path = File.join(Dir.home, ".tacoma.yml")
155
+ template_path = build_template_path('tacoma.yml')
156
+ new_path = File.join(Dir.home, '.tacoma.yml')
166
157
  template template_path, new_path
167
158
  end
168
159
  end
169
160
 
161
+ def build_template_path(template_name)
162
+ "#{self.class.source_root}/../template/#{template_name}".realpath.to_s
163
+ end
164
+
170
165
  def self.source_root
171
166
  File.dirname(__FILE__)
172
167
  end
173
-
174
168
  end
175
-
176
169
  end
@@ -1,3 +1,3 @@
1
1
  module Tacoma
2
- VERSION='1.0.13'
2
+ VERSION = '1.0.14'.freeze
3
3
  end
data/lib/template/s3cfg CHANGED
@@ -1,38 +1,38 @@
1
1
  [default]
2
2
  access_key = <%= @aws_access_key_id %>
3
- bucket_location = US
4
- cloudfront_host = cloudfront.amazonaws.com
5
- cloudfront_resource = /2010-07-15/distribution
6
- default_mime_type = binary/octet-stream
7
- delete_removed = False
8
- dry_run = False
9
- encoding = UTF-8
10
- encrypt = False
11
- follow_symlinks = False
12
- force = False
13
- get_continue = False
14
- gpg_command = None
15
- gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
16
- gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
17
- gpg_passphrase =
18
- guess_mime_type = True
19
- host_base = s3.amazonaws.com
20
- host_bucket = %(bucket)s.s3.amazonaws.com
21
- human_readable_sizes = False
22
- list_md5 = False
23
- log_target_prefix =
24
- preserve_attrs = True
25
- progress_meter = True
26
- proxy_host =
27
- proxy_port = 0
28
- recursive = False
29
- recv_chunk = 4096
30
- reduced_redundancy = False
3
+ bucket_location = <%= @s3cfg['bucket_location'] || 'US' %>
4
+ cloudfront_host = <%= @s3cfg['cloudfront_host'] || 'cloudfront.amazonaws.com' %>
5
+ cloudfront_resource = <%= @s3cfg['cloudfront_resource'] || '/2010-07-15/distribution' %>
6
+ default_mime_type = <%= @s3cfg['default_mime_type'] || 'binary/octet-stream' %>
7
+ delete_removed = <%= @s3cfg['delete_removed'] || 'False' %>
8
+ dry_run = <%= @s3cfg['dry_run'] || 'False' %>
9
+ encoding = <%= @s3cfg['encoding'] || 'UTF-8' %>
10
+ encrypt = <%= @s3cfg['encrypt'] || 'False' %>
11
+ follow_symlinks = <%= @s3cfg['follow_symlinks'] || 'False' %>
12
+ force = <%= @s3cfg['force'] || 'False' %>
13
+ get_continue = <%= @s3cfg['get_continue'] || 'False' %>
14
+ gpg_command = <%= @s3cfg['gpg_command'] || 'None' %>
15
+ gpg_decrypt = <%= @s3cfg['gpg_decrypt'] || '%(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s' %>
16
+ gpg_encrypt = <%= @s3cfg['gpg_encrypt'] || '%(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s' %>
17
+ gpg_passphrase = <%= @s3cfg['gpg_passphrase'] || '' %>
18
+ guess_mime_type = <%= @s3cfg['guess_mime_type'] || 'True' %>
19
+ host_base = <%= @s3cfg['host_base'] || 's3.amazonaws.com' %>
20
+ host_bucket = <%= @s3cfg['host_bucket'] || '%(bucket)s.s3.amazonaws.com' %>
21
+ human_readable_sizes = <%= @s3cfg['human_readable_sizes'] || 'False' %>
22
+ list_md5 = <%= @s3cfg['list_md5'] || 'False' %>
23
+ log_target_prefix = <%= @s3cfg['log_target_prefix'] || '' %>
24
+ preserve_attrs = <%= @s3cfg['preserve_attrs'] || 'True' %>
25
+ progress_meter = <%= @s3cfg['progress_meter'] || 'True' %>
26
+ proxy_host = <%= @s3cfg['proxy_host'] || '' %>
27
+ proxy_port = <%= @s3cfg['proxy_port'] || '0' %>
28
+ recursive = <%= @s3cfg['recursive'] || 'False' %>
29
+ recv_chunk = <%= @s3cfg['recv_chunk'] || '4096' %>
30
+ reduced_redundancy = <%= @s3cfg['reduced_redundancy'] || 'False' %>
31
31
  secret_key = <%= @aws_secret_access_key %>
32
- send_chunk = 4096
33
- simpledb_host = sdb.amazonaws.com
34
- skip_existing = False
35
- socket_timeout = 300
36
- urlencoding_mode = normal
37
- use_https = False
38
- verbosity = WARNING
32
+ send_chunk = <%= @s3cfg['send_chunk'] || '4096' %>
33
+ simpledb_host = <%= @s3cfg['simpledb_host'] || 'sdb.amazonaws.com' %>
34
+ skip_existing = <%= @s3cfg['skip_existing'] || 'False' %>
35
+ socket_timeout = <%= @s3cfg['socket_timeout'] || '300' %>
36
+ urlencoding_mode = <%= @s3cfg['urlencoding_mode'] || 'normal' %>
37
+ use_https = <%= @s3cfg['use_https'] || 'False' %>
38
+ verbosity = <%= @s3cfg['verbosity'] || 'WARNING' %>
data/tacoma.gemspec CHANGED
@@ -3,23 +3,22 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require 'tacoma/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "tacoma"
6
+ spec.name = 'tacoma'
7
7
  spec.version = Tacoma::VERSION
8
- spec.authors = ["Juan Lupión"]
9
- spec.email = ["pantulis@gmail.com"]
10
- spec.description = %q{Easy command line tool for AWS credentials management}
11
- spec.summary = "This tool reads a YAML file with the credentials for your AWS accounts and loads them into your environment."
12
- spec.homepage = "https://github.com/pantulis/tacoma"
13
- spec.license = "MIT"
8
+ spec.authors = ['Juan Lupión']
9
+ spec.email = ['pantulis@gmail.com']
10
+ spec.description = 'Easy command line tool for AWS credentials management'
11
+ spec.summary = 'This tool reads a YAML file with the credentials for your AWS accounts and loads them into your environment.'
12
+ spec.homepage = 'https://github.com/pantulis/tacoma'
13
+ spec.license = 'MIT'
14
14
 
15
- spec.files = `git ls-files`.split($\)
15
+ spec.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
16
16
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
- spec.require_paths = ["lib"]
18
+ spec.require_paths = ['lib']
19
19
 
20
-
21
20
  spec.add_runtime_dependency 'thor', '~> 0'
22
- spec.add_development_dependency "minitest", '~> 0'
23
- spec.add_development_dependency "bundler", '~> 0'
24
- spec.add_development_dependency "rake", '~> 0'
21
+ spec.add_development_dependency 'bundler', '~> 0'
22
+ spec.add_development_dependency 'minitest', '~> 0'
23
+ spec.add_development_dependency 'rake', '~> 0'
25
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tacoma
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.13
4
+ version: 1.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Lupión
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-01 00:00:00.000000000 Z
11
+ date: 2018-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: minitest
28
+ name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: bundler
42
+ name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"