diff options
Diffstat (limited to 'server/sonar-web/src')
4 files changed, 67 insertions, 1 deletions
diff --git a/server/sonar-web/src/main/js/api/dop-translation.ts b/server/sonar-web/src/main/js/api/dop-translation.ts new file mode 100644 index 00000000000..393fb86da32 --- /dev/null +++ b/server/sonar-web/src/main/js/api/dop-translation.ts @@ -0,0 +1,38 @@ +/* + * SonarQube + * Copyright (C) 2009-2024 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +import axios from 'axios'; + +const DOP_TRANSLATION_PATH = '/api/v2/dop-translation'; + +// Imported projects + +const IMPORTED_PROJECTS_PATH = `${DOP_TRANSLATION_PATH}/bound-projects`; + +export function createImportedProjects(data: { + devOpsPlatformSettingId: string; + monorepo: boolean; + newCodeDefinitionType?: string; + newCodeDefinitionValue?: string; + projectKey: string; + projectName: string; + repositoryIdentifier: string; +}) { + return axios.post(IMPORTED_PROJECTS_PATH, data); +} diff --git a/server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx b/server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx index 973e39baa86..33921b2e60d 100644 --- a/server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx +++ b/server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx @@ -114,6 +114,16 @@ export type ImportProjectParam = name: string; mainBranch: string; }[]; + } + | { + creationMode: CreateProjectModes.Monorepo; + devOpsPlatformSettingId: string; + monorepo: boolean; + projects: { + projectKey: string; + projectName: string; + }[]; + repositoryIdentifier: string; }; export class CreateProjectPage extends React.PureComponent<CreateProjectPageProps, State> { diff --git a/server/sonar-web/src/main/js/apps/create/project/types.ts b/server/sonar-web/src/main/js/apps/create/project/types.ts index cbda3f656ef..a4352b54e4a 100644 --- a/server/sonar-web/src/main/js/apps/create/project/types.ts +++ b/server/sonar-web/src/main/js/apps/create/project/types.ts @@ -24,4 +24,5 @@ export enum CreateProjectModes { BitbucketCloud = 'bitbucketcloud', GitHub = 'github', GitLab = 'gitlab', + Monorepo = 'monorepo', } diff --git a/server/sonar-web/src/main/js/queries/import-projects.ts b/server/sonar-web/src/main/js/queries/import-projects.ts index 9ef461fb423..fae4bd0d7ac 100644 --- a/server/sonar-web/src/main/js/queries/import-projects.ts +++ b/server/sonar-web/src/main/js/queries/import-projects.ts @@ -25,6 +25,7 @@ import { importGithubRepository, importGitlabProject, } from '../api/alm-integrations'; +import { createImportedProjects } from '../api/dop-translation'; import { createProject } from '../api/project-management'; import { ImportProjectParam } from '../apps/create/project/CreateProjectPage'; import { CreateProjectModes } from '../apps/create/project/types'; @@ -36,7 +37,21 @@ export type MutationArg<AlmImport extends ImportProjectParam = ImportProjectPara projects: (infer R)[]; } ? { creationMode: A; almSetting: string } & R - : never; + : + | { + creationMode: CreateProjectModes.Manual; + project: string; + name: string; + mainBranch: string; + } + | { + creationMode: CreateProjectModes.Monorepo; + devOpsPlatformSettingId: string; + monorepo: boolean; + projectKey: string; + projectName: string; + repositoryIdentifier: string; + }; export function useImportProjectMutation() { return useMutation({ @@ -56,6 +71,8 @@ export function useImportProjectMutation() { return importBitbucketServerProject(data); } else if (data.creationMode === CreateProjectModes.GitLab) { return importGitlabProject(data); + } else if (data.creationMode === CreateProjectModes.Monorepo) { + return createImportedProjects(data); } return createProject(data); |