public static List <TypeAlias> ParseTypeAliases(AllOptions opts) { var types = File .ReadAllText(opts.Source) .Split('\n') .Where(s => !string.IsNullOrEmpty(s)) .ToList(); return(types .Select(type => ParseType(type)) .Where(ta => !string.IsNullOrEmpty(ta.Modulename)) .ToList()); TypeAlias ParseType(string typeDef) { var regex = new Regex(@"^type (?<name>\S*) = (?<type>\S*)$"); var match = regex.Match(typeDef); if (match.Success) { var propertyName = match.Groups["name"].Value; var propertyType = match.Groups["type"].Value; return(new TypeAlias(opts.Business, opts.Application, opts.Module, propertyName, propertyType)); } return(new TypeAlias(string.Empty, string.Empty, string.Empty, string.Empty, string.Empty)); } }
private static int RunTypesAndReturnExitCode(AllOptions opts) { var typeAliases = ParseTypeAliases(opts); var directories = ProjectStructure.CreateDirectories(opts); GenerateTypeAliases(typeAliases, GetOutputDirectory(directories.DomainDirectory)); GenerateTypeAliasesTests(typeAliases, GetOutputDirectory(directories.TestDirectory)); return(0); string GetOutputDirectory(string directoryName) => $"{opts.OutputDirectory}/{directoryName}"; }