public void Generate(string @namespace, string name, SolutionSettings settings) { var folder = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "result"); if (Directory.Exists(folder)) { Console.WriteLine($"Dropping existing directory {folder}{GeneratorHelper.NewLine}"); Directory.Delete(folder, true); } Console.WriteLine($"Generating project in {folder}{GeneratorHelper.NewLine}"); var nameSln = string.Join('.', new[] { @namespace, name }.Where(x => x != null)); var projects = GenerateProjects(nameSln, folder, "src", settings); var file = ProjectsFile(projects); File.WriteAllText($"{folder}{GeneratorHelper.Separator}{nameSln}.sln", file); GeneratorHelper.CopyFile("./Resourse/LICENSE", $"{folder}/LICENSE"); GeneratorHelper.CopyFile("./Resourse/README.md", $"{folder}/README.md"); GeneratorHelper.CopyFile("./Resourse/.gitignore", $"{folder}/.gitignore"); File.WriteAllText($"{folder}/coverage.bat", File.ReadAllText("./Resourse/coverage.bat").Replace("$namespace$", @namespace)); foreach (var item in Directory.EnumerateFiles("./Resourse/shared", "*", SearchOption.AllDirectories)) { var dest = $"{folder}/{Path.GetRelativePath("./Resourse/", item)}"; Directory.CreateDirectory(Path.GetDirectoryName(dest)); GeneratorHelper.CopyFile(item, dest); Console.WriteLine($"Generating project in {folder}"); } foreach (var item in Directory.EnumerateFiles("./Resourse/lint", "*", SearchOption.AllDirectories)) { var dest = $"{folder}/{Path.GetRelativePath("./Resourse/", item)}"; Directory.CreateDirectory(Path.GetDirectoryName(dest)); GeneratorHelper.CopyFile(item, dest); } }