require "P4" def p4_login ( port, user, pass, charset ) begin p4 = P4.new p4.port = port p4.user = user p4.password = pass if charset p4.charset = charset end p4.connect ticket = p4.run( "login", "-p", user ) 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 p4.disconnect 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