private static void ProcessFileEntry(ProgramArgs args, PackageEntry packageConfigEntry, BuildConfigPackage buildConfigPackage, ZipFile zipFile) { var dirName = Path.GetDirectoryName(packageConfigEntry.GamePath); if (!string.IsNullOrWhiteSpace(dirName)) { var newDirName = dirName; if (!newDirName.EndsWith("/")) { newDirName += "/"; } if (zipFile[newDirName] == null) { zipFile.AddDirectoryByName(newDirName); } } var packageBasePath = Path.Combine(Path.GetDirectoryName(args.BuildConfigPath) ?? "", "src", buildConfigPackage.SourceName); var path = Path.Combine(packageBasePath, packageConfigEntry.LocalPath); if (!File.Exists(path)) { throw new Exception($"Package {buildConfigPackage.SourceName}: Directory {path} does not exist"); } var data = File.ReadAllBytes(path); zipFile.AddEntry(packageConfigEntry.GamePath, data); }
private static void ProcessDirectoryEntry(ProgramArgs args, PackageEntry packageConfigEntry, BuildConfigPackage buildConfigPackage, ZipFile zipFile) { var packageBasePath = Path.Combine(Path.GetDirectoryName(args.BuildConfigPath) ?? "", "src", buildConfigPackage.SourceName); var directoryPath = Path.Combine(packageBasePath, packageConfigEntry.LocalPath); if (!Directory.Exists(directoryPath)) { throw new Exception($"Package {buildConfigPackage.SourceName}: Directory {directoryPath} does not exist"); } Console.WriteLine($"Read files from {directoryPath}..."); zipFile.AddDirectory(directoryPath, packageConfigEntry.GamePath); }
private static void ProcessPackageEntry(ProgramArgs args, PackageEntry packageConfigEntry, BuildConfigPackage buildConfigPackage, ZipFile zipFile) { switch (packageConfigEntry.Type) { // check entry type. if we're working with a file, just write the data - otherwise, create a hierarchy case PackageEntryType.File: ProcessFileEntry(args, packageConfigEntry, buildConfigPackage, zipFile); break; case PackageEntryType.Directory: ProcessDirectoryEntry(args, packageConfigEntry, buildConfigPackage, zipFile); break; default: throw new ArgumentOutOfRangeException(); } }