public List <Task> Parse(List <Models.Docker> dockers) { var tasks = new List <TaskGenerator.Models.Task>(); foreach (Models.Docker docker in dockers) { TaskGenerator.Models.Task task = new TaskGenerator.Models.Task() { Namespace = "FlubuCore.Tasks.Docker", ProjectName = "FlubuCore", Methods = new List <Method>(), TaskResult = "int", TaskDescription = docker.Short }; task.Constructor = new Constructor { Arguments = new List <ConstructorArgument>(), }; var splitedCommands = docker.Command.Split(' ', '-'); if (splitedCommands.Contains("cp")) { continue; } string path = string.Empty; if (splitedCommands.Length > 2) { path = $"\\{splitedCommands[1].FirstCharToUpper()}"; task.Namespace = $"{task.Namespace}.{splitedCommands[1].FirstCharToUpper()}"; task.Parent = splitedCommands[1].FirstCharToUpper(); } task.ExecutablePath = splitedCommands[0]; var splitedName = splitedCommands.Select(x => x.FirstCharToUpper()).ToList(); task.Constructor.Arguments.Add(new ConstructorArgument { ArgumentKey = docker.Command.Substring(6).TrimStart(), }); task.TaskName = $"{string.Join(string.Empty, splitedName)}Task"; task.FileName = $"Tasks{path}\\{task.TaskName}.cs"; if (docker.Options == null) { continue; } ParseCommandsAndAddCommands(docker, task); ParseOptions(docker, task); tasks.Add(task); } return(tasks); }
private void AddArgumentToConstructor(TaskGenerator.Models.Task task, FlubuCore.Azure.Models.Parameter parameter) { task.Constructor.Arguments.Add(new Argument { ArgumentKey = parameter.Name.Split(' ')[0], HasArgumentValue = true, Parameter = new TaskGenerator.Models.Parameter { ParameterType = "string", ParameterName = ParseParameterName(parameter.Name), }, }); }
private void AddNewMethod(TaskGenerator.Models.Task task, FlubuCore.Azure.Models.Parameter parameter) { if (parameter.IsRequired.HasValue && parameter.IsRequired.Value) { return; } var item = new Method(); item.MethodName = ParseMethodName(parameter.Name); item.MethodSummary = parameter.Summary; item.Argument = new Argument { ArgumentKey = parameter.Name.Split(' ')[0], HasArgumentValue = true, Parameter = new TaskGenerator.Models.Parameter { ParameterType = "string", ParameterName = ParseParameterName(parameter.Name), }, }; task.Methods.Add(item); }
public List <Task> Parse(List <Models.Azure> azures) { var tasks = new List <TaskGenerator.Models.Task>(); foreach (Models.Azure azure in azures) { foreach (var item in azure.Items) { var splitedName = item.Name.Split(' ', '-').ToList(); if (splitedName.Count == 1 || splitedName.Contains("List")) { continue; } splitedName.RemoveAt(0); splitedName = splitedName.Select(x => x.FirstCharToUpper()).ToList(); TaskGenerator.Models.Task task = new TaskGenerator.Models.Task() { Namespace = "FlubuCore.Azure.Tasks", ProjectName = "FlubuCore.Azure", Methods = new List <Method>(), }; task.TaskName = $"Azure{string.Join(string.Empty, splitedName)}Task"; string fileName; if (splitedName.Count > 1) { task.Namespace = $"{task.Namespace}.{splitedName[0]}"; fileName = $"Tasks\\{splitedName[0]}\\{task.TaskName}.cs"; task.Parent = splitedName[0]; } else { fileName = $"Tasks\\{task.TaskName}.cs"; } task.FileName = fileName; task.Constructor = new Constructor { Summary = item.Summary, Arguments = new List <Argument>(), }; task.Constructor.Arguments.Add(new Argument { ArgumentKey = item.Name, }); if (item.Parameters != null) { foreach (var parameter in item.Parameters) { if (parameter.Name.Equals("--description", StringComparison.OrdinalIgnoreCase) || parameter.Name.Equals("--404-description", StringComparison.OrdinalIgnoreCase)) { continue; } if (parameter.IsRequired.HasValue && parameter.IsRequired.Value) { AddArgumentToConstructor(task, parameter); } if (!parameter.Name.StartsWith("<")) { AddNewMethod(task, parameter); } } } tasks.Add(task); } } tasks.RemoveAll(x => x.TaskName.Contains("List") || x.TaskName.Contains("Show")); tasks = tasks.DistinctBy(x => x.TaskName).ToList(); return(tasks); }