/// <summary> /// Constructor. Reads a makefile from disk. /// </summary> /// <param name="Reader">The archive to read from</param> /// <param name="LastWriteTimeUtc">Last modified time for the makefile</param> public TargetMakefile(BinaryArchiveReader Reader, DateTime LastWriteTimeUtc) { CreateTimeUtc = new DateTime(Reader.ReadLong(), DateTimeKind.Utc); ModifiedTimeUtc = LastWriteTimeUtc; Diagnostics = Reader.ReadList(() => Reader.ReadString()); ExternalMetadata = Reader.ReadString(); ExecutableFile = Reader.ReadFileReference(); ReceiptFile = Reader.ReadFileReference(); ProjectIntermediateDirectory = Reader.ReadDirectoryReference(); TargetType = (TargetType)Reader.ReadInt(); ConfigValueTracker = new ConfigValueTracker(Reader); bDeployAfterCompile = Reader.ReadBool(); bHasProjectScriptPlugin = Reader.ReadBool(); AdditionalArguments = Reader.ReadArray(() => Reader.ReadString()); PreBuildScripts = Reader.ReadArray(() => Reader.ReadFileReference()); Actions = Reader.ReadList(() => new Action(Reader)); EnvironmentVariables = Reader.ReadList(() => Tuple.Create(Reader.ReadString(), Reader.ReadString())); OutputItems = Reader.ReadList(() => Reader.ReadFileItem()); ModuleNameToOutputItems = Reader.ReadDictionary(() => Reader.ReadString(), () => Reader.ReadArray(() => Reader.ReadFileItem()), StringComparer.OrdinalIgnoreCase); HotReloadModuleNames = Reader.ReadHashSet(() => Reader.ReadString(), StringComparer.OrdinalIgnoreCase); SourceDirectories = Reader.ReadList(() => Reader.ReadDirectoryItem()); DirectoryToSourceFiles = Reader.ReadDictionary(() => Reader.ReadDirectoryItem(), () => Reader.ReadArray(() => Reader.ReadFileItem())); WorkingSet = Reader.ReadHashSet(() => Reader.ReadFileItem()); CandidatesForWorkingSet = Reader.ReadHashSet(() => Reader.ReadFileItem()); UObjectModules = Reader.ReadList(() => new UHTModuleInfo(Reader)); UObjectModuleHeaders = Reader.ReadList(() => new UHTModuleHeaderInfo(Reader)); PluginFiles = Reader.ReadHashSet(() => Reader.ReadFileItem()); ExternalDependencies = Reader.ReadHashSet(() => Reader.ReadFileItem()); InternalDependencies = Reader.ReadHashSet(() => Reader.ReadFileItem()); }
/// <summary> /// Read a file item as a DirectoryItem and name. This is slower than reading it directly, but results in a significantly smaller archive /// where most files are in the same directories. /// </summary> /// <param name="Reader">Archive to read from</param> /// <returns>FileItem read from the archive</returns> static FileItem ReadCompactFileItemData(this BinaryArchiveReader Reader) { DirectoryItem Directory = Reader.ReadDirectoryItem(); string Name = Reader.ReadString(); FileItem FileItem = FileItem.GetItemByFileReference(FileReference.Combine(Directory.Location, Name)); FileItem.UpdateCachedDirectory(Directory); return(FileItem); }