This file is indexed.

/usr/bin/nokogiri is in ruby-nokogiri 1.6.8.1-1.

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

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
#!/usr/bin/ruby
require 'optparse'
require 'open-uri'
require 'uri'
require 'rubygems'
require 'nokogiri'
autoload :IRB, 'irb'

parse_class = Nokogiri
encoding = nil

# This module provides some tunables with the nokogiri CLI for use in
# your ~/.nokogirirc.
module Nokogiri::CLI
  class << self
    # Specify the console engine, defaulted to IRB.
    #
    # call-seq:
    #   require 'pry'
    #   Nokogiri::CLI.console = Pry
    attr_writer :console

    def console
      case @console
      when Symbol
        Kernel.const_get(@console)
      else
        @console
      end
    end

    attr_accessor :rcfile
  end

  self.rcfile  = File.expand_path('~/.nokogirirc')
  self.console = :IRB
end

opts = OptionParser.new do |opts|
  opts.banner = "Nokogiri: an HTML, XML, SAX, and Reader parser"
  opts.define_head "Usage: nokogiri <uri|path> [options]"
  opts.separator ""
  opts.separator "Examples:"
  opts.separator "  nokogiri https://www.ruby-lang.org/"
  opts.separator "  nokogiri ./public/index.html"
  opts.separator "  curl -s http://www.nokogiri.org | nokogiri -e'p $_.css(\"h1\").length'"
  opts.separator ""
  opts.separator "Options:"

  opts.on("--type type", "Parse as type: xml or html (default: auto)", [:xml, :html]) do |v|
    parse_class = {:xml => Nokogiri::XML, :html => Nokogiri::HTML}[v]
  end

  opts.on("-C file", "Specifies initialization file to load (default #{Nokogiri::CLI.rcfile})") do |v|
    Nokogiri::CLI.rcfile = v
  end

  opts.on("-E", "--encoding encoding", "Read as encoding (default: #{encoding || 'none'})") do |v|
    encoding = v
  end

  opts.on("-e command", "Specifies script from command-line.") do |v|
    @script = v
  end

  opts.on("--rng <uri|path>", "Validate using this rng file.") do |v|
    @rng = open(v) {|f| Nokogiri::XML::RelaxNG(f)}
  end

  opts.on_tail("-?", "--help", "Show this message") do
    puts opts
    exit
  end

  opts.on_tail("-v", "--version", "Show version") do
    puts Nokogiri::VersionInfo.instance.to_markdown
    exit
  end
end
opts.parse!

url = ARGV.shift

if url.to_s.strip.empty? && $stdin.tty?
  puts opts
  exit 1
end

if File.file?(Nokogiri::CLI.rcfile)
  load Nokogiri::CLI.rcfile
end

if url || $stdin.tty?
  case uri = (URI(url) rescue url)
  when URI::HTTP
    @doc = parse_class.parse(uri.read, url, encoding)
  else
    @doc = parse_class.parse(open(url).read, nil, encoding)
  end
else
  @doc = parse_class.parse($stdin, nil, encoding)
end

$_ = @doc

if @rng
  @rng.validate(@doc).each do |error|
    puts error.message
  end
else
  if @script
    eval @script, binding, '<main>'
  else
    puts "Your document is stored in @doc..."
    Nokogiri::CLI.console.start
  end
end