private static void AppendMetadata(ZipArchive archive, ProjectPackageDefinition definition, string version) { var metadata = new ProjectPackage { Id = definition.Id, Project = definition.Project, Name = definition.Name, Description = definition.Description, AssemblyFilename = definition.Assembly, ScriptName = definition.Script, Version = version, }; PackageTools.AppendMetadata(archive, metadata, version); }
/// <summary> /// Creates a Project Package using the specified /// definition file. /// </summary> /// <param name="definition">The project-package definition.</param> /// <param name="rootPath">The root path of the package source.</param> /// <param name="version">The version of the package to create.</param> /// <param name="outputFilename">The filename of the package to create.</param> public static async Task CreatePackage(ProjectPackageDefinition definition, string rootPath, string version, string outputFilename) { var outputFilenameFull = Path.GetFullPath(outputFilename); var outputPath = Path.GetDirectoryName(outputFilenameFull); if (string.IsNullOrEmpty(outputPath)) { throw new ApplicationException("Empty package output path!"); } PathEx.CreatePath(outputPath); await PackageTools.WriteArchive(outputFilename, async archive => { AppendMetadata(archive, definition, version); foreach (var fileDefinition in definition.Files) { var destPath = Path.Combine("bin", fileDefinition.Destination); await PackageTools.AddFiles(archive, rootPath, fileDefinition.Path, destPath, fileDefinition.Exclude?.ToArray()); } }); }