static IEnumerable <string> GenerateChangelog(TuxConfig config) => new[] { $"{config.PkgName.ToLowerInvariant()} ({config.Version}) unstable; urgency=low", "", $" [ {config.Maintainer} ]", " * Ported to Linux", "", $" -- {config.Maintainer} Wed, 12 Oct 2016 15:47:44 +0200", "" };
static IEnumerable <string> GenerateCopyright(TuxConfig config) => new[] { "Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/", $"Upstream-Name: {config.PkgName}", $"Source: {config.Homepage}", "", "Files: *", $"Copyright: 2017 {config.Maintainer}", "License: Proprietary", "" };
public static void WriteControl(string path, TuxConfig config, Encoding enc) { var lines = new List <string>(); Add(lines, "Package", config.PkgName); Add(lines, "Version", config.Version); Add(lines, "Architecture", "amd64"); Add(lines, "Maintainer", config.Maintainer); Add(lines, "Recommends", "mono"); Add(lines, "Section", "gnome"); Add(lines, "Priority", "optional"); Add(lines, "Homepage", config.Homepage); Add(lines, "Description", FormatDesc(config.Description)); File.WriteAllLines(path, lines, enc); }
public static void Create(TuxConfig cfg, params IEnumerable <IContent>[] contents) { var destination = new File(cfg.AppTemp); var arch = Architecture.X86_64; var host = Environment.MachineName; const string license = "Proprietary"; const string release = "unstable"; const string group = "gnome"; var desc = FormatDesc(cfg.Description).Split('\n'); var summary = desc.First(); var description = string.Join(string.Empty, desc.Skip(1)); var include = new Contents(); var packer = new RpmContents(include); var allContents = contents.SelectMany(c => c).ToArray(); Array.ForEach(allContents, packer.Add); var builder = new Builder(); builder.setPackage(cfg.PkgName, cfg.Version, release); builder.setType(RpmType.BINARY); builder.setPlatform(arch, Os.LINUX); builder.setSummary(summary); builder.setDescription(description); builder.setBuildHost(host); builder.setLicense(license); builder.setGroup(group); builder.setPackager(cfg.Maintainer.Split('<').First().Trim()); builder.setVendor(cfg.Maintainer); builder.setUrl(cfg.Homepage); builder.setProvides(cfg.PkgName); builder.setFiles(include); var tmpFileName = Path.Combine(cfg.AppTemp, builder.build(destination)); var fileName = $"{cfg.PackageFile}.rpm"; NetFile.Copy(tmpFileName, fileName, true); }