aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/sonar-web/src')
-rw-r--r--server/sonar-web/src/main/js/api/dop-translation.ts38
-rw-r--r--server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx10
-rw-r--r--server/sonar-web/src/main/js/apps/create/project/types.ts1
-rw-r--r--server/sonar-web/src/main/js/queries/import-projects.ts19
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);