public bool Run(PerforceConnection Perforce, TextWriter Log, out string ErrorMessage) { PerforceConnection PerforceClient = new PerforceConnection(Perforce.UserName, ClientName, Perforce.ServerAndPort); PerforceSpec ClientSpec; if (!PerforceClient.TryGetClientSpec(Perforce.ClientName, out ClientSpec, Log)) { ErrorMessage = String.Format("Unable to get client spec for {0}", ClientName); return(false); } string ClientRoot = ClientSpec.GetField("Root"); if (String.IsNullOrEmpty(ClientRoot)) { ErrorMessage = String.Format("Client '{0}' does not have a valid root directory.", ClientName); return(false); } List <PerforceFileRecord> FileRecords = new List <PerforceFileRecord>(); foreach (string Pattern in Patterns) { string Filter = String.Format("//{0}/{1}", ClientName, Pattern); List <PerforceFileRecord> WildcardFileRecords = new List <PerforceFileRecord>(); if (!PerforceClient.FindFiles(Filter, out WildcardFileRecords, Log)) { ErrorMessage = String.Format("Unable to enumerate files matching {0}", Filter); return(false); } FileRecords.AddRange(WildcardFileRecords); } string ClientPrefix = ClientRoot + Path.DirectorySeparatorChar; Paths = new List <string>(); foreach (PerforceFileRecord FileRecord in FileRecords) { if (FileRecord.ClientPath.StartsWith(ClientPrefix, StringComparison.InvariantCultureIgnoreCase)) { Paths.Add(FileRecord.ClientPath.Substring(ClientRoot.Length).Replace(Path.DirectorySeparatorChar, '/')); } } ErrorMessage = null; return(true); }
public bool GetActiveStream(out string StreamName, TextWriter Log) { PerforceSpec ClientSpec; if (TryGetClientSpec(ClientName, out ClientSpec, Log)) { StreamName = ClientSpec.GetField("Stream"); return(StreamName != null); } else { StreamName = null; return(false); } }