Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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));
        }
Exemplo n.º 7
0
        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)));
                }
            }
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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)));
                }
            }
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }