bin/sauce in sauce-0.12.4 vs bin/sauce in sauce-0.12.5
- old
+ new
@@ -2,10 +2,12 @@
require 'rubygems'
require 'cmdparse'
require 'yaml'
require 'fileutils'
+require 'json'
+require 'highline/import'
sauce_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
$LOAD_PATH.unshift(sauce_dir) unless $LOAD_PATH.include?(sauce_dir)
# special case for sauce connect
@@ -23,11 +25,11 @@
# configure
configure = CmdParse::Command.new('configure', false)
configure.short_desc = "Configure Sauce OnDemand credentials"
configure.set_execution_block do |args|
- if args.length < 2
+ if args.length < 2:
puts "Usage: sauce configure USERNAME ACCESS_KEY"
exit 1
end
username = args[0]
access_key = args[1]
@@ -43,33 +45,37 @@
#create
create = CmdParse::Command.new('create', false)
create.short_desc = "Create a new Sauce OnDemand account"
create.set_execution_block do |args|
puts "Let's create a new account!"
- print "Username: "
- username = $stdin.gets.chomp
- print "password: "
- password = $stdin.gets.chomp
- print "password confirmation: "
- password_confirmation = $stdin.gets.chomp
- print "email: "
- email = $stdin.gets.chomp
- print "Full name: "
- name = $stdin.gets.chomp
+ username = ask("Username: ")
+ password = ask("Password: ") { |q| q.echo = "*" }
+ email = ask("Email: ")
+ name = ask("Full name: ")
- # TODO: Add error handling, of course
- result = RestClient.post "http://saucelabs.com/rest/v1/users",
- {
+ body = {
:username => username,
:password => password,
- :password_confirmation => password_confirmation,
:email => email,
- :token => "c8eb3e2645005bcbbce7e2c208c6b7a71555d908",
- :name => name
- }.to_json,
- :content_type => :json, :accept => :json
+ :name => name,
+ :token => "c8eb3e2645005bcbbce7e2c208c6b7a71555d908"
+ }.to_json
- puts result.inspect
+ begin
+ result = RestClient.post("http://saucelabs.com/rest/v1/users",
+ body, :content_type => :json, :accept => :json)
+ rescue => e
+ begin
+ puts "ERROR: #{JSON.load(e.response)['errors']}"
+ rescue
+ puts "ERROR: #{e.response}"
+ end
+ else
+ result = JSON.load(result)
+
+ puts "Account #{username} created successfully."
+ puts "Your access key is: #{result['access_key']}"
+ end
end
cmd.add_command(create)
cmd.parse