protected BaseProjectOptions( DirectoryInfo projectSrcGeneratePath, DirectoryInfo?projectTestGeneratePath, OpenApiDocument openApiDocument, FileInfo openApiDocumentFile, string projectPrefixName, string?projectSuffixName, ApiOptions.ApiOptions apiOptions, bool forClient = false, string?clientFolderName = null) { if (projectSrcGeneratePath == null) { throw new ArgumentNullException(nameof(projectSrcGeneratePath)); } ProjectName = projectPrefixName ?? throw new ArgumentNullException(nameof(projectPrefixName)); PathForSrcGenerate = projectSrcGeneratePath.Name.StartsWith(ProjectName, StringComparison.OrdinalIgnoreCase) ? projectSrcGeneratePath.Parent ! : projectSrcGeneratePath; if (projectTestGeneratePath != null) { PathForTestGenerate = projectTestGeneratePath.Name.StartsWith(ProjectName, StringComparison.OrdinalIgnoreCase) ? projectTestGeneratePath.Parent ! : projectTestGeneratePath; } Document = openApiDocument ?? throw new ArgumentNullException(nameof(openApiDocument)); DocumentFile = openApiDocumentFile ?? throw new ArgumentNullException(nameof(openApiDocumentFile)); ToolName = "ApiGenerator"; ToolVersion = GenerateHelper.GetAtcToolVersion(); ApiOptions = apiOptions; ApiVersion = GetApiVersion(openApiDocument); ProjectName = string.IsNullOrEmpty(projectSuffixName) ? projectPrefixName .Replace(" ", ".", StringComparison.Ordinal) .Replace("-", ".", StringComparison.Ordinal) .Trim() : projectPrefixName .Replace(" ", ".", StringComparison.Ordinal) .Replace("-", ".", StringComparison.Ordinal) .Trim() + $".{projectSuffixName}"; ProjectPrefixName = ProjectName.Contains('.', StringComparison.Ordinal) ? ProjectName.Substring(0, ProjectName.IndexOf('.', StringComparison.Ordinal)) : ProjectName; PathForSrcGenerate = new DirectoryInfo(Path.Combine(PathForSrcGenerate.FullName, ProjectName)); ProjectSrcCsProj = new FileInfo(Path.Combine(PathForSrcGenerate.FullName, $"{ProjectName}.csproj")); if (PathForTestGenerate != null) { PathForTestGenerate = new DirectoryInfo(Path.Combine(PathForTestGenerate.FullName, $"{ProjectName}.Tests")); ProjectTestCsProj = new FileInfo(Path.Combine(PathForTestGenerate.FullName, $"{ProjectName}.Tests.csproj")); } this.ForClient = forClient; this.ClientFolderName = clientFolderName; BasePathSegmentNames = OpenApiDocumentHelper.GetBasePathSegmentNames(openApiDocument); }