lib/chef-dk/command/install.rb in chef-dk-3.9.0 vs lib/chef-dk/command/install.rb in chef-dk-3.10.1
- old
+ new
@@ -1,120 +1,120 @@
-#
-# Copyright:: Copyright (c) 2014-2018 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/base"
-require "chef-dk/ui"
-require "chef-dk/policyfile_services/install"
-require "chef-dk/configurable"
-
-module ChefDK
- module Command
-
- class Install < Base
-
- include Configurable
-
- banner(<<~E)
- Usage: chef install [ POLICY_FILE ] [options]
-
- `chef install` evaluates a `Policyfile.rb` to find a compatible set of
- cookbooks for the policy's run_list and caches them locally. It emits a
- Policyfile.lock.json describing the locked cookbook set. You can use the
- lockfile to install the locked cookbooks on another machine. You can also push
- the lockfile to a "policy group" on a Chef Server and apply that exact set of
- cookbooks to nodes in your infrastructure.
-
- See our detailed README for more information:
-
- https://docs.chef.io/policyfile.html
-
- Options:
-
- E
-
- option :config_file,
- short: "-c CONFIG_FILE",
- long: "--config CONFIG_FILE",
- description: "Path to configuration file"
-
- option :debug,
- short: "-D",
- long: "--debug",
- description: "Enable stacktraces and other debug output",
- default: false
-
- attr_reader :policyfile_relative_path
-
- attr_accessor :ui
-
- def initialize(*args)
- super
- @ui = UI.new
-
- @policyfile_relative_path = nil
- @installer = nil
- end
-
- def run(params = [])
- return 1 unless apply_params!(params)
- # Force config file to be loaded. We don't use the configuration
- # directly, but the user may have SSL configuration options that they
- # need to talk to a private supermarket (e.g., trusted_certs or
- # ssl_verify_mode)
- chef_config
- installer.run
- 0
- rescue PolicyfileServiceError => e
- handle_error(e)
- 1
- end
-
- def installer
- @installer ||= PolicyfileServices::Install.new(policyfile: policyfile_relative_path, ui: ui, root_dir: Dir.pwd, config: chef_config)
- end
-
- def debug?
- !!config[:debug]
- end
-
- def config_path
- config[:config_file]
- end
-
- def handle_error(error)
- ui.err("Error: #{error.message}")
- if error.respond_to?(:reason)
- ui.err("Reason: #{error.reason}")
- ui.err("")
- ui.err(error.extended_error_info) if debug?
- ui.err(error.cause.backtrace.join("\n")) if debug?
- end
- end
-
- def apply_params!(params)
- remaining_args = parse_options(params)
- if remaining_args.size > 1
- ui.err(opt_parser)
- return false
- else
- @policyfile_relative_path = remaining_args.first
- true
- end
- end
-
- end
- end
-end
+#
+# Copyright:: Copyright (c) 2014-2018 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/base"
+require "chef-dk/ui"
+require "chef-dk/policyfile_services/install"
+require "chef-dk/configurable"
+
+module ChefDK
+ module Command
+
+ class Install < Base
+
+ include Configurable
+
+ banner(<<~E)
+ Usage: chef install [ POLICY_FILE ] [options]
+
+ `chef install` evaluates a `Policyfile.rb` to find a compatible set of
+ cookbooks for the policy's run_list and caches them locally. It emits a
+ Policyfile.lock.json describing the locked cookbook set. You can use the
+ lockfile to install the locked cookbooks on another machine. You can also push
+ the lockfile to a "policy group" on a Chef Server and apply that exact set of
+ cookbooks to nodes in your infrastructure.
+
+ See our detailed README for more information:
+
+ https://docs.chef.io/policyfile.html
+
+ Options:
+
+ E
+
+ option :config_file,
+ short: "-c CONFIG_FILE",
+ long: "--config CONFIG_FILE",
+ description: "Path to configuration file"
+
+ option :debug,
+ short: "-D",
+ long: "--debug",
+ description: "Enable stacktraces and other debug output",
+ default: false
+
+ attr_reader :policyfile_relative_path
+
+ attr_accessor :ui
+
+ def initialize(*args)
+ super
+ @ui = UI.new
+
+ @policyfile_relative_path = nil
+ @installer = nil
+ end
+
+ def run(params = [])
+ return 1 unless apply_params!(params)
+ # Force config file to be loaded. We don't use the configuration
+ # directly, but the user may have SSL configuration options that they
+ # need to talk to a private supermarket (e.g., trusted_certs or
+ # ssl_verify_mode)
+ chef_config
+ installer.run
+ 0
+ rescue PolicyfileServiceError => e
+ handle_error(e)
+ 1
+ end
+
+ def installer
+ @installer ||= PolicyfileServices::Install.new(policyfile: policyfile_relative_path, ui: ui, root_dir: Dir.pwd, config: chef_config)
+ end
+
+ def debug?
+ !!config[:debug]
+ end
+
+ def config_path
+ config[:config_file]
+ end
+
+ def handle_error(error)
+ ui.err("Error: #{error.message}")
+ if error.respond_to?(:reason)
+ ui.err("Reason: #{error.reason}")
+ ui.err("")
+ ui.err(error.extended_error_info) if debug?
+ ui.err(error.cause.backtrace.join("\n")) if debug?
+ end
+ end
+
+ def apply_params!(params)
+ remaining_args = parse_options(params)
+ if remaining_args.size > 1
+ ui.err(opt_parser)
+ return false
+ else
+ @policyfile_relative_path = remaining_args.first
+ true
+ end
+ end
+
+ end
+ end
+end