orlovedev/or-release

View on GitHub
src/pipes/get-git-data-pipe.ts

Summary

Maintainability
A
0 mins
Test Coverage
import type { IAppCtx } from '../types/app-ctx'
import type { Unary } from '../types/common-types'
import type { IEither } from '../utils/either'
import type { LogFatalError, LogFunction } from '../utils/logger'
import { getAllTags } from '../pure/getters/get-all-tags'
import { getChanges } from '../pure/getters/get-changes'
import { getCurrentCommit } from '../pure/getters/get-current-commit'
import { getLatestVersion } from '../pure/getters/get-latest-version'
import { getLatestVersionCommit } from '../pure/getters/get-latest-version-commit'
import { logChanges } from '../pure/loggers/log-changes'
import { logCurrentCommit } from '../pure/loggers/log-current-commit'
import { logLatestVersion } from '../pure/loggers/log-latest-version'
import { logLatestVersionCommit } from '../pure/loggers/log-latest-version-commit'
import { logMerges } from '../pure/loggers/log-merges'
import { logPrefix } from '../pure/loggers/log-prefix'
import { logPublic } from '../pure/loggers/log-public'
import { normalizeMerges } from '../pure/validators/normalize-merges'
import { normalizePublic } from '../pure/validators/normalize-public'
import { ExtendPipe } from '../utils/pipe'

interface IDeps {
    logFatalError: LogFatalError
    logInfo: LogFunction
    logWarning: LogFunction
    execEither: Unary<string, IEither<string, Error>>
}

export const getGitDataPipe = ({ logFatalError, logInfo, logWarning, execEither }: IDeps) =>
    ExtendPipe.empty<IAppCtx, Partial<IAppCtx>>()
        .pipeExtend(getCurrentCommit({ execEither, logFatalError }))
        .pipeTap(logCurrentCommit({ logInfo }))
        .pipeTap(logPrefix({ logInfo }))
        .pipeExtend(getAllTags({ execEither }))
        .pipeExtend(getLatestVersion({ logWarning }))
        .pipeTap(logLatestVersion({ logInfo }))
        .pipeExtend(normalizePublic)
        .pipeTap(logPublic({ logWarning }))
        .pipeExtend(normalizeMerges)
        .pipeTap(logMerges({ logInfo }))
        .pipeExtend(getLatestVersionCommit({ execEither, logFatalError }))
        .pipeTap(logLatestVersionCommit({ logInfo }))
        .pipeExtend(getChanges({ execEither, logFatalError }))
        .pipeTap(logChanges({ logInfo }))