bin/restfully in restfully-0.6.3 vs bin/restfully in restfully-0.7.0.pre

- old
+ new

@@ -8,61 +8,119 @@ require 'optparse' require 'logger' require 'pp' -logger = Logger.new(STDOUT) +logger = Logger.new(STDERR) logger.level = Logger::WARN -@options = {:logger => logger} +@options = {"logger" => logger, "require" => []} + option_parser = OptionParser.new do |opts| opts.banner = <<BANNER * Description Restfully #{Restfully::VERSION} - Access REST APIs effortlessly * Usage - restfully [base_uri] [options] + restfully [uri] [options] * Options BANNER opts.on("-u=", "--username=", "Sets the username") do |u| - @options[:username] = u + @options["username"] = u end opts.on("-p=", "--password=", "Sets the user password") do |p| - @options[:password] = p + @options["password"] = p end opts.on("-c=", "--config=", "Sets the various options based on a custom YAML configuration file") do |v| - @options[:configuration_file] = v + @options["configuration_file"] = v end + opts.on("-r=", "--require=", "Require an additional media-type") do |v| + @options["require"].push(v) + end opts.on("--log=", "Outputs log messages to the given file. Defaults to stdout") do |v| original_logger_level = logger.level logger = Logger.new(File.expand_path(v)) logger.level = original_logger_level - @options[:logger] = logger + @options["logger"] = logger end opts.on("-v", "--verbose", "Run verbosely") do |v| - @options[:logger].level = Logger::DEBUG + @options["logger"].level = Logger::DEBUG end opts.on_tail("-h", "--help", "Show this message") do puts opts exit end end option_parser.parse! -@options[:base_uri] = ARGV.shift +if @options["configuration_file"] + @options.merge!(YAML.load_file( + File.expand_path(@options["configuration_file"]) + )) +end +@options["require"].each do |r| + logger.info "Requiring #{r} media-type..." + require "restfully/media_type/#{r.underscore}" +end + +if given_uri = ARGV.shift + @options["uri"] = given_uri +end +# p @options +# Compatibility with restfully < 0.6 +@options["uri"] ||= @options.delete("base_uri") + +@session = Restfully::Session.new(@options) + + def session - @session ||= Restfully::Session.new(@options) + @session end def root @root ||= session.root end puts "Restfully/#{Restfully::VERSION} - The root resource is available in the 'root' variable." require 'irb' require 'irb/completion' +require 'irb/ext/save-history' + +HOME = ENV['HOME'] || ENV['HOMEPATH'] +# Keep history of your last commands. +# Taken from <http://blog.nicksieger.com/articles/2006/04/23/tweaking-irb> +IRB.conf[:SAVE_HISTORY] = 100 +IRB.conf[:HISTORY_FILE] = "#{HOME}/.irb-save-history" + +module Readline + module History + LOG = "#{HOME}/.irb-history" + + def self.write_log(line) + File.open(LOG, 'ab') {|f| + f << "#{line}\n" + } + end + + def self.start_session_log + write_log("\n") + end + end + + alias :old_readline :readline + def readline(*args) + ln = old_readline(*args) + begin + History.write_log(ln) + rescue + end + ln + end +end +Readline::History.start_session_log ARGV.clear +ARGV.concat [ "--readline", "--prompt-mode", "simple" ] IRB.start exit! \ No newline at end of file