This file is indexed.

/usr/bin/gist-paste is in gist 4.6.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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
#!/usr/bin/ruby

# Silence Ctrl-C's
trap('INT'){ exit 1 }

if Signal.list.include? 'PIPE'
  trap('PIPE', 'EXIT')
end

require 'optparse'
require 'gist'

# For the holdings of options.
options = {}
filenames = []

OptionParser.new do |opts|
  executable_name = File.split($0)[1]
  opts.banner = <<-EOS
Gist (v#{Gist::VERSION}) lets you upload to https://gist.github.com/

The content to be uploaded can be passed as a list of files, if none are
specified STDIN will be read. The default filename for STDIN is "a.rb", and all
filenames can be overridden by repeating the "-f" flag. The most useful reason
to do this is to change the syntax highlighting.

If you'd like your gists to be associated with your GitHub account, so that you
can edit them and find them in future, first use `gist --login` to obtain an
Oauth2 access token. This is stored and used by gist in the future.

Private gists do not have guessable URLs and can be created with "-p", you can
also set the description at the top of the gist by passing "-d".

Anonymous gists are not associated with your GitHub account, they can be created
with "-a" even after you have used "gist --login".

If you would like to shorten the resulting gist URL, use the -s flag. This will
use GitHub's URL shortener, git.io. You can also use -R to get the link to the
raw gist.

To copy the resulting URL to your clipboard you can use the -c option, or to
just open it directly in your browser, use -o. Using the -e option will copy the
embeddable URL to the clipboard. You can add `alias gist='gist -c'` to your
shell's rc file to configure this behaviour by default.

Instead of creating a new gist, you can update an existing one by passing its ID
or URL with "-u". For this to work, you must be logged in, and have created the
original gist with the same GitHub account.

Usage: #{executable_name} [-o|-c|-e] [-p] [-s] [-R] [-d DESC] [-a] [-u URL] [-P] [-f NAME|-t EXT]* FILE*
       #{executable_name} --login
       #{executable_name} [-l|-r]

  EOS

  opts.on("--login", "Authenticate gist on this computer.") do
    Gist.login!
    exit
  end

  opts.on("-f", "--filename [NAME.EXTENSION]", "Sets the filename and syntax type.") do |filename|
    filenames << filename
    options[:filename] = filename
  end

  opts.on("-t", "--type [EXTENSION]", "Sets the file extension and syntax type.") do |extension|
    filenames << "foo.#{extension}"
    options[:filename] = "foo.#{extension}"
  end

  opts.on("-p", "--private", "Makes your gist private.") do
    options[:private] = true
  end

  opts.on("--no-private") do
    options[:private] = false
  end

  opts.on("-d", "--description DESCRIPTION", "Adds a description to your gist.") do |description|
    options[:description] = description
  end

  opts.on("-s", "--shorten", "Shorten the gist URL using git.io.") do |shorten|
    options[:shorten] = shorten
  end

  opts.on("-u", "--update [ URL | ID ]", "Update an existing gist.") do |update|
    options[:update] = update
  end

  opts.on("-a", "--anonymous", "Create an anonymous gist.") do
    options[:anonymous] = true
  end

  opts.on("-c", "--copy", "Copy the resulting URL to the clipboard") do
    options[:copy] = true
  end

  opts.on("-e", "--embed", "Copy the embed code for the gist to the clipboard") do
    options[:embed] = true
    options[:copy] = true
  end

  opts.on("-o", "--open", "Open the resulting URL in a browser") do
    options[:open] = true
  end

  opts.on("--no-open")

  opts.on("-P", "--paste", "Paste from the clipboard to gist") do
    options[:paste] = true
  end

  opts.on("-R", "--raw", "Display raw URL of the new gist") do
    options[:raw] = true
  end

  opts.on("-l", "--list [USER]", "List all gists for user") do |user|
    options[:list] = user
  end

  opts.on("-r", "--read ID [FILENAME]", "Read a gist and print out the contents") do |id|
    options[:read] = id
  end

  opts.on("--delete [ URL | ID ]", "Delete a gist") do |id|
    options[:delete] = id
  end

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

  opts.on_tail("-v", "--version", "Print the version.") do
    puts "gist v#{Gist::VERSION}"
    exit
  end

end.parse!

begin
  options[:output] = if options[:embed] && options[:shorten]
                       raise Gist::Error, "--embed does not make sense with --shorten"
                     elsif options[:embed]
                       :javascript
                     elsif options[:shorten] and options[:raw]
                       :short_raw_url
                     elsif options[:shorten]
                       :short_url
                     elsif options[:raw]
                       :raw_url
                     else
                       :html_url
                     end

  options[:public] = Gist.should_be_public?(options)

  if options.key? :list
    if options[:list]
      Gist.list_all_gists(options[:list])
    else
      Gist.list_all_gists
    end
    exit
  end

  if options.key? :read
    file_name = ARGV.first
    Gist.read_gist(options[:read], file_name)
    exit
  end

  if options.key? :delete
    Gist.delete_gist(options[:delete])
    exit
  end

  if options[:paste]
    puts Gist.gist(Gist.paste, options)
  else
    to_read = ARGV.empty? ? ['-'] : ARGV
    files = {}
    to_read.zip(filenames).each do |(file, name)|
      files[name || file] =
        begin
          if file == '-'
            $stderr.puts "(type a gist. <ctrl-c> to cancel, <ctrl-d> when done)" if $stdin.tty?
            STDIN.read
          else
            File.read(File.expand_path(file))
          end
        rescue => e
          raise e.extend(Gist::Error)
        end
    end

    puts Gist.multi_gist(files, options)
  end

rescue Gist::Error => e
  puts "Error: #{e.message}"
  exit 1
end