elk/config/env.ts

70 lines
1.6 KiB
TypeScript
Raw Permalink Normal View History

2023-01-04 16:26:30 +03:00
import Git from 'simple-git'
import { isDevelopment } from 'std-env'
export { version } from '../package.json'
/**
* Environment variable `PULL_REQUEST` provided by Netlify.
* @see {@link https://docs.netlify.com/configure-builds/environment-variables/#git-metadata}
*
* Whether triggered by a GitHub PR
*/
export const isPR = process.env.PULL_REQUEST === 'true'
2023-01-04 16:41:48 +03:00
/**
* Environment variable `BRANCH` provided by Netlify.
* @see {@link https://docs.netlify.com/configure-builds/environment-variables/#git-metadata}
*
* Git branch
*/
export const gitBranch = process.env.BRANCH
2023-01-04 16:26:30 +03:00
/**
* Environment variable `CONTEXT` provided by Netlify.
* @see {@link https://docs.netlify.com/configure-builds/environment-variables/#build-metadata}
*
* Whether triggered by PR, `deploy-preview` or `dev`.
*/
export const isPreview = isPR || process.env.CONTEXT === 'deploy-preview' || process.env.CONTEXT === 'dev'
const git = Git()
export async function getGitInfo() {
let branch
try {
branch = gitBranch || await git.revparse(['--abbrev-ref', 'HEAD'])
}
catch {
branch = 'unknown'
}
let commit
try {
commit = await git.revparse(['HEAD'])
}
catch {
commit = 'unknown'
}
let shortCommit
try {
shortCommit = await git.revparse(['--short=7', 'HEAD'])
}
catch {
shortCommit = 'unknown'
}
2023-02-23 14:17:28 +03:00
return { branch, commit, shortCommit }
2023-01-04 16:26:30 +03:00
}
export async function getEnv() {
2023-02-23 14:17:28 +03:00
const { commit, shortCommit, branch } = await getGitInfo()
2023-01-04 16:26:30 +03:00
const env = isDevelopment
? 'dev'
: isPreview
? 'preview'
: branch === 'main'
2023-01-06 19:20:12 +03:00
? 'canary'
2023-01-04 16:26:30 +03:00
: 'release'
2023-02-23 14:17:28 +03:00
return { commit, shortCommit, branch, env } as const
2023-01-04 16:26:30 +03:00
}