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