Example #1
0
        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);
        }