2019-12-26 23:01:54 -05:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
2019-09-27 16:21:33 -04:00
|
|
|
|
|
|
|
|
using BuildAgent.Workspace.Common;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel;
|
2020-09-01 14:07:48 -04:00
|
|
|
using System.IO;
|
2019-09-27 16:21:33 -04:00
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Tools.DotNETCommon;
|
|
|
|
|
|
|
|
|
|
namespace BuildAgent.Workspace
|
|
|
|
|
{
|
|
|
|
|
[ProgramMode("PopulateCache", "Populates the cache with the head revision of the given streams")]
|
|
|
|
|
class PopulateCacheMode : WorkspaceMode
|
|
|
|
|
{
|
|
|
|
|
[CommandLine("-ClientAndStream=")]
|
|
|
|
|
[Description("Specifies client and stream pairs, in the format Client:Stream")]
|
|
|
|
|
List<string> ClientAndStreamParams = new List<string>();
|
|
|
|
|
|
|
|
|
|
[CommandLine("-Filter=")]
|
|
|
|
|
[Description("Filters for the files to sync, in P4 syntax (eg. /Engine/...)")]
|
|
|
|
|
List<string> Filters = new List<string>();
|
|
|
|
|
|
2020-09-01 14:07:48 -04:00
|
|
|
[CommandLine("-FilterFile=")]
|
|
|
|
|
[Description("A file containing a list of paths to filter when syncing, in P4 syntax (eg. /Engine/...)")]
|
|
|
|
|
FileReference FilterFile;
|
|
|
|
|
|
2019-09-27 16:21:33 -04:00
|
|
|
[CommandLine("-FakeSync")]
|
|
|
|
|
[Description("Simulates the sync without actually fetching any files")]
|
|
|
|
|
bool bFakeSync = false;
|
|
|
|
|
|
|
|
|
|
protected override void Execute(Repository Repo)
|
|
|
|
|
{
|
|
|
|
|
List<string> ExpandedFilters = ExpandFilters(Filters);
|
2020-09-01 14:07:48 -04:00
|
|
|
if (FilterFile != null)
|
|
|
|
|
{
|
|
|
|
|
if (!FileReference.Exists(FilterFile))
|
|
|
|
|
{
|
|
|
|
|
throw new FileNotFoundException(string.Format("Filter file '{0}' could not be found!", FilterFile), FilterFile.FullName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExpandedFilters.AddRange(FileReference.ReadAllLines(FilterFile));
|
|
|
|
|
}
|
2019-09-27 16:21:33 -04:00
|
|
|
|
|
|
|
|
List<KeyValuePair<string, string>> ClientAndStreams = ParseClientAndStreams(ClientAndStreamParams);
|
2020-09-01 14:07:48 -04:00
|
|
|
List<string> DistinctFilters = ExpandedFilters.Distinct(StringComparer.InvariantCultureIgnoreCase).ToList();
|
|
|
|
|
Repo.Populate(ClientAndStreams, DistinctFilters, bFakeSync);
|
2019-09-27 16:21:33 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|