/* | |||||
* 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); | |||||
} |
name: string; | name: string; | ||||
mainBranch: 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> { | export class CreateProjectPage extends React.PureComponent<CreateProjectPageProps, State> { |
BitbucketCloud = 'bitbucketcloud', | BitbucketCloud = 'bitbucketcloud', | ||||
GitHub = 'github', | GitHub = 'github', | ||||
GitLab = 'gitlab', | GitLab = 'gitlab', | ||||
Monorepo = 'monorepo', | |||||
} | } |
importGithubRepository, | importGithubRepository, | ||||
importGitlabProject, | importGitlabProject, | ||||
} from '../api/alm-integrations'; | } from '../api/alm-integrations'; | ||||
import { createImportedProjects } from '../api/dop-translation'; | |||||
import { createProject } from '../api/project-management'; | import { createProject } from '../api/project-management'; | ||||
import { ImportProjectParam } from '../apps/create/project/CreateProjectPage'; | import { ImportProjectParam } from '../apps/create/project/CreateProjectPage'; | ||||
import { CreateProjectModes } from '../apps/create/project/types'; | import { CreateProjectModes } from '../apps/create/project/types'; | ||||
projects: (infer R)[]; | projects: (infer R)[]; | ||||
} | } | ||||
? { creationMode: A; almSetting: string } & 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() { | export function useImportProjectMutation() { | ||||
return useMutation({ | return useMutation({ | ||||
return importBitbucketServerProject(data); | return importBitbucketServerProject(data); | ||||
} else if (data.creationMode === CreateProjectModes.GitLab) { | } else if (data.creationMode === CreateProjectModes.GitLab) { | ||||
return importGitlabProject(data); | return importGitlabProject(data); | ||||
} else if (data.creationMode === CreateProjectModes.Monorepo) { | |||||
return createImportedProjects(data); | |||||
} | } | ||||
return createProject(data); | return createProject(data); |