Module: Depengine::CLI

Defined in:
lib/depengine/cli.rb

Class Method Summary collapse

Class Method Details

.evaluate_recipe!(recipe) ⇒ Object



49
50
51
# File 'lib/depengine/cli.rb', line 49

def evaluate_recipe!(recipe)
  eval(recipe) # rubocop:disable Lint/Eval
end

.run(args, _input = $stdin, _output = $stdout, error = $stderr) ⇒ Object

:nodoc:



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/depengine/cli.rb', line 4

def run(args, _input = $stdin, _output = $stdout, error = $stderr) #:nodoc:
  @deploy_home = '.'
  @recipe_name = 'recipe/deploy.rb'

  args_size = args.size

  args.options do |o|
    o.banner = "Usage: #{File.basename($PROGRAM_NAME)} [options]"
    o.separator ''
    o.on('-n', '--new [some_path]', 'create a new empty recipe directory structure') do |path|
      require_relative('helper/cli_helper')
      extend CLIHelper
      setup_new_recipe(path || '.')
    end
    o.on('-h', '--deployhome [DIRNAME]', 'Home of deployments.') do |dname|
      set :deploy_home, dname
    end
    o.on('-b', '--recipe-base-dir [DIRNAME]', 'Home of recipes. This takes precedence over --deployhome for recipe location.') do |dname|
      set :recipe_base_dir, dname
    end
    o.on('-r', '--recipe [FILENAME]', 'Filename of the recipe.') do |fname|
      @recipe_name = fname
    end
    o.on('-e', '--env [ENVNAME]', 'Environment name.') do |ename|
      set :env, ename
    end
    o.on('-t', '--maven_test_switch [SWITCH]', 'Disable mvn tests.') do |tname|
      set :maven_test_switch, tname
    end
    o.on('-v', '--version [VERSION]', 'Version.') do |vname|
      set :version, vname
    end
    o.parse!
  end
  unless args_size > 2
    error << args.options
    return 127
  end

  recipe_filename = File.join(($recipe_config[:recipe_base_dir] || $recipe_config[:deploy_home]), @recipe_name)
  puts "Evaluating recipe #{recipe_filename}"
  evaluate_recipe!(File.open(recipe_filename).read)
  0
end