require "P4"
def p4_login ( port, user, pass, charset )
begin
p4 = P4.new
p4.port = port
if charset
p4.charset = charset
end
p4.connect
p4.user = user
p4.input = pass
ticket = p4.run( "login", "-p" )
info = p4.run( "info" )
if charset
return "#{ticket[0]}*#{port}*#{charset}*#{user}", info
end
return "#{ticket[0]}*#{port}**#{user}", info
rescue P4Exception
return Array p4.errors.join("\n")
ensure
if p4.connected?
p4.disconnect
end
end
end
def p4_cmd( cookie, cmd, args )
parts = cookie.split("*")
if parts.length < 4 then
return Array "Invalid ticket"
end
ticket = parts[0]
port = parts[1]
charset = parts[2]
user = parts[3, parts.length - 1].join("*")
begin
p4 = P4.new
p4.port = port
p4.user = user
p4.password = "#{ticket}"
if charset.length > 0
p4.charset = charset
end
p4.connect
listing = p4.run( cmd, args )
return "200", listing
rescue P4Exception
errs = Array.new p4.errors
return errs
ensure
p4.disconnect
end
end
def p4_args( query_hash )
args = Array.new
query_hash.each { | name, value |
if name != "d" and name != "i" and name != "o"
if value
args << "-#{name} #{value}"
else
args << "-#{name}"
end
end
}
return args
end