Ejemplo n.º 1
0
        private static string[] GetAssemblyDirectories(string packageDirectory)
        {
            string GetBestFrameworkDirectory(string libDirectory)
            {
                var frameworkDirectory = PathConstruction.Combine(libDirectory, "lib");

                if (!Directory.Exists(frameworkDirectory))
                {
                    return(null);
                }

                var bestFramework = Directory.GetDirectories(frameworkDirectory)
                                    .Select(Path.GetFileName)
                                    .Where(x => x.StartsWith("dotnet") || x.StartsWith("net"))
                                    .OrderBy(x => x.StartsWith("dotnet") || x.StartsWith("netstandard") ? $"!{x}" : x)
                                    .First();

                return(PathConstruction.Combine(frameworkDirectory, bestFramework));
            }

            return(Directory.GetDirectories(packageDirectory)
                   .Select(GetBestFrameworkDirectory)
                   .WhereNotNull()
                   .ToArray());
        }
Ejemplo n.º 2
0
        public void GenerateSpecifications()
        {
            Console.WriteLine($"Generating {ToolName} specifications...");

            var tool = GenerateTool(PathConstruction.Combine(_outputFolder, $"{ToolName}.json"));

            using (var parser = CreateSpecificationParser())
            {
                parser.Populate(tool);
            }

            PopulateReferences(tool);

            if (_overwriteFilePath != null)
            {
                SpecificationModifier.OverwriteFromFile(tool, _overwriteFilePath);
            }

            Directory.CreateDirectory(_outputFolder);
            ToolSerializer.Save(tool, tool.SpecificationFile);

            Console.WriteLine();
            Console.WriteLine("Generation finished.");
            Console.WriteLine($"Created Tasks: {tool.Tasks.Count}");
            Console.WriteLine($"Created Data Classes: {tool.DataClasses.Count}");
            Console.WriteLine($"Created Enumerations: {tool.Enumerations.Count}");
            Console.WriteLine($"Created Common Task Properties: {tool.CommonTaskProperties.Count}");
            Console.WriteLine($"Created Common Task Property Sets: {tool.CommonTaskPropertySets.Count}");
        }
Ejemplo n.º 3
0
        public static void GenerateSpecifications(SpecificationGeneratorSettings settings)
        {
            Console.WriteLine("Generating Helm specifications...");

            var definitions = DefinitionLoader.LoadDefinitions(settings.DefinitionFolder);

            definitions.SelectMany(x => x.Options).Concat(definitions.SelectMany(x => x.InheritedOptions)).Select(x => x.Type).ToHashSet()
            .OrderBy(x => x).ForEach(x => Console.WriteLine(x));
            var tool = DefinitionParser.Parse(definitions, settings.Reference);

            var overwrites = settings.OverwriteFile != null?DefinitionLoader.LoadOverwrites(settings.OverwriteFile) : null;

            if (overwrites != null)
            {
                SpecificationModifier.Overwrite(tool, overwrites);
            }

            tool.SpecificationFile = PathConstruction.Combine(settings.OutputFolder, "Helm.json");
            Directory.CreateDirectory(settings.OutputFolder);
            ToolSerializer.Save(tool, tool.SpecificationFile);

            Console.WriteLine();
            Console.WriteLine("Generation finished.");
            Console.WriteLine($"Created Tasks: {tool.Tasks.Count}");
            Console.WriteLine($"Created Data Classes: {tool.DataClasses.Count}");
            Console.WriteLine($"Created Enumerations: {tool.Enumerations.Count}");
            Console.WriteLine($"Created Common Task Properties: {tool.CommonTaskProperties.Count}");
            Console.WriteLine($"Created Common Task Property Sets: {tool.CommonTaskPropertySets.Count}");
        }
Ejemplo n.º 4
0
        private static AssemblyDefinition[] LoadAssemblies(string packageDirectory)
        {
            var assemblyDirectory = PathConstruction.Combine(packageDirectory, "tools");

            var assemblyResolver = new DefaultAssemblyResolver();

            assemblyResolver.AddSearchDirectory(assemblyDirectory);
            return(PathConstruction.GlobFiles(assemblyDirectory, "docfx.exe")
                   .Select(x => AssemblyDefinition.ReadAssembly(x, new ReaderParameters {
                AssemblyResolver = assemblyResolver
            }))
                   .ToArray());
        }
Ejemplo n.º 5
0
        // TODO: allow wildcard matching? [Solution("nuke-*.sln")] -- no globbing?
        // TODO: for just [Solution] without parameter being passed, do wildcard search?
        private string GetSolutionFile(MemberInfo member)
        {
            if (_relativePath != null)
            {
                return(PathConstruction.Combine(NukeBuild.RootDirectory, _relativePath));
            }

            var parameterValue = ParameterService.Instance.GetParameter <PathConstruction.AbsolutePath>(member);

            if (parameterValue != null)
            {
                return(parameterValue);
            }

            return(GetSolutionFileFromConfigurationFile());
        }
Ejemplo n.º 6
0
        // TODO: allow wildcard matching? [Solution("nuke-*.sln")] -- no globbing?
        // TODO: for just [Solution] without parameter being passed, do wildcard search?
        private string GetSolutionFile(string memberName)
        {
            var parameter = ParameterService.Instance.GetParameter <string>(memberName);

            if (parameter != null)
            {
                return(PathConstruction.HasPathRoot(parameter)
                    ? parameter :
                       PathConstruction.Combine(EnvironmentInfo.WorkingDirectory, parameter));
            }

            if (_solutionFileRootRelativePath != null)
            {
                return(PathConstruction.Combine(NukeBuild.Instance.RootDirectory, _solutionFileRootRelativePath));
            }

            return(NukeBuild.Instance.SolutionFile);
        }
Ejemplo n.º 7
0
        public static void GenerateSpecifications(SpecificationGeneratorSettings settings)
        {
            Console.WriteLine("Generating docker specifications...");
            var definitions =
                DefinitionFetcher.GetCommandDefinitionsFromFolder(settings.DefinitionFolder, settings.Reference, settings.CommandsToSkip);
            var tool = DefinitionParser.GenerateTool(definitions);

            Directory.CreateDirectory(settings.OutputFolder);
            ToolSerializer.Save(tool, PathConstruction.Combine(settings.OutputFolder, "Docker.json"));

            Console.WriteLine();
            Console.WriteLine("Generation finished.");
            Console.WriteLine($"Created Tasks: {tool.Tasks.Count}");
            Console.WriteLine($"Created Data Classes: {tool.DataClasses.Count}");
            Console.WriteLine($"Created Enumerations: {tool.Enumerations.Count}");
            Console.WriteLine($"Created Common Task Properties: {tool.CommonTaskProperties.Count}");
            Console.WriteLine($"Created Common Task Property Sets: {tool.CommonTaskPropertySets.Count}");
        }
Ejemplo n.º 8
0
        public static void UncompressZip(string archiveFile, string directory)
        {
            using (var fileStream = File.OpenRead(archiveFile))
                using (var zipFile = new ICSharpCode.SharpZipLib.Zip.ZipFile(fileStream))
                {
                    var entries = zipFile.Cast <ZipEntry>().Where(x => !x.IsDirectory);
                    foreach (var entry in entries)
                    {
                        var file = PathConstruction.Combine(directory, entry.Name);
                        FileSystemTasks.EnsureExistingParentDirectory(file);

                        using (var entryStream = zipFile.GetInputStream(entry))
                            using (var outputStream = File.Open(file, FileMode.Create))
                            {
                                entryStream.CopyTo(outputStream);
                            }
                    }
                }

            Logger.Log($"Uncompressed '{archiveFile}' to '{directory}'.");
        }
Ejemplo n.º 9
0
 // TODO: allow wildcard matching? [Solution("nuke-*.sln")] -- no globbing?
 // TODO: for just [Solution] without parameter being passed, do wildcard search?
 private string GetSolutionFileFromParametersFile(MemberInfo member)
 {
     return(_relativePath != null
         ? PathConstruction.Combine(NukeBuild.RootDirectory, _relativePath)
         : EnvironmentInfo.GetParameter <AbsolutePath>(member).NotNull($"No solution file defined for '{member.Name}'."));
 }