class Souschef::Runner

Runner library that does all the hard work

Attributes

opts[RW]

Public Class Methods

new(opts) click to toggle source
# File lib/souschef/runner.rb, line 6
def initialize(opts)
  @opts = opts
  adjust_cb_path
  load_configuration unless @opts[:configure]
end

Public Instance Methods

run() click to toggle source

Public - Run Souschef

Returns nil

# File lib/souschef/runner.rb, line 15
def run
  Souschef::Print.header "Using Souschef profile: #{opts[:profile]}"

  if @opts[:scaffold]
    Souschef::Scaffold.new(@opts).start
  elsif @opts[:configure]
    verify_configure_input
    Souschef::Configure::Yaml.new(@opts)
  else
    Souschef::Print.header "Starting cookbook creation...\n"
    cookbook_runlist
  end
end

Private Instance Methods

adjust_cb_path() click to toggle source

Private - Adjust cookbook path

Return nil

# File lib/souschef/runner.rb, line 89
def adjust_cb_path
  if @opts[:path]
    @opts[path] = File.join(Dir.pwd, @opts[:path])
  else
    @opts[:path] = Dir.pwd
  end
end
cookbook_runlist() click to toggle source

Private - Create cookbook run list

Returns nil

# File lib/souschef/runner.rb, line 34
def cookbook_runlist
  verify_cookbook_creation

  Souschef::Print.header 'Berkshelf configuration'
  Souschef::Berkshelf.new(@opts).berks_create
  Souschef::Print.header 'Configure gemfile'
  Souschef::Gemfile.new(@opts).write
  Souschef::Print.header 'Create essential template files'
  Souschef::Template.run(@opts)
  # Mock Scaffold to generate default recipe and tests

  Souschef::Print.header 'Create default recipe and tests'
  Souschef::Scaffold.new(path: @opts[:path],
                         recipe: 'default',
                         profile: @opts[:profile],
                         force: true,
                         verbose: @opts[:verbose]).start

  Souschef::Print.header 'Testkitchen configuration'
  Souschef::Testkitchen.new(@opts).setup

  Souschef::Print.header "Don't forget to run bundle install!"
end
load_configuration() click to toggle source

Private - Load contents of .souschef.yml configuration

Returns nil

# File lib/souschef/runner.rb, line 100
def load_configuration
  @opts[:souschef] = Souschef::Config.read[@opts[:profile]]
end
verify_configure_input() click to toggle source

Private - Verify @opts values

Return nil

# File lib/souschef/runner.rb, line 61
def verify_configure_input
  if @opts[:maintainer_given] || @opts[:maintainer_email_given] ||
    @opts[:license_given]
    unless @opts[:configure]
      fail 'Please check Souschef options, you are missing --configure'
    end
  else
    fail 'Please check if you have all options for configuration selected'
  end
end
verify_cookbook_creation() click to toggle source

Private - Verify cookbook creation options

Return nil

# File lib/souschef/runner.rb, line 75
def verify_cookbook_creation
  fail 'You need to specify the cookbook name' if @opts[:cookbook].nil?
end
verify_scaffold_input() click to toggle source

Private - Verify Scaffold input

Return nil

# File lib/souschef/runner.rb, line 82
def verify_scaffold_input
  fail 'Recipe name is missing for scaffold creation' if @opts[:recipe].nil?
end