summaryrefslogtreecommitdiffstats
path: root/lib/puppet/application/main.rb
diff options
context:
space:
mode:
authorJesse Wolfe <jes5199@gmail.com>2010-04-13 14:53:44 -0700
committertest branch <puppet-dev@googlegroups.com>2010-02-17 06:50:53 -0800
commit1d8bd0d9308413b2f0772a65ee76d69d8fa5959b (patch)
tree66117b98ff550ee0352fe3d599b98137044691da /lib/puppet/application/main.rb
parent722a27fd49fc2c5ac16123e9e34967db025178f5 (diff)
downloadpuppet-1d8bd0d9308413b2f0772a65ee76d69d8fa5959b.tar.gz
puppet-1d8bd0d9308413b2f0772a65ee76d69d8fa5959b.tar.xz
puppet-1d8bd0d9308413b2f0772a65ee76d69d8fa5959b.zip
Fix #3552 single executable should display usage
Added some tests to make the single executable command behavior explicit. Added logic to display the usage message if we're on a tty and no arguments are passed. Signed-off-by: Jesse Wolfe <jes5199@gmail.com>
Diffstat (limited to 'lib/puppet/application/main.rb')
-rw-r--r--lib/puppet/application/main.rb183
1 files changed, 0 insertions, 183 deletions
diff --git a/lib/puppet/application/main.rb b/lib/puppet/application/main.rb
deleted file mode 100644
index 2952ef4ae..000000000
--- a/lib/puppet/application/main.rb
+++ /dev/null
@@ -1,183 +0,0 @@
-require 'puppet'
-require 'puppet/application'
-require 'puppet/configurer'
-require 'puppet/network/handler'
-require 'puppet/network/client'
-
-Puppet::Application.new(:main) do
-
- should_parse_config
-
- option("--debug","-d")
- option("--execute EXECUTE","-e") do |arg|
- options[:code] = arg
- end
- option("--loadclasses","-L")
- option("--verbose","-v")
- option("--use-nodes")
- option("--detailed-exitcodes")
-
- option("--apply catalog", "-a catalog") do |arg|
- options[:catalog] = arg
- end
-
- option("--logdest LOGDEST", "-l") do |arg|
- begin
- Puppet::Util::Log.newdestination(arg)
- options[:logset] = true
- rescue => detail
- $stderr.puts detail.to_s
- end
- end
-
- dispatch do
- if options[:catalog]
- :apply
- elsif Puppet[:parseonly]
- :parseonly
- else
- :main
- end
- end
-
- command(:apply) do
- require 'puppet/configurer'
-
- if options[:catalog] == "-"
- text = $stdin.read
- else
- text = File.read(options[:catalog])
- end
-
- begin
- catalog = Puppet::Resource::Catalog.convert_from(Puppet::Resource::Catalog.default_format,text)
- unless catalog.is_a?(Puppet::Resource::Catalog)
- catalog = Puppet::Resource::Catalog.pson_create(catalog)
- end
- rescue => detail
- raise Puppet::Error, "Could not deserialize catalog from pson: %s" % detail
- end
-
- catalog = catalog.to_ral
-
- configurer = Puppet::Configurer.new
- configurer.run :catalog => catalog
- end
-
- command(:parseonly) do
- # Set our code or file to use.
- if options[:code] or ARGV.length == 0
- Puppet[:code] = options[:code] || STDIN.read
- else
- Puppet[:manifest] = ARGV.shift
- end
- begin
- Puppet::Resource::TypeCollection.new(Puppet[:environment]).perform_initial_import
- rescue => detail
- Puppet.err detail
- exit 1
- end
- exit 0
- end
-
- command(:main) do
- # Set our code or file to use.
- if options[:code] or ARGV.length == 0
- Puppet[:code] = options[:code] || STDIN.read
- else
- Puppet[:manifest] = ARGV.shift
- end
-
- # Collect our facts.
- unless facts = Puppet::Node::Facts.find(Puppet[:certname])
- raise "Could not find facts for %s" % Puppet[:certname]
- end
-
- # Find our Node
- unless node = Puppet::Node.find(Puppet[:certname])
- raise "Could not find node %s" % Puppet[:certname]
- end
-
- # Merge in the facts.
- node.merge(facts.values)
-
- # Allow users to load the classes that puppetd creates.
- if options[:loadclasses]
- file = Puppet[:classfile]
- if FileTest.exists?(file)
- unless FileTest.readable?(file)
- $stderr.puts "%s is not readable" % file
- exit(63)
- end
- node.classes = File.read(file).split(/[\s\n]+/)
- end
- end
-
- begin
- # Compile our catalog
- starttime = Time.now
- catalog = Puppet::Resource::Catalog.find(node.name, :use_node => node)
-
- # Translate it to a RAL catalog
- catalog = catalog.to_ral
-
- catalog.host_config = true if Puppet[:graph] or Puppet[:report]
-
- catalog.finalize
-
- catalog.retrieval_duration = Time.now - starttime
-
- configurer = Puppet::Configurer.new
- configurer.execute_prerun_command
-
- # And apply it
- transaction = catalog.apply
-
- configurer.execute_postrun_command
-
- status = 0
- if not Puppet[:noop] and options[:detailed_exitcodes] then
- transaction.generate_report
- exit(transaction.report.exit_status)
- else
- exit(0)
- end
- rescue => detail
- puts detail.backtrace if Puppet[:trace]
- if detail.is_a?(XMLRPC::FaultException)
- $stderr.puts detail.message
- else
- $stderr.puts detail
- end
- exit(1)
- end
- end
-
- setup do
- if Puppet.settings.print_configs?
- exit(Puppet.settings.print_configs ? 0 : 1)
- end
-
- # If noop is set, then also enable diffs
- if Puppet[:noop]
- Puppet[:show_diff] = true
- end
-
- unless options[:logset]
- Puppet::Util::Log.newdestination(:console)
- end
- client = nil
- server = nil
-
- trap(:INT) do
- $stderr.puts "Exiting"
- exit(1)
- end
-
- if options[:debug]
- Puppet::Util::Log.level = :debug
- elsif options[:verbose]
- Puppet::Util::Log.level = :info
- end
- end
-end