in lib/whimsy/asf/svn.rb [339:413]
def self._svn_build_cmd(command, path, options)
bad_keys = options.keys - VALID_KEYS
if bad_keys.size > 0
raise ArgumentError.new "Following options not recognised: #{bad_keys.inspect}"
end
if command.is_a? String
Wunderbar.error "command #{command.inspect} is invalid" unless command =~ %r{^[a-z]+$}
else
if command.is_a? Array
command.each do |cmd|
raise ArgumentError.new "command #{cmd.inspect} must be a String" unless cmd.is_a? String
end
Wunderbar.error "command #{command.first.inspect} is invalid" unless command.first =~ %r{^[a-z]+$}
command.drop(1).each do |cmd|
Wunderbar.error "Invalid option #{cmd.inspect}" unless cmd =~ %r{^(--[a-z][a-z=]+|-l\d+|-[a-z])$}
end
else
raise ArgumentError.new 'command must be a String or an Array of Strings'
end
end
cmd = ['svn', *command, '--non-interactive']
stdin = nil
msg = options[:msg]
cmd += ['--message', msg] if msg
depth = options[:depth]
cmd += ['--depth', depth] if depth
cmd << '--quiet' if options[:quiet]
cmd << '--xml' if options[:xml]
item = options[:item]
cmd += ['--show-item', item] if item
revision = options[:revision]
cmd += ['--revision', revision] if revision
env = options[:env]
if env
password = env.password
user = env.user
else
password = options[:password]
user = options[:user]
end
if user == 'whimsysvn'
cmd[0] = 'whimsysvn'
end
unless options[:dryrun]
if password
cmd << ['--username', user, '--no-auth-cache']
stdin = password
cmd << ['--password-from-stdin']
end
end
cmd << '--'
if path.is_a? Array
cmd += path
else
cmd << path
end
return cmd, stdin
end