lib/chef-dk/command/generator_commands/policyfile.rb in chef-dk-0.14.25 vs lib/chef-dk/command/generator_commands/policyfile.rb in chef-dk-0.15.9

- old
+ new

@@ -1,127 +1,127 @@ -# -# Copyright:: Copyright (c) 2014 Chef Software Inc. -# License:: Apache License, Version 2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -require 'chef-dk/command/generator_commands/base' - -module ChefDK - module Command - module GeneratorCommands - - class Policyfile < Base - - banner "Usage: chef generate policyfile [NAME] [options]" - - options.merge!(SharedGeneratorOptions.options) - - attr_reader :new_file_basename - attr_reader :policyfile_dir - attr_reader :policy_name - attr_reader :policy_run_list - - def initialize(*args) - super - @new_file_basename = nil - @policyfile_dir = nil - @policy_name = nil - @policy_run_list = nil - @params_valid = true - end - - def recipe - 'policyfile' - end - - def setup_context - super - Generator.add_attr_to_context(:policyfile_dir, policyfile_dir) - Generator.add_attr_to_context(:new_file_basename, new_file_basename) - Generator.add_attr_to_context(:include_chef_repo_source, chef_repo_mode?) - Generator.add_attr_to_context(:policy_name, policy_name) - Generator.add_attr_to_context(:policy_run_list, policy_run_list) - Generator.add_attr_to_context(:policy_local_cookbook, nil) - end - - def run - read_and_validate_params - if params_valid? - setup_context - chef_runner.converge - 0 - else - err(opt_parser) - 1 - end - end - - def read_and_validate_params - arguments = parse_options(params) - - new_file_path = nil - case arguments.size - when 0 - if chef_repo_mode? - err("ERROR: You must give a policy name when generating a policy in a chef-repo.") - @params_valid = false - return false - else - use_default_policy_settings - end - when 1 - new_file_path = arguments[0] - derive_policy_settings_from_args(arguments[0]) - else - @params_valid = false - err("ERROR: too many arguments") - return false - end - - end - - private - - def use_default_policy_settings - @new_file_basename = "Policyfile" - @policy_name = "example-application-service" - @policy_run_list = "example_cookbook::default" - @policyfile_dir = Dir.pwd - end - - def derive_policy_settings_from_args(new_file_path) - @new_file_basename = File.basename(new_file_path, ".rb") - @policy_name = @new_file_basename - @policy_run_list = "#{policy_name}::default" - given_policy_dirname = File.expand_path(File.dirname(new_file_path)) - @policyfile_dir = - if chef_repo_mode? && (given_policy_dirname == Dir.pwd) - File.expand_path("policies") - else - given_policy_dirname - end - end - - def params_valid? - @params_valid - end - - def chef_repo_mode? - File.exist?(File.expand_path(".chef-repo.txt")) - end - - end - end - end -end +# +# Copyright:: Copyright (c) 2014 Chef Software Inc. +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require 'chef-dk/command/generator_commands/base' + +module ChefDK + module Command + module GeneratorCommands + + class Policyfile < Base + + banner "Usage: chef generate policyfile [NAME] [options]" + + options.merge!(SharedGeneratorOptions.options) + + attr_reader :new_file_basename + attr_reader :policyfile_dir + attr_reader :policy_name + attr_reader :policy_run_list + + def initialize(*args) + super + @new_file_basename = nil + @policyfile_dir = nil + @policy_name = nil + @policy_run_list = nil + @params_valid = true + end + + def recipe + 'policyfile' + end + + def setup_context + super + Generator.add_attr_to_context(:policyfile_dir, policyfile_dir) + Generator.add_attr_to_context(:new_file_basename, new_file_basename) + Generator.add_attr_to_context(:include_chef_repo_source, chef_repo_mode?) + Generator.add_attr_to_context(:policy_name, policy_name) + Generator.add_attr_to_context(:policy_run_list, policy_run_list) + Generator.add_attr_to_context(:policy_local_cookbook, nil) + end + + def run + read_and_validate_params + if params_valid? + setup_context + chef_runner.converge + 0 + else + err(opt_parser) + 1 + end + end + + def read_and_validate_params + arguments = parse_options(params) + + new_file_path = nil + case arguments.size + when 0 + if chef_repo_mode? + err("ERROR: You must give a policy name when generating a policy in a chef-repo.") + @params_valid = false + return false + else + use_default_policy_settings + end + when 1 + new_file_path = arguments[0] + derive_policy_settings_from_args(arguments[0]) + else + @params_valid = false + err("ERROR: too many arguments") + return false + end + + end + + private + + def use_default_policy_settings + @new_file_basename = "Policyfile" + @policy_name = "example-application-service" + @policy_run_list = "example_cookbook::default" + @policyfile_dir = Dir.pwd + end + + def derive_policy_settings_from_args(new_file_path) + @new_file_basename = File.basename(new_file_path, ".rb") + @policy_name = @new_file_basename + @policy_run_list = "#{policy_name}::default" + given_policy_dirname = File.expand_path(File.dirname(new_file_path)) + @policyfile_dir = + if chef_repo_mode? && (given_policy_dirname == Dir.pwd) + File.expand_path("policies") + else + given_policy_dirname + end + end + + def params_valid? + @params_valid + end + + def chef_repo_mode? + File.exist?(File.expand_path(".chef-repo.txt")) + end + + end + end + end +end