class Omnibus::CLI::Application
Public Class Methods
start(*args)
click to toggle source
Override start so we can catch and process any exceptions bubbling up
Calls superclass method
# File lib/omnibus/cli/application.rb, line 121 def self.start(*args) begin super rescue => e error_msg = "Something went wrong...the Omnibus just ran off the road!" error_msg << "\n\nError raised was:\n\n\t#{$!}" error_msg << "\n\nBacktrace:\n\n\t#{e.backtrace.join("\n\t")}" if e.respond_to?(:original) && e.original error_msg << "\n\nOriginal Error:\n\n\t#{e.original}" error_msg << "\n\nOriginal Backtrace:\n\n\t#{e.original.backtrace.join("\n\t")}" end # TODO - we need a proper UI class Thor::Base.shell.new.say(error_msg, :red) exit 1 end end
Public Instance Methods
clean(project_name)
click to toggle source
# File lib/omnibus/cli/application.rb, line 38 def clean(project_name) project = load_project!(project_name) deletion_list = [] deletion_list << Dir.glob("#{Omnibus.config.source_dir}/**/*") deletion_list << Dir.glob("#{Omnibus.config.build_dir}/**/*") if options[:purge] deletion_list << Dir.glob("#{Omnibus.config.package_dir}/**/*") deletion_list << Dir.glob("#{Omnibus.config.cache_dir}/**/*") deletion_list << project.install_path if File.exist?(project.install_path) end deletion_list.flatten! deletion_list.each{|f| remove_file(f) } end
project(name)
click to toggle source
# File lib/omnibus/cli/application.rb, line 56 def project(name) name = name.chomp("/") # remove trailing slash if present target = File.join(Dir.pwd, "omnibus-#{name}") install_path = File.join("/opt", name) opts = { :name => name, :install_path => install_path } # core project files template(File.join("Gemfile.erb"), File.join(target, "Gemfile"), opts) template(File.join("gitignore.erb"), File.join(target, ".gitignore"), opts) template(File.join("README.md.erb"), File.join(target, "README.md"), opts) template(File.join("omnibus.rb.example.erb"), File.join(target, "omnibus.rb.example"), opts) # project definition template(File.join("project.rb.erb"), File.join(target, "config", "projects", "#{name}.rb"), opts) # example software definitions config_software = File.join(target, "config", "software") template(File.join("software", "c-example.rb.erb"), File.join(config_software, "c-example.rb"), opts) template(File.join("software", "erlang-example.rb.erb"), File.join(config_software, "erlang-example.rb"), opts) template(File.join("software", "ruby-example.rb.erb"), File.join(config_software, "ruby-example.rb"), opts) # Vagrant build lab template(File.join("Berksfile.erb"), File.join(target, "Berksfile"), opts) template(File.join("Vagrantfile.erb"), File.join(target, "Vagrantfile"), opts) # render out stub packge scripts %w{ makeselfinst postinst postrm }.each do |package_script| script_path = File.join(target, "package-scripts", name, package_script) template_path = File.join("package_scripts", "#{package_script}.erb") # render the package script template(template_path, script_path, opts) # ensure the package script is executable FileUtils.chmod(0755, script_path) end end
version()
click to toggle source
# File lib/omnibus/cli/application.rb, line 99 def version say("Omnibus: #{Omnibus::VERSION}", :yellow) end