This file is indexed.

/usr/lib/ruby/vendor_ruby/ramaze/bin/runner.rb is in ruby-ramaze 2012.12.08-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
require 'optparse'
require 'pathname'

require __DIR__('create')

module Ramaze
  #:nodoc:
  module Bin
    ##
    # Module used for running a particular command based on the specified
    # command line arguments.
    #
    # Usage:
    #
    #    ramaze --help # Shows a help message
    #    ramaze -h     # Shows a help message as well
    #    ramaze -v     # Shows the version of Ramaze
    #
    #    ramaze [COMMAND] # Runs [COMMAND]
    #
    # @author Yorick Peterse
    # @since  21-07-2011
    #
    module Runner
      Commands = {
        :create  => Ramaze::Bin::Create,
      }

      Banner = <<-TXT.strip
Ramaze is a simple, light and modular open-source web application
framework written in Ruby.

Usage:
  ramaze [COMMAND] [OPTIONS]

Example:
  ramaze create blog
      TXT

      ##
      # Runs a particular command based on the specified array.
      #
      # @example
      #  Ramaze::Bin::Runner.run(ARGV)
      #  Ramaze::Bin::Runner.run(['start', '--help'])
      #
      # @author Yorick Peterse
      # @since  21-07-2011
      # @param  [Array] argv An array containing command line arguments, set to
      #  ARGV by default.
      #
      def self.run(argv=ARGV)
        op = OptionParser.new do |opt|
          opt.banner         = Banner
          opt.summary_indent = '  '

          opt.separator "\nCommands:\n  #{commands_info.join("\n  ")}"

          # Show all the common options
          opt.separator "\nOptions:\n"

          # Show the version of Ramaze
          opt.on('-v', '--version', 'Shows the version of Ramaze') do
            puts Ramaze::VERSION
            exit
          end

          opt.on('-h', '--help', 'Shows this help message') do
            puts op
            exit
          end
        end

        op.order!(argv)

        # Show a help message if no command has been specified
        if !argv[0]
          puts op.to_s
          exit
        end

        cmd = argv.delete_at(0).to_sym

        if Commands.key?(cmd)
          cmd = Commands[cmd].new
          cmd.run(argv)
        else
          abort 'The specified command is invalid'
        end
      end

      ##
      # Generates an array of "rows" where each row contains the name and
      # description of a command. The descriptions of all commands are aligned
      # based on the length of the longest command name.
      #
      # @author Yorick Peterse
      # @since  21-07-2011
      # @return [Array]
      #
      def self.commands_info
        cmds    = []
        longest = Commands.map { |name, klass| name.to_s }.sort[0].size

        Commands.each do |name, klass|
          name = name.to_s
          desc = ''

          # Try to extract the command description
          if klass.respond_to?(:const_defined?) \
          and klass.const_defined?(:Description)
            desc = klass.const_get(:Description)
          end

          # Align the description based on the length of the name
          while name.size <= longest do
            name += ' '
          end

          cmds.push(["#{name}    #{desc}"])
        end

        return cmds
      end
    end # Runner
  end # Bin
end # Ramaze