module PhusionPassenger::Config

Core of the `passenger-config` command. Dispatches a subcommand to a specific class.

Constants

ABOUT_OPTIONS
KNOWN_COMMANDS

Public Class Methods

help() click to toggle source
# File lib/phusion_passenger/config/main.rb, line 68
def self.help
        puts "Usage: passenger-config <COMMAND> [options]"
        puts "Tool for controlling or configurating a #{PROGRAM_NAME} instance or installation."
        puts
        puts "Management commands:"
        puts "  detach-process        Detach an application process from the process pool"
        puts "  restart-app           Restart an application"
        puts
        puts "Informational commands:"
        puts "  validate-install      Validate this Phusion Passenger installation"
        puts "  about                 Show information about Phusion Passenger"
        puts
        puts "Miscellaneous commands:"
        puts "  build-native-support  Ensure that the native_support library for the current"
        puts "                        Ruby interpeter is built"
        puts
        puts "Type 'passenger-config <COMMAND> --help' for more information."
end
run!(argv) click to toggle source
# File lib/phusion_passenger/config/main.rb, line 55
def self.run!(argv)
        command_class, new_argv = lookup_command_class_by_argv(argv)
        if help_requested?(argv)
                help
        elsif command_class
                command = command_class.new(new_argv)
                command.run
        else
                help
                abort
        end
end

Private Class Methods

help_requested?(argv) click to toggle source
# File lib/phusion_passenger/config/main.rb, line 88
def self.help_requested?(argv)
        return argv.size == 1 && (argv[0] == "--help" || argv[0] == "-h" || argv[0] == "help")
end
lookup_command_class_by_argv(argv) click to toggle source
# File lib/phusion_passenger/config/main.rb, line 92
def self.lookup_command_class_by_argv(argv)
        return nil if argv.empty?

        # Compatibility with version <= 4.0.29: try to pass all
        # --switch invocations to AboutCommand.
        if argv[0] =~ /^--/
                name = argv[0].sub(/^--/, '')
                if ABOUT_OPTIONS.include?(name)
                        command_class = lookup_command_class_by_class_name("AboutCommand")
                        return [command_class, argv]
                else
                        return nil
                end
        end

        # Convert "passenger-config help <COMMAND>" to "passenger-config <COMMAND> --help".
        if argv.size == 2 && argv[0] == "help"
                argv = [argv[1], "--help"]
        end

        KNOWN_COMMANDS.each do |props|
                if argv[0] == props[0]
                        command_class = lookup_command_class_by_class_name(props[1])
                        new_argv = argv[1 .. -1]
                        return [command_class, new_argv]
                end
        end

        return nil
end
lookup_command_class_by_class_name(class_name) click to toggle source
# File lib/phusion_passenger/config/main.rb, line 123
def self.lookup_command_class_by_class_name(class_name)
        base_name = class_name.gsub(/[A-Z]/) do |match|
                "_" + match[0..0].downcase
        end
        base_name.sub!(/^_/, '')
        base_name << ".rb"
        PhusionPassenger.require_passenger_lib("config/#{base_name}")
        return PhusionPassenger::Config.const_get(class_name)
end