@@ -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); | |||
} |
@@ -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> { |
@@ -24,4 +24,5 @@ export enum CreateProjectModes { | |||
BitbucketCloud = 'bitbucketcloud', | |||
GitHub = 'github', | |||
GitLab = 'gitlab', | |||
Monorepo = 'monorepo', | |||
} |
@@ -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); |