private static void BuildPackages()
{
var directory = new DirectoryInfo(BuildDirectory);
XmlSerializer serializer = new XmlSerializer(typeof(game));
var fs = File.Open(directory.GetFiles().First().FullName, FileMode.Open);
var game = (game)serializer.Deserialize(fs);
fs.Close();
var builder = new NuGet.PackageBuilder()
{
Id = game.id,
Description = game.description,
ProjectUrl = new Uri(game.gameurl),
Version = new SemanticVersion(game.version),
Title = game.name,
IconUrl = new Uri(game.iconurl),
};
foreach (var author in game.authors.Split(','))
{
builder.Authors.Add(author);
}
foreach (var tag in game.tags.Split(' '))
{
builder.Tags.Add(tag);
}
// files and maybe release notes
var allFiles = directory
.GetFiles("*.*", SearchOption.AllDirectories)
.Where(x => x.Extension.ToLower() != ".nupkg" && x.Extension.ToLower() != ".o8g");
foreach (var file in allFiles)
{
var path = file.FullName;
var relPath = path.Replace(directory.FullName, "\\def");
var pf = new PhysicalPackageFile()
{
SourcePath = path, TargetPath = relPath
};
builder.Files.Add(pf);
}
var feedPath = Path.Combine(directory.FullName, game.name + '-' + game.version + ".nupkg");
var olPath = Path.Combine(directory.FullName, game.name + '-' + game.version + ".o8g");
var filestream = File.Open(feedPath, FileMode.Create, FileAccess.ReadWrite, FileShare.None);
builder.Save(filestream);
filestream.Flush(true);
filestream.Close();
filestream = File.Open(olPath, FileMode.Create, FileAccess.ReadWrite, FileShare.None);
builder.Save(filestream);
filestream.Flush(true);
filestream.Close();
}