Ejemplo n.º 1
0
        public void GrammarCanParseVersion()
        {
            IResult <List <string> > r = Debian.Grammar.DebianVersionIdentifier.TryParse("2:0.cvs20060823-8+etch1");

            Assert.True(r.WasSuccessful);
            Assert.Equal(r.Value.Count, 3);
            Assert.Equal(r.Value[0], "2");
            Assert.Equal(r.Value[1], "0.cvs20060823");
            Assert.Equal(r.Value[2], "8+etch1");
            r = Debian.Grammar.DebianVersionIdentifier.TryParse("0.svn20060823");
            Assert.True(r.WasSuccessful);
            Assert.True(string.IsNullOrEmpty(r.Value[0]));
            Assert.Equal(r.Value[1], "0.svn20060823");
            r = Debian.Grammar.DebianVersionIdentifier.TryParse("3:0.vers123-1.foosvn20060823-car-8+etch1");
            Assert.False(string.IsNullOrEmpty(r.Value[2]));
            Assert.Equal(r.Value[0], "3");
            Assert.Equal(r.Value[1], "0.vers123-1.foosvn20060823-car");
            Assert.Equal(r.Value[2], "8+etch1");
            Debian d = Debian.Grammar.DebianVersion.Parse("3:0.vers123-1.foosvn20060823-car-8+etch1");

            Assert.Equal(d.Epoch, 3);
            Assert.Equal(d.DebianRevision, "8+etch1");
            Assert.Equal(d.Count, 3);
            Assert.Equal(d[1], "0.vers123-1.foosvn20060823-car");
            d = Debian.Grammar.DebianVersion.Parse("2:3.6.19-1~bpo70+1+b1");
            Assert.Equal(d.Epoch, 2);
            Assert.Equal(d.UpstreamVersion, "3.6.19");
            Assert.Equal(d.DebianRevision, "1~bpo70+1+b1");
        }
Ejemplo n.º 2
0
        public static int Main(string[] parms)
        {
            if (parms.Length != 1)
            {
                Console.WriteLine("Usage: [json-file]");
                return(-1);
            }
            // Read configuration
            var set    = new JsonSerializerSettings();
            var text   = File.ReadAllText(parms.First(), Encoding.UTF8);
            var config = JsonConvert.DeserializeObject <TuxConfig>(text, set);

            config.BuildDirectory = Environment.GetEnvironmentVariable("BUILD_DMG") ?? config.BuildDirectory;
            // Create temporary directory
            var temp = config.AppTemp;

            Directory.CreateDirectory(temp);
            var enc = new UTF8Encoding(false);
            // Write data stuff
            var dataTgz      = Path.Combine(temp, "data.tar.gz");
            var dataFiles    = Directory.GetFiles(config.BuildDirectory, "*.*", SearchOption.AllDirectories);
            var lowerPkgName = config.PkgName.ToLowerInvariant();
            var installRoot  = Path.Combine(".", "opt", lowerPkgName);
            var dataStuff    = new TarInput
            {
                Files      = dataFiles,
                InstallDir = installRoot,
                BaseDir    = config.BuildDirectory
            };
            // Write meta stuff
            var docRoot   = Path.Combine(".", "usr", "share", "doc", lowerPkgName);
            var copyright = Path.Combine(temp, "copyright");

            LinuxIO.WriteScript(copyright, enc, GenerateCopyright(config));
            var changelogTxt = Path.Combine(temp, "changelog");

            LinuxIO.WriteScript(changelogTxt, enc, GenerateChangelog(config));
            var changelog = Path.Combine(temp, "changelog.gz");

            WriteGzArchive(changelog, changelogTxt);
            var metaStuff = new TarInput
            {
                Files      = new[] { copyright, changelog },
                InstallDir = docRoot,
            };

            // Generate RPM data package
            Redhat.Create(config, RpmContent.Wrap(metaStuff), RpmContent.Wrap(dataStuff));
            // Generate DEB data package
            WriteTarGzArchive(dataTgz, metaStuff, dataStuff);
            // Collect control stuff
            var control = Path.Combine(temp, "control");

            Debian.WriteControl(control, config, enc);
            var postinst = Path.Combine(temp, "postinst");

            LinuxIO.WriteScript(postinst, enc, new[]
            {
                "#!/bin/sh",
                "set -e",
                "if [ \"$1\" = \"configure\" ] && [ -x \"`which update-menus 2>/dev/null`\" ]; then",
                "\tupdate-menus",
                "fi"
            });
            var postrm = Path.Combine(temp, "postrm");

            LinuxIO.WriteScript(postrm, enc, new[]
            {
                "#!/bin/sh",
                "set -e",
                "if [ -x \"`which update-menus 2>/dev/null`\" ]; then update-menus; fi"
            });
            // Write control bundle
            var controlTgz = Path.Combine(temp, "control.tar.gz");

            WriteTarGzArchive(controlTgz, new TarInput
            {
                Files      = new[] { control, postinst, postrm },
                InstallDir = Path.Combine(".")
            });
            // Write version
            var binaryFile = Path.Combine(temp, "debian-binary");

            File.WriteAllText(binaryFile, "2.0" + '\n', enc);
            // Write Debian package
            var debFile = $"{config.PackageFile}.deb";

            WriteArFile(debFile, binaryFile, controlTgz, dataTgz);
            // Done
            return(0);
        }