dice_bag 0.6.0 → 0.7.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.
@@ -10,18 +10,18 @@ module DiceBag
10
10
  #is called and dice_bag can find what software is used in this project
11
11
  class Command
12
12
 
13
- def write_all
13
+ def write_all(params = {})
14
14
  Project.templates_to_generate.each do |template|
15
- write(template)
15
+ write(template, params)
16
16
  end
17
17
  end
18
18
 
19
- def write(template_name)
19
+ def write(template_name, params = {})
20
20
  template_file = TemplateFile.new(template_name)
21
21
  template_file.assert_existence
22
22
  config_file = ConfigFile.new(template_name)
23
23
 
24
- template_file.create_file(config_file)
24
+ template_file.create_file(config_file, params)
25
25
  end
26
26
 
27
27
 
@@ -5,7 +5,7 @@ require 'dice_bag/version'
5
5
  module DiceBag
6
6
  module DiceBagFile
7
7
  attr_reader :file, :filename
8
- @@force = false
8
+ @@overwrite_all = false
9
9
 
10
10
  def assert_existence
11
11
  unless File.exists?(@file)
@@ -20,9 +20,7 @@ module DiceBag
20
20
  end
21
21
 
22
22
  def should_write?(new_contents)
23
- #we always overwrite if we are inside an script or we are not development
24
- return true if @@force || !$stdin.tty? || ENV['RAILS_ENV'] == 'test' || ENV['RAILS_ENV'] == 'production'
25
- return true if !File.exists?(file)
23
+ return true if @@overwrite_all || !File.exists?(file)
26
24
  return false if diff(file, new_contents).empty?
27
25
 
28
26
  while true
@@ -35,7 +33,7 @@ module DiceBag
35
33
  when 'n'
36
34
  return false
37
35
  when 'a'
38
- return @@force = true
36
+ return @@overwrite_all = true
39
37
  when 'q'
40
38
  exit
41
39
  when 'd'
@@ -0,0 +1,39 @@
1
+ module DiceBag
2
+ class PrivateKey
3
+
4
+ attr_accessor :private_key
5
+ @@header = "-----BEGIN RSA PRIVATE KEY-----"
6
+ @@footer = "-----END RSA PRIVATE KEY-----"
7
+
8
+ def initialize(key)
9
+ @private_key = key
10
+ end
11
+
12
+ def is_valid_private_key?
13
+ require 'openssl'
14
+ begin
15
+ OpenSSL::PKey::RSA.new @private_key
16
+ return true
17
+ rescue => e
18
+ p e.message
19
+ p e.backtrace
20
+ return false
21
+ end
22
+ end
23
+
24
+ def to_rsa_format!
25
+ strip_down_key
26
+ body = @private_key.split(/\s+/)
27
+ @private_key = [@@header, body, @@footer].flatten.join("\n")
28
+ end
29
+
30
+ private
31
+
32
+ def strip_down_key
33
+ @private_key.gsub!(@@header,"")
34
+ @private_key.gsub!(@@footer,"")
35
+ @private_key.strip!
36
+ end
37
+
38
+ end
39
+ end
@@ -1,28 +1,33 @@
1
1
  require 'erb'
2
2
  require 'dice_bag/command'
3
3
 
4
- desc "Configure the application from the environment. It creates template files if you need and their config files"
4
+ desc "Populate all templates using values from the environment to create configuration files"
5
5
  task :config => ['config:all']
6
6
 
7
7
  namespace :config do
8
- desc "Create all the files from their templates in config/"
8
+ # Deprecated, present only for backward compatibility.
9
9
  task :all do
10
10
  DiceBag::Command.new.write_all
11
11
  end
12
12
 
13
- desc "Recreate the file passed as parameter from its template"
13
+ desc "As per the config task but automatically overwrites pre-existing configuration files"
14
+ task :deploy do
15
+ DiceBag::Command.new.write_all(:deploy => true)
16
+ end
17
+
18
+ desc "Populate just the specified template to create the associated configuration file"
14
19
  task :file, :filename do |t, args|
15
20
  filename = args[:filename]
16
21
  raise "A filename needs to be provided" if filename.nil?
17
22
  DiceBag::Command.new.write(filename)
18
23
  end
19
24
 
20
- desc "Generates all the template files needed by this project, named as the parameter."
25
+ desc "Generate all configuration file templates needed by this project"
21
26
  task :generate_all do
22
27
  DiceBag::Command.new.generate_all_templates
23
28
  end
24
29
 
25
- desc "Regenerate a given template, params: filename of the template, location for the generated file[optional]"
30
+ desc "Generate just the specified template, optionally in the specified location"
26
31
  task :generate, :filename, :location do |t, args|
27
32
  filename = args[:filename]
28
33
  location = args[:location]
@@ -19,7 +19,7 @@ module DiceBag
19
19
  @file = Project.config_files(name)
20
20
  end
21
21
 
22
- def create_file(config_file)
22
+ def create_file(config_file, params)
23
23
  # By passing "<>" we're trimming trailing newlines on lines that are
24
24
  # nothing but ERB blocks (see documentation). This is useful for files
25
25
  # like mauth_key where we want to control newlines carefully.
@@ -30,7 +30,7 @@ module DiceBag
30
30
  warning = Warning.new(@filename)
31
31
  contents = template.result(binding)
32
32
 
33
- return unless config_file.should_write?(contents)
33
+ return unless params[:deploy] || config_file.should_write?(contents)
34
34
  config_file.write(contents)
35
35
  puts "File '#{config_file.file}' created"
36
36
  end
@@ -1,8 +1,21 @@
1
+ require 'dice_bag/private_key'
2
+
1
3
  module DiceBag
2
4
  module TemplateHelpers
3
5
  def generate_private_key
4
6
  require 'openssl'
5
7
  OpenSSL::PKey::RSA.generate(2048)
6
8
  end
9
+
10
+ def ensure_is_private_key(key)
11
+ pkey = PrivateKey.new key.dup
12
+ pkey.to_rsa_format!
13
+ if pkey.is_valid_private_key?
14
+ pkey.private_key
15
+ else
16
+ raise "The private key provided is invalid"
17
+ end
18
+ end
19
+
7
20
  end
8
21
  end
@@ -3,7 +3,7 @@
3
3
  <% [:development, :test, :production].each do |env| %>
4
4
  <%= env %>:
5
5
  adapter: <%= configured[env].database_driver || 'mysql2' %>
6
- database: <%= configured[env].database_name || "PROJECT_NAME_#{env}" %>
6
+ database: <%= configured[env].database_name || "PROJECT_NAME_#{env}" %><%= ('<'+'%=ENV["TEST_ENV_NUMBER"] %'+'>') if (env == :test) %>
7
7
  username: <%= configured[env].database_username || 'root' %>
8
8
  password: <%= configured[env].database_password %>
9
9
  host: <%= configured[env].database_host || 'localhost' %>
@@ -1,3 +1,3 @@
1
1
  module DiceBag
2
- VERSION = '0.6.0'
2
+ VERSION = '0.7.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dice_bag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-03-25 00:00:00.000000000Z
13
+ date: 2013-05-28 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
17
- requirement: &71579610 !ruby/object:Gem::Requirement
17
+ requirement: &86043750 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *71579610
25
+ version_requirements: *86043750
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: aruba
28
- requirement: &71579360 !ruby/object:Gem::Requirement
28
+ requirement: &86043500 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 0.5.1
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *71579360
36
+ version_requirements: *86043500
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rspec
39
- requirement: &71579110 !ruby/object:Gem::Requirement
39
+ requirement: &86043250 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: '2.12'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *71579110
47
+ version_requirements: *86043250
48
48
  description:
49
49
  email:
50
50
  - asmith@mdsol.com
@@ -70,6 +70,7 @@ files:
70
70
  - lib/dice_bag/templates/google_analytics.yml.dice
71
71
  - lib/dice_bag/templates/aws.yml.dice
72
72
  - lib/dice_bag/railtie.rb
73
+ - lib/dice_bag/private_key.rb
73
74
  - lib/dice_bag/configuration.rb
74
75
  - lib/dice_bag/tasks/config.rake
75
76
  - lib/dice_bag/available_templates.rb