Sha256: 4ca1ecf10f8d4b72825f2a3a9af8c0a993408e96d8a873c74aa8f656660838a5

Contents?: true

Size: 1.63 KB

Versions: 3

Compression:

Stored size: 1.63 KB

Contents

#!/usr/bin/env ruby

# Trap interrupts to quit cleanly. See
# https://twitter.com/mitchellh/status/283014103189053442
Signal.trap('INT') { exit 1 }

require 'oauth'
require 't'
require 'twitter'

# Output message to $stderr, prefixed with the program name
def pute(*args)
  first = args.shift.dup
  first.insert(0, "#{$PROGRAM_NAME}: ")
  args.unshift(first)
  $stderr.puts(*args)
end

begin
  T::CLI.start(ARGV)
rescue Interrupt
  pute 'Quitting...'
  exit 1
rescue OAuth::Unauthorized
  pute 'Authorization failed'
  exit 1
rescue Twitter::Error::TooManyRequests => error
  pute error.message,
       "The rate limit for this request will reset in #{error.rate_limit.reset_in} seconds.",
       'While you wait, consider making a polite request for Twitter to increase the API rate limit at https://dev.twitter.com/discussions/10644'
  exit 1
rescue Twitter::Error::BadRequest => error
  pute error.message,
       'Run `t authorize` to authorize.'
  exit 1
rescue Twitter::Error::Forbidden, Twitter::Error::Unauthorized => error
  pute error.message
  if error.message == 'Error processing your OAuth request: Read-only application cannot POST' ||
    error.message == 'This application is not allowed to access or delete your direct messages'
    $stderr.puts(%q(Make sure to set your Twitter application's Access Level to "Read, Write and Access direct messages".))
    require 'thor'
    Thor::Shell::Basic.new.ask 'Press [Enter] to open the Twitter Developer site.'
    require 'launchy'
    Launchy.open('https://dev.twitter.com/apps') { |u, o, e| $stderr.puts "Manually open #{u}" }
  end
  exit 1
rescue Twitter::Error => error
  pute error.message
  exit 1
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
t-2.2.0 bin/t
t-2.1.0 bin/t
t-2.0.2 bin/t