public Task Run(Dictionary <string, string> cmdParams) { var s1 = new SolutionGenerator(); var parsedParams = new CmdParams(cmdParams); var settings = new SolutionSettings { IsWeb = parsedParams.IsWeb ?? true, IsApp = parsedParams.IsApp ?? true, BgTeamVersion = parsedParams.BgTeamVersion ?? _appSettings.BgTeamVersion, }; s1.Generate(parsedParams.CompanyName ?? _appSettings.NameCompany, parsedParams.ProjectName ?? _appSettings.NameProject, settings); return(Task.CompletedTask); }
public void Generate(string @namespace, string name, SolutionSettings settings) { var folder = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "result"); if (Directory.Exists(folder)) { Directory.Delete(folder, true); } 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}{Path.DirectorySeparatorChar}{nameSln}.sln", file); File.Copy("./Resourse/LICENSE", $"{folder}/LICENSE"); File.Copy("./Resourse/README.md", $"{folder}/README.md"); File.Copy("./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)); File.Copy(item, dest); } foreach (var item in Directory.EnumerateFiles("./Resourse/lint", "*", SearchOption.AllDirectories)) { var dest = $"{folder}/{Path.GetRelativePath("./Resourse/", item)}"; Directory.CreateDirectory(Path.GetDirectoryName(dest)); File.Copy(item, dest); } foreach (var item in Directory.EnumerateFiles("./Resourse/wiki-generator", "*", SearchOption.AllDirectories)) { var dest = $"{folder}/{Path.GetRelativePath("./Resourse/", item)}"; Directory.CreateDirectory(Path.GetDirectoryName(dest)); File.Copy(item, dest); } }
private IEnumerable <ProjectInfoItem> GenerateProjects(string name, string folder, string path, SolutionSettings settings) { var result = new List <ProjectInfoItem>(); var fullPath = $"{folder}{Path.DirectorySeparatorChar}{path}"; var fapps = new ProjectInfoItem("Apps", $"Apps", ProjectTypeEnum.Folder); var fmain = new ProjectInfoItem("Main", $"Main", ProjectTypeEnum.Folder); var fshared = new ProjectInfoItem("Shared", $"Shared", ProjectTypeEnum.Folder); var fsrv = new ProjectInfoItem("Services", $"Services", ProjectTypeEnum.Folder); var ftest = new ProjectInfoItem("Tests", $"Tests", ProjectTypeEnum.Folder); var fconfigs = new ProjectInfoItem("configs", $"configs", ProjectTypeEnum.Folder) { Description = @"ProjectSection(SolutionItems) = preProject shared\configs\connectionStrings.Development.json = shared\configs\connectionStrings.Development.json shared\configs\connectionStrings.Production.json = shared\configs\connectionStrings.Production.json shared\configs\serilog.Development.json = shared\configs\serilog.Development.json shared\configs\serilog.Production.json = shared\configs\serilog.Production.json EndProjectSection" , }; var p1 = new ProjectGenerator($"{name}.Common", fullPath); p1.ProjectFile(new[] { ("bgTeam.Core", settings.BgTeamVersion) });