diff --git a/README.md b/README.md index b791a14..df42b05 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,16 @@ This can be really really cool in combination with `pbcopy`, like: after which the contents of `file` will be accessible at a URL which has been copied to your pasteboard. +## Making uploading file contents easier + +If you supply a valid file path as argument #1 to the client, it will be uploaded: + +``` bash +# equivelant +cat file | haste +haste file +``` + ## Changing the location of your haste server By default, haste will point at `http://hastebin.com`. You can change this by setting the value of `ENV['HASTE_SERVER']` to the URL of your haste server. You can also use `alias` to make easy shortcuts if you commonly use a few hastes intermingled with each other. To do that, you'd put something like this into ~.bash_profile: diff --git a/lib/haste.rb b/lib/haste.rb index e4e1937..d5f47d3 100644 --- a/lib/haste.rb +++ b/lib/haste.rb @@ -8,42 +8,35 @@ module Haste class CLI - attr_reader :input - # Pull all of the data from STDIN def initialize if STDIN.tty? - if ARGV.empty? - puts "No input file given" - exit - end - - file = ARGV[0] - abort "#{file} doesn't exist" unless File.exists?(file) - - @input = open(file).read.strip + abort 'No input file given' unless ARGV.length == 1 + abort "#{file}: No such path" unless File.exists?(file = ARGV[0]) + @input = open(file).read else @input = STDIN.readlines.join - @input.strip! end + # clean up + @input.strip! end # Upload the and output the URL we get back def start uri = URI.parse server http = Net::HTTP.new uri.host, uri.port - response = http.post '/documents', input + response = http.post '/documents', @input if response.is_a?(Net::HTTPOK) data = JSON.parse(response.body) method = STDOUT.tty? ? :puts : :print STDOUT.send method, "#{server}/#{data['key']}" else - STDERR.puts "failure uploading: #{response.code}" + abort "failure uploading: #{response.code}" end rescue RuntimeError, JSON::ParserError => e - STDERR.puts "failure uploading: #{response.code}" + abort "failure uploading: #{response.code}" rescue Errno::ECONNREFUSED => e - STDERR.puts "failure connecting: #{e.message}" + abort "failure connecting: #{e.message}" end private