public void CreateDeb( string debianConfigJsonFile, string packageName, string packageVersion, string inputBinariesDirectory, Dictionary <string, string> debianConfigVariables, string outputFile, string manpagesDirectory = null, bool versionManpages = false, IEnumerable <string> debianFiles = null) { string debIntermediatesDirectory = Path.Combine(_intermediateDirectory, packageName, packageVersion); if (Directory.Exists(debIntermediatesDirectory)) { FS.Rmdir(debIntermediatesDirectory); } FS.Mkdirp(debIntermediatesDirectory); string layoutDirectory = Path.Combine(debIntermediatesDirectory, "debianLayoutDirectory"); var debianLayoutDirectories = new DebianLayoutDirectories(layoutDirectory); CreateEmptyDebianLayout(debianLayoutDirectories); CopyFilesToDebianLayout( debianLayoutDirectories, packageVersion, debianConfigJsonFile, inputBinariesDirectory, manpagesDirectory, versionManpages, debianFiles); ReplaceDebianConfigJsonVariables(debianLayoutDirectories, debianConfigVariables); CreateDebianPackage(debianLayoutDirectories, debIntermediatesDirectory, outputFile, packageName, packageVersion); }
public void CreateDeb( string debianConfigJsonFile, string packageName, string packageVersion, string inputBinariesDirectory, Dictionary<string, string> debianConfigVariables, string outputFile, string manpagesDirectory = null, bool versionManpages = false, IEnumerable<string> debianFiles = null) { string debIntermediatesDirectory = Path.Combine(_intermediateDirectory, packageName, packageVersion); if (Directory.Exists(debIntermediatesDirectory)) { FS.Rmdir(debIntermediatesDirectory); } FS.Mkdirp(debIntermediatesDirectory); string layoutDirectory = Path.Combine(debIntermediatesDirectory, "debianLayoutDirectory"); var debianLayoutDirectories = new DebianLayoutDirectories(layoutDirectory); CreateEmptyDebianLayout(debianLayoutDirectories); CopyFilesToDebianLayout( debianLayoutDirectories, packageVersion, debianConfigJsonFile, inputBinariesDirectory, manpagesDirectory, versionManpages, debianFiles); ReplaceDebianConfigJsonVariables(debianLayoutDirectories, debianConfigVariables); CreateDebianPackage(debianLayoutDirectories, debIntermediatesDirectory, outputFile, packageName, packageVersion); }
private void CreateEmptyDebianLayout(DebianLayoutDirectories layoutDirectories) { if (Directory.Exists(layoutDirectories.LayoutDirectory)) { FS.Rmdir(layoutDirectories.LayoutDirectory); } Directory.CreateDirectory(layoutDirectories.LayoutDirectory); Directory.CreateDirectory(layoutDirectories.AbsolutePlacement); Directory.CreateDirectory(layoutDirectories.PackageRoot); Directory.CreateDirectory(layoutDirectories.Samples); Directory.CreateDirectory(layoutDirectories.Docs); }
private void ReplaceDebianConfigJsonVariables( DebianLayoutDirectories debianLayoutDirectories, Dictionary <string, string> debianConfigVariables) { var debianConfigFile = Path.Combine(debianLayoutDirectories.LayoutDirectory, s_debianConfigJsonFileName); var debianConfigFileContents = File.ReadAllText(debianConfigFile); foreach (var variable in debianConfigVariables) { var variableToken = $"%{variable.Key}%"; debianConfigFileContents = debianConfigFileContents.Replace(variableToken, variable.Value); } File.WriteAllText(debianConfigFile, debianConfigFileContents); }
private void CreateEmptyDebianLayout(DebianLayoutDirectories layoutDirectories) { if (Directory.Exists(layoutDirectories.LayoutDirectory)) { FS.Rmdir(layoutDirectories.LayoutDirectory); } Directory.CreateDirectory(layoutDirectories.LayoutDirectory); Directory.CreateDirectory(layoutDirectories.AbsolutePlacement); Directory.CreateDirectory(layoutDirectories.PackageRoot); Directory.CreateDirectory(layoutDirectories.Samples); Directory.CreateDirectory(layoutDirectories.Docs); Directory.CreateDirectory(layoutDirectories.DebianFiles); }
private void CopyFilesToDebianLayout( DebianLayoutDirectories layoutDirectories, string debianConfigFile, string inputBinariesDirectory, string manpagesDirectory) { FS.CopyRecursive(inputBinariesDirectory, layoutDirectories.PackageRoot); if (manpagesDirectory != null) { FS.CopyRecursive(manpagesDirectory, layoutDirectories.Docs); } File.Copy(debianConfigFile, Path.Combine(layoutDirectories.LayoutDirectory, s_debianConfigJsonFileName)); }
private void CopyFilesToDebianLayout( DebianLayoutDirectories layoutDirectories, string packageVersion, string debianConfigFile, string inputBinariesDirectory, string manpagesDirectory, bool versionManpages, IEnumerable <string> debianFiles) { FS.CopyRecursive(inputBinariesDirectory, layoutDirectories.PackageRoot); if (manpagesDirectory != null) { FS.CopyRecursive(manpagesDirectory, layoutDirectories.Docs); // Append version to all manpage files if (versionManpages) { foreach (var file in Directory.EnumerateFiles(layoutDirectories.Docs, "*", SearchOption.AllDirectories)) { var versionedFile = Path.Combine( Path.GetDirectoryName(file), $"{Path.GetFileNameWithoutExtension(file)}-{packageVersion}{Path.GetExtension(file)}"); if (File.Exists(versionedFile)) { File.Delete(versionedFile); } File.Move(file, versionedFile); } } } File.Copy(debianConfigFile, Path.Combine(layoutDirectories.LayoutDirectory, s_debianConfigJsonFileName)); if (debianFiles != null) { foreach (var debianFile in debianFiles) { File.Copy(debianFile, Path.Combine(layoutDirectories.DebianFiles, Path.GetFileName(debianFile))); } } }
private void CreateDebianPackage( DebianLayoutDirectories debianLayoutDirectories, string intermediatesOutputDirectory, string outputFile, string packageName, string packageVersion) { _dotnet.Exec("deb-tool", "-i", debianLayoutDirectories.LayoutDirectory, "-o", intermediatesOutputDirectory, "-n", packageName, "-v", packageVersion) .WorkingDirectory(_consumingProjectDirectory) .Execute() .EnsureSuccessful(); var debianFile = Directory.EnumerateFiles(intermediatesOutputDirectory, "*.deb").First(); File.Copy(debianFile, outputFile, true); }
private void CopyFilesToDebianLayout( DebianLayoutDirectories layoutDirectories, string packageVersion, string debianConfigFile, string inputBinariesDirectory, string manpagesDirectory, bool versionManpages, IEnumerable<string> debianFiles) { FS.CopyRecursive(inputBinariesDirectory, layoutDirectories.PackageRoot); if (manpagesDirectory != null) { FS.CopyRecursive(manpagesDirectory, layoutDirectories.Docs); // Append version to all manpage files if (versionManpages) { foreach (var file in Directory.EnumerateFiles(layoutDirectories.Docs, "*", SearchOption.AllDirectories)) { var versionedFile = Path.Combine( Path.GetDirectoryName(file), $"{Path.GetFileNameWithoutExtension(file)}-{packageVersion}{Path.GetExtension(file)}"); if (File.Exists(versionedFile)) { File.Delete(versionedFile); } File.Move(file, versionedFile); } } } File.Copy(debianConfigFile, Path.Combine(layoutDirectories.LayoutDirectory, s_debianConfigJsonFileName)); if (debianFiles != null) { foreach (var debianFile in debianFiles) { File.Copy(debianFile, Path.Combine(layoutDirectories.DebianFiles, Path.GetFileName(debianFile))); } } }
private void ReplaceDebianConfigJsonVariables( DebianLayoutDirectories debianLayoutDirectories, Dictionary<string, string> debianConfigVariables) { var debianConfigFile = Path.Combine(debianLayoutDirectories.LayoutDirectory, s_debianConfigJsonFileName); var debianConfigFileContents = File.ReadAllText(debianConfigFile); foreach (var variable in debianConfigVariables) { var variableToken = $"%{variable.Key}%"; debianConfigFileContents = debianConfigFileContents.Replace(variableToken, variable.Value); } File.WriteAllText(debianConfigFile, debianConfigFileContents); }