Esempio n. 1
0
        private static string buildNuGetSpecFile(PackageDescription context)
        {
            var engine = new RazorEngine <RazorTemplateBase>();

            using (var reader = new StreamReader("Package.cshtml", true))
            {
                var output = engine.RenderTemplate(reader, new[] { "System.Windows.Forms.dll" }, context);
                if (output == null)
                {
                    throw new InvalidOperationException("*** ERROR:\r\n" + engine.ErrorMessage);
                }
                return(output);
            }
        }
Esempio n. 2
0
        private static void Main()
        {
            var codeFiles = Directory.GetFiles(SourceRootPath, "*.cs", SearchOption.AllDirectories);

            foreach(var codeFile in codeFiles)
            {
                var r = File.OpenRead(codeFile);
                var buffer = new byte[1024];
                r.Read(buffer, 0, 1024);

                var codeBlock = System.Text.Encoding.UTF8.GetString(buffer);
                var nuspecRegion = Regex.Match(codeBlock, @"#region nuspec(.|\n)*?#endregion").Value.Replace("#region nuspec", "").Replace("#endregion", "").Replace("$nuspec = ", "");
                if( !string.IsNullOrEmpty(nuspecRegion) )
                {
                    var result = Regex.Replace(nuspecRegion, @"//\s+", "");
                    using(var stringReader = new StringReader(result))
                    {
                        using(var reader = new JsonTextReader(stringReader))
                        {
                            var serializer = new JsonSerializer();
                            var packageConfig = serializer.Deserialize<PackageConfig>(reader);

                            var packageId = packageConfig.Id;
                            if( packageId.Equals("$id$", StringComparison.InvariantCultureIgnoreCase) )
                            {
                                packageId = codeFile.Replace(SourceRootPath, "").TrimStart('\\').Replace(".cs", "").Replace(@"\", ".");
                            }

                            Console.WriteLine("Parsing package with id: " + packageId);

                            var packagePath = Path.Combine(BuildRootPath, packageId);
                            ensurePath(packagePath);

                            var packageDescription = new PackageDescription
                            {
                                Id = packageId,
                                Version = "1.0",
                                Authors = packageConfig.Authors,
                                Owners = packageConfig.Owners,
                                LicenseUrl = packageConfig.LicenseUrl,
                                ProjectUrl = packageConfig.ProjectUrl,
                                IconUrl = packageConfig.IconUrl,
                                Description = packageConfig.Description,
                                RequireLicenseAcceptance = packageConfig.RequireLicenseAcceptance,
                                Tags = packageConfig.Tags,
                            };

                            var contentPath = Path.Combine(packagePath, "content");
                            ensurePath(contentPath);

                            var codeFileName = codeFile.Replace(SourceRootPath, "").TrimStart('\\');
                            foreach(var file in new[] {codeFileName}.Concat(packageConfig.Dependencies.Include))
                            {
                                var sourcePath = Path.Combine(SourceRootPath, file);
                                var fileExists = File.Exists(sourcePath);

                                color(fileExists ? ConsoleColor.DarkGreen : ConsoleColor.DarkRed, "\t" + file);

                                if( fileExists==false )
                                {
                                    color(ConsoleColor.Yellow, "\tSkipping: " + packageId);
                                    continue;
                                }

                                var destinationPath = Path.Combine(contentPath, Path.GetDirectoryName(file.Replace(@"Magnetix\", "")));
                                ensurePath(destinationPath);
                                destinationPath = Path.Combine(destinationPath, Path.GetFileName(sourcePath) + ".pp");
                                transform(sourcePath, destinationPath);

                                if( packageConfig.Dependencies!=null )
                                {
                                    var dependencies = new List<Dependency>();

                                    foreach(var dependency in packageConfig.Dependencies.Require)
                                    {
                                        color(ConsoleColor.DarkMagenta, () =>
                                        {
                                            Console.WriteLine("\tuses: " + dependency.Id);
                                            dependencies.Add(new Dependency {Id = dependency.Id, Version = dependency.Version});
                                        });
                                    }

                                    packageDescription.Dependencies = dependencies.ToArray();
                                }

                                var template = buildNuGetSpecFile(packageDescription);
                                File.WriteAllText(Path.Combine(packagePath, packageId + ".nuspec"), template);
                            }
                        }
                    }
                }
            }

            return;
        }
Esempio n. 3
0
        private static void Main()
        {
            var codeFiles = Directory.GetFiles(SourceRootPath, "*.cs", SearchOption.AllDirectories);

            foreach (var codeFile in codeFiles)
            {
                var r      = File.OpenRead(codeFile);
                var buffer = new byte[1024];
                r.Read(buffer, 0, 1024);

                var codeBlock    = System.Text.Encoding.UTF8.GetString(buffer);
                var nuspecRegion = Regex.Match(codeBlock, @"#region nuspec(.|\n)*?#endregion").Value.Replace("#region nuspec", "").Replace("#endregion", "").Replace("$nuspec = ", "");
                if (!string.IsNullOrEmpty(nuspecRegion))
                {
                    var result = Regex.Replace(nuspecRegion, @"//\s+", "");
                    using (var stringReader = new StringReader(result))
                    {
                        using (var reader = new JsonTextReader(stringReader))
                        {
                            var serializer    = new JsonSerializer();
                            var packageConfig = serializer.Deserialize <PackageConfig>(reader);

                            var packageId = packageConfig.Id;
                            if (packageId.Equals("$id$", StringComparison.InvariantCultureIgnoreCase))
                            {
                                packageId = codeFile.Replace(SourceRootPath, "").TrimStart('\\').Replace(".cs", "").Replace(@"\", ".");
                            }

                            Console.WriteLine("Parsing package with id: " + packageId);

                            var packagePath = Path.Combine(BuildRootPath, packageId);
                            ensurePath(packagePath);

                            var packageDescription = new PackageDescription
                            {
                                Id          = packageId,
                                Version     = "1.0",
                                Authors     = packageConfig.Authors,
                                Owners      = packageConfig.Owners,
                                LicenseUrl  = packageConfig.LicenseUrl,
                                ProjectUrl  = packageConfig.ProjectUrl,
                                IconUrl     = packageConfig.IconUrl,
                                Description = packageConfig.Description,
                                RequireLicenseAcceptance = packageConfig.RequireLicenseAcceptance,
                                Tags = packageConfig.Tags,
                            };

                            var contentPath = Path.Combine(packagePath, "content");
                            ensurePath(contentPath);

                            var codeFileName = codeFile.Replace(SourceRootPath, "").TrimStart('\\');
                            foreach (var file in new[] { codeFileName }.Concat(packageConfig.Dependencies.Include))
                            {
                                var sourcePath = Path.Combine(SourceRootPath, file);
                                var fileExists = File.Exists(sourcePath);

                                color(fileExists ? ConsoleColor.DarkGreen : ConsoleColor.DarkRed, "\t" + file);

                                if (fileExists == false)
                                {
                                    color(ConsoleColor.Yellow, "\tSkipping: " + packageId);
                                    continue;
                                }

                                var destinationPath = Path.Combine(contentPath, Path.GetDirectoryName(file.Replace(@"Magnetix\", "")));
                                ensurePath(destinationPath);
                                destinationPath = Path.Combine(destinationPath, Path.GetFileName(sourcePath) + ".pp");
                                transform(sourcePath, destinationPath);

                                if (packageConfig.Dependencies != null)
                                {
                                    var dependencies = new List <Dependency>();

                                    foreach (var dependency in packageConfig.Dependencies.Require)
                                    {
                                        color(ConsoleColor.DarkMagenta, () =>
                                        {
                                            Console.WriteLine("\tuses: " + dependency.Id);
                                            dependencies.Add(new Dependency {
                                                Id = dependency.Id, Version = dependency.Version
                                            });
                                        });
                                    }

                                    packageDescription.Dependencies = dependencies.ToArray();
                                }

                                var template = buildNuGetSpecFile(packageDescription);
                                File.WriteAllText(Path.Combine(packagePath, packageId + ".nuspec"), template);
                            }
                        }
                    }
                }
            }

            return;
        }
Esempio n. 4
0
        private static string buildNuGetSpecFile(PackageDescription context)
        {
            var engine = new RazorEngine<RazorTemplateBase>();

            using(var reader = new StreamReader("Package.cshtml", true))
            {
                var output = engine.RenderTemplate(reader, new[] {"System.Windows.Forms.dll"}, context);
                if( output==null )
                {
                    throw new InvalidOperationException("*** ERROR:\r\n" + engine.ErrorMessage);
                }
                return output;
            }
        }