import type { Provider } from './types.js'const GITHUB = {matcher: () => !!process.env.GITHUB_ACTIONS,ci: {repo: process.env.GITHUB_REPOSITORY ?? '',refName: process.env.GITHUB_HEAD_REF ?? process.env.GITHUB_REF_NAME ?? '',sha: process.env.GITHUB_SHA ?? '',user: process.env.GITHUB_ACTOR ?? '',},}const GITLAB = {matcher: () => !!process.env.GITLAB_CI,ci: {repo: process.env.CI_PROJECT_PATH ?? '',refName: process.env.CI_COMMIT_REF_NAME ?? '',sha: process.env.CI_COMMIT_SHA ?? '',user: process.env.GITLAB_USER_LOGIN ?? '',},}const JENKINS = {matcher: () => !!process.env.JENKINS_URL,ci: {repo: process.env.GIT_URL ?? '',refName: process.env.GIT_BRANCH ?? '',sha: process.env.GIT_COMMIT ?? '',user: '',},}const BITBUCKET = {matcher: () => !!process.env.BITBUCKET_BUILD_NUMBER,ci: {repo: process.env.BITBUCKET_REPO_FULL_NAME ?? '',refName: process.env.BITBUCKET_BRANCH ?? '',sha: process.env.BITBUCKET_COMMIT ?? '',user: process.env.BITBUCKET_STEP_TRIGGERER_UUID ?? '',},}const CIRCLECI = {matcher: () => !!process.env.CIRCLECI,ci: {repo: process.env.CIRCLE_REPOSITORY_URL ?? '',refName: process.env.CIRCLE_BRANCH ?? '',sha: process.env.CIRCLE_SHA1 ?? '',user: process.env.CIRCLE_USERNAME ?? '',},}const DEFAULT = {matcher: () => true,ci: {repo: '',refName: '',sha: '',user: '',},}const providers: Provider[] = [GITHUB, GITLAB, JENKINS, BITBUCKET, CIRCLECI]const provider = providers.find((p) => p.matcher())export const CI = provider?.ci ?? DEFAULT.ci