3 abort 'Error: Ruby >= 1.9.3 required.' if RUBY_VERSION < '1.9.3'
8 log = Logger.new STDERR
9 log.progname = $0.split('/').last
11 opts = Trollop::options do
13 banner "Usage: #{log.progname} " +
14 "{user_uuid_or_email} {user_and_repo_name} {vm_uuid}"
19 opt :openid_prefix, <<-eos, default: 'https://www.google.com/accounts/o8/id'
20 If creating a new user record, require authentication from an OpenID \
21 with this OpenID prefix *and* a matching email address in order to \
26 default_openid_prefix = 'https://www.google.com/accounts/o8/id'
28 log.level = (ENV['DEBUG'] || opts.debug) ? Logger::DEBUG : Logger::WARN
31 Trollop::die "required arguments are missing"
34 user_arg, user_repo_name, vm_uuid = ARGV
37 arv = Arvados.new(api_version: 'v1')
39 # Look up the given user by uuid or, failing that, email address.
41 found_user = arv.user.get(uuid: user_arg)
42 rescue Arvados::TransactionFailedError
43 found = arv.user.list(where: {email: ARGV[0]})[:items]
46 if !user_arg.match(/\w\@\w+\.\w+/)
47 abort "About to create new user, but #{user_arg.inspect} " +
48 "does not look like an email address. Stop."
50 elsif found.count != 1
51 abort "Found #{found.count} users " +
52 "with uuid or email #{user_arg.inspect}. Stop."
54 found_user = found.first
58 # Invoke user setup method
60 user = {uuid: found_user[:uuid]}
62 user = {email: user_arg}
66 puts "used the -o option"
69 if opts.openid_prefix == default_openid_prefix
70 user = arv.user.setup user: user, repo_name: user_repo_name, vm_uuid: vm_uuid
72 user = arv.user.setup user: user, repo_name: user_repo_name, vm_uuid: vm_uuid,
73 openid_prefix: opts.openid_prefix
76 log.info {"user uuid: " + user[:uuid]}