Class: ChefDK::Command::GeneratorCommands::Repo

Inherits:
Base
  • Object
show all
Defined in:
lib/chef-dk/command/generator_commands/repo.rb

Overview

## Repo chef generate repo path/to/basename –generator-cookbook=path/to/generator –policy-only

Generates a full “chef-repo” directory structure.

Instance Attribute Summary collapse

Attributes inherited from Base

#params

Instance Method Summary collapse

Methods inherited from Base

#chef_runner, #generator_cookbook_name, #generator_cookbook_path, #have_git?

Methods included from ChefDK::Configurable

#chef_config, #chefdk_config, #config_loader, #default_chef_server_http_client, #generator_config, #knife_config, #reset_config!

Methods inherited from Base

#check_license_acceptance, #needs_help?, #needs_version?, #run_with_default_options

Methods included from Helpers

#chefdk_home, #err, #git_bin_dir, #git_windows_bin_dir, #msg, #omnibus_apps_dir, #omnibus_bin_dir, #omnibus_chefdk_location, #omnibus_embedded_bin_dir, #omnibus_env, #omnibus_install?, #omnibus_root, #stderr, #stdout, #system_command, #usr_bin_path, #usr_bin_prefix

Constructor Details

#initialize(params) ⇒ Repo

Returns a new instance of Repo.



64
65
66
67
68
69
70
# File 'lib/chef-dk/command/generator_commands/repo.rb', line 64

def initialize(params)
  @params_valid = true
  @repo_name = nil
  @use_policy = true
  @verbose = false
  super
end

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



33
34
35
# File 'lib/chef-dk/command/generator_commands/repo.rb', line 33

def errors
  @errors
end

#repo_name_or_pathObject (readonly)

Returns the value of attribute repo_name_or_path.



34
35
36
# File 'lib/chef-dk/command/generator_commands/repo.rb', line 34

def repo_name_or_path
  @repo_name_or_path
end

Instance Method Details

#params_valid?Boolean

Returns:

  • (Boolean)


134
135
136
# File 'lib/chef-dk/command/generator_commands/repo.rb', line 134

def params_valid?
  @params_valid
end

#read_and_validate_paramsObject



119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/chef-dk/command/generator_commands/repo.rb', line 119

def read_and_validate_params
  arguments = parse_options(params)
  @repo_name_or_path = arguments[0]
  unless @repo_name_or_path
    @params_valid = false
  end
  if !config[:roles].nil? && !config[:policy].nil?
    err("Roles and Policyfiles are exclusive. Please only select one.")
    @params_valid = false
  end
  if config[:roles]
    @use_policy = false
  end
end

#recipeObject



95
96
97
# File 'lib/chef-dk/command/generator_commands/repo.rb', line 95

def recipe
  "repo"
end

#repo_full_pathObject



107
108
109
# File 'lib/chef-dk/command/generator_commands/repo.rb', line 107

def repo_full_path
  File.expand_path(repo_name_or_path, Dir.pwd)
end

#repo_nameObject



99
100
101
# File 'lib/chef-dk/command/generator_commands/repo.rb', line 99

def repo_name
  File.basename(repo_full_path)
end

#repo_rootObject



103
104
105
# File 'lib/chef-dk/command/generator_commands/repo.rb', line 103

def repo_root
  File.dirname(repo_full_path)
end

#runObject



72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/chef-dk/command/generator_commands/repo.rb', line 72

def run
  read_and_validate_params
  if params_valid?
    setup_context
    msg("Generating Chef Infra repo #{repo_name}")
    chef_runner.converge
    msg("")
    msg("Your new Chef Infra repo is ready! Type `cd #{repo_name}` to enter it.")
    0
  else
    err(opt_parser)
    1
  end
end

#setup_contextObject



87
88
89
90
91
92
93
# File 'lib/chef-dk/command/generator_commands/repo.rb', line 87

def setup_context
  super
  Generator.add_attr_to_context(:verbose, verbose?)
  Generator.add_attr_to_context(:repo_root, repo_root)
  Generator.add_attr_to_context(:repo_name, repo_name)
  Generator.add_attr_to_context(:use_policy, use_policy?)
end

#use_policy?Boolean

Returns:

  • (Boolean)


111
112
113
# File 'lib/chef-dk/command/generator_commands/repo.rb', line 111

def use_policy?
  @use_policy
end

#verbose?Boolean

Returns:

  • (Boolean)


115
116
117
# File 'lib/chef-dk/command/generator_commands/repo.rb', line 115

def verbose?
  @verbose
end