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()); }
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}"); }
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}"); }
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()); }
// 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()); }
// 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); }
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}"); }
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}'."); }
// 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}'.")); }