From 1a391955591fed34e0a5033aa644f47842bbd7f1 Mon Sep 17 00:00:00 2001 From: Sergei Zharinov <zharinov@users.noreply.github.com> Date: Fri, 26 Nov 2021 23:36:17 +0300 Subject: [PATCH] refactor(git): Extract types to separate file (#12855) --- lib/config/types.ts | 2 +- lib/manager/bundler/artifacts.spec.ts | 2 +- lib/manager/cocoapods/artifacts.spec.ts | 2 +- lib/manager/composer/artifacts.spec.ts | 2 +- lib/manager/gomod/artifacts.spec.ts | 2 +- .../gradle-wrapper/artifacts-real.spec.ts | 2 +- lib/manager/gradle-wrapper/artifacts.spec.ts | 2 +- lib/manager/gradle-wrapper/artifacts.ts | 3 +- lib/manager/jsonnet-bundler/artifacts.spec.ts | 2 +- lib/manager/pip-compile/artifacts.spec.ts | 2 +- lib/manager/pipenv/artifacts.spec.ts | 2 +- lib/manager/types.ts | 2 +- lib/util/git/author.ts | 6 +- lib/util/git/config.ts | 11 +-- lib/util/git/index.spec.ts | 6 +- lib/util/git/index.ts | 80 ++++--------------- lib/util/git/types.ts | 58 ++++++++++++++ .../branch/execute-post-upgrade-commands.ts | 3 +- lib/workers/branch/get-updated.ts | 3 +- lib/workers/branch/index.spec.ts | 2 +- lib/workers/types.ts | 2 +- 21 files changed, 97 insertions(+), 99 deletions(-) create mode 100644 lib/util/git/types.ts diff --git a/lib/config/types.ts b/lib/config/types.ts index 27634a140a..c349a7066c 100644 --- a/lib/config/types.ts +++ b/lib/config/types.ts @@ -1,7 +1,7 @@ import type { LogLevel } from 'bunyan'; import type { Range } from 'semver'; import type { HostRule } from '../types'; -import type { GitNoVerifyOption } from '../util/git'; +import type { GitNoVerifyOption } from '../util/git/types'; export type RenovateConfigStage = | 'global' diff --git a/lib/manager/bundler/artifacts.spec.ts b/lib/manager/bundler/artifacts.spec.ts index deca0c00d3..d0ce943b32 100644 --- a/lib/manager/bundler/artifacts.spec.ts +++ b/lib/manager/bundler/artifacts.spec.ts @@ -7,7 +7,7 @@ import type { RepoGlobalConfig } from '../../config/types'; import * as _datasource from '../../datasource'; import * as docker from '../../util/exec/docker'; import * as _env from '../../util/exec/env'; -import type { StatusResult } from '../../util/git'; +import type { StatusResult } from '../../util/git/types'; import type { UpdateArtifactsConfig } from '../types'; import * as _bundlerHostRules from './host-rules'; import { updateArtifacts } from '.'; diff --git a/lib/manager/cocoapods/artifacts.spec.ts b/lib/manager/cocoapods/artifacts.spec.ts index f36e1c8fda..77ca05394a 100644 --- a/lib/manager/cocoapods/artifacts.spec.ts +++ b/lib/manager/cocoapods/artifacts.spec.ts @@ -7,7 +7,7 @@ import { GlobalConfig } from '../../config/global'; import type { RepoGlobalConfig } from '../../config/types'; import * as _datasource from '../../datasource'; import * as _env from '../../util/exec/env'; -import type { StatusResult } from '../../util/git'; +import type { StatusResult } from '../../util/git/types'; import type { UpdateArtifactsConfig } from '../types'; import { updateArtifacts } from '.'; diff --git a/lib/manager/composer/artifacts.spec.ts b/lib/manager/composer/artifacts.spec.ts index 3373630d4b..7ebeaa8f2a 100644 --- a/lib/manager/composer/artifacts.spec.ts +++ b/lib/manager/composer/artifacts.spec.ts @@ -7,7 +7,7 @@ import { PlatformId } from '../../constants'; import * as _datasource from '../../datasource'; import * as datasourcePackagist from '../../datasource/packagist'; import * as docker from '../../util/exec/docker'; -import type { StatusResult } from '../../util/git'; +import type { StatusResult } from '../../util/git/types'; import * as hostRules from '../../util/host-rules'; import type { UpdateArtifactsConfig } from '../types'; import * as composer from './artifacts'; diff --git a/lib/manager/gomod/artifacts.spec.ts b/lib/manager/gomod/artifacts.spec.ts index 81520b3ac7..c4a2d881f5 100644 --- a/lib/manager/gomod/artifacts.spec.ts +++ b/lib/manager/gomod/artifacts.spec.ts @@ -7,7 +7,7 @@ import { GlobalConfig } from '../../config/global'; import type { RepoGlobalConfig } from '../../config/types'; import * as docker from '../../util/exec/docker'; import * as _env from '../../util/exec/env'; -import type { StatusResult } from '../../util/git'; +import type { StatusResult } from '../../util/git/types'; import * as _hostRules from '../../util/host-rules'; import type { UpdateArtifactsConfig } from '../types'; import * as gomod from './artifacts'; diff --git a/lib/manager/gradle-wrapper/artifacts-real.spec.ts b/lib/manager/gradle-wrapper/artifacts-real.spec.ts index 4ae117f3d7..e5ff7af128 100644 --- a/lib/manager/gradle-wrapper/artifacts-real.spec.ts +++ b/lib/manager/gradle-wrapper/artifacts-real.spec.ts @@ -5,7 +5,7 @@ import * as httpMock from '../../../test/http-mock'; import { git, partial } from '../../../test/util'; import { GlobalConfig } from '../../config/global'; import type { RepoGlobalConfig } from '../../config/types'; -import type { StatusResult } from '../../util/git'; +import type { StatusResult } from '../../util/git/types'; import { ifSystemSupportsGradle } from '../gradle/deep/__testutil__/gradle'; import type { UpdateArtifactsConfig } from '../types'; import * as gradleWrapper from '.'; diff --git a/lib/manager/gradle-wrapper/artifacts.spec.ts b/lib/manager/gradle-wrapper/artifacts.spec.ts index b7770644d8..4d042f021f 100644 --- a/lib/manager/gradle-wrapper/artifacts.spec.ts +++ b/lib/manager/gradle-wrapper/artifacts.spec.ts @@ -12,7 +12,7 @@ import { import { GlobalConfig } from '../../config/global'; import type { RepoGlobalConfig } from '../../config/types'; import { resetPrefetchedImages } from '../../util/exec/docker'; -import type { StatusResult } from '../../util/git'; +import type { StatusResult } from '../../util/git/types'; import type { UpdateArtifactsConfig } from '../types'; import * as gradleWrapper from '.'; diff --git a/lib/manager/gradle-wrapper/artifacts.ts b/lib/manager/gradle-wrapper/artifacts.ts index 98dabbe218..3a70a7bf5e 100644 --- a/lib/manager/gradle-wrapper/artifacts.ts +++ b/lib/manager/gradle-wrapper/artifacts.ts @@ -5,7 +5,8 @@ import { TEMPORARY_ERROR } from '../../constants/error-messages'; import { logger } from '../../logger'; import { ExecOptions, exec } from '../../util/exec'; import { readLocalFile, stat, writeLocalFile } from '../../util/fs'; -import { StatusResult, getRepoStatus } from '../../util/git'; +import { getRepoStatus } from '../../util/git'; +import type { StatusResult } from '../../util/git/types'; import { Http } from '../../util/http'; import type { UpdateArtifact, UpdateArtifactsResult } from '../types'; import { diff --git a/lib/manager/jsonnet-bundler/artifacts.spec.ts b/lib/manager/jsonnet-bundler/artifacts.spec.ts index 9b358b6fbb..87c6664934 100644 --- a/lib/manager/jsonnet-bundler/artifacts.spec.ts +++ b/lib/manager/jsonnet-bundler/artifacts.spec.ts @@ -3,7 +3,7 @@ import { envMock, exec, mockExecAll } from '../../../test/exec-util'; import { env, fs, git } from '../../../test/util'; import { GlobalConfig } from '../../config/global'; import type { RepoGlobalConfig } from '../../config/types'; -import type { StatusResult } from '../../util/git'; +import type { StatusResult } from '../../util/git/types'; import type { UpdateArtifactsConfig } from '../types'; import { updateArtifacts } from '.'; diff --git a/lib/manager/pip-compile/artifacts.spec.ts b/lib/manager/pip-compile/artifacts.spec.ts index fff86aa9d0..6b37eb0e07 100644 --- a/lib/manager/pip-compile/artifacts.spec.ts +++ b/lib/manager/pip-compile/artifacts.spec.ts @@ -7,7 +7,7 @@ import { GlobalConfig } from '../../config/global'; import type { RepoGlobalConfig } from '../../config/types'; import * as docker from '../../util/exec/docker'; import * as _env from '../../util/exec/env'; -import type { StatusResult } from '../../util/git'; +import type { StatusResult } from '../../util/git/types'; import type { UpdateArtifactsConfig } from '../types'; import * as pipCompile from './artifacts'; diff --git a/lib/manager/pipenv/artifacts.spec.ts b/lib/manager/pipenv/artifacts.spec.ts index c8351a8759..2993afd547 100644 --- a/lib/manager/pipenv/artifacts.spec.ts +++ b/lib/manager/pipenv/artifacts.spec.ts @@ -7,7 +7,7 @@ import { GlobalConfig } from '../../config/global'; import type { RepoGlobalConfig } from '../../config/types'; import * as docker from '../../util/exec/docker'; import * as _env from '../../util/exec/env'; -import type { StatusResult } from '../../util/git'; +import type { StatusResult } from '../../util/git/types'; import type { UpdateArtifactsConfig } from '../types'; import * as pipenv from './artifacts'; diff --git a/lib/manager/types.ts b/lib/manager/types.ts index 326c07093b..77f848f356 100644 --- a/lib/manager/types.ts +++ b/lib/manager/types.ts @@ -6,7 +6,7 @@ import type { } from '../config/types'; import type { ProgrammingLanguage } from '../constants'; import type { RangeStrategy, SkipReason } from '../types'; -import type { File } from '../util/git'; +import type { File } from '../util/git/types'; export type Result<T> = T | Promise<T>; diff --git a/lib/util/git/author.ts b/lib/util/git/author.ts index f029ebc336..26860683b6 100644 --- a/lib/util/git/author.ts +++ b/lib/util/git/author.ts @@ -1,11 +1,7 @@ import addrs from 'email-addresses'; import { logger } from '../../logger'; import { regEx } from '../regex'; - -export interface GitAuthor { - name?: string; - address?: string; -} +import type { GitAuthor } from './types'; export function parseGitAuthor(input: string): GitAuthor | null { let result: GitAuthor = null; diff --git a/lib/util/git/config.ts b/lib/util/git/config.ts index 7842559b57..056189cfca 100644 --- a/lib/util/git/config.ts +++ b/lib/util/git/config.ts @@ -1,15 +1,8 @@ import is from '@sindresorhus/is'; import { SimpleGitOptions } from 'simple-git'; +import type { GitNoVerifyOption } from './types'; -export const enum GitNoVerifyOption { - Commit = 'commit', - Push = 'push', -} - -let noVerify: GitNoVerifyOption[] = [ - GitNoVerifyOption.Push, - GitNoVerifyOption.Commit, -]; +let noVerify: GitNoVerifyOption[] = ['push', 'commit']; export function setNoVerify(value: GitNoVerifyOption[]): void { if (!is.array(value, is.string)) { diff --git a/lib/util/git/index.spec.ts b/lib/util/git/index.spec.ts index 99e2ec2214..23dfe76acf 100644 --- a/lib/util/git/index.spec.ts +++ b/lib/util/git/index.spec.ts @@ -5,7 +5,7 @@ import tmp from 'tmp-promise'; import { GlobalConfig } from '../../config/global'; import { CONFIG_VALIDATION } from '../../constants/error-messages'; import * as git from '.'; -import { GitNoVerifyOption, setNoVerify } from '.'; +import { setNoVerify } from '.'; describe('util/git/index', () => { jest.setTimeout(15000); @@ -363,7 +363,7 @@ describe('util/git/index', () => { contents: 'some new-contents', }, ]; - setNoVerify([GitNoVerifyOption.Commit]); + setNoVerify(['commit']); await git.commitFiles({ branchName: 'renovate/something', @@ -393,7 +393,7 @@ describe('util/git/index', () => { contents: 'some new-contents', }, ]; - setNoVerify([GitNoVerifyOption.Push]); + setNoVerify(['push']); await git.commitFiles({ branchName: 'renovate/something', diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts index fcd7990b5f..58f5450373 100644 --- a/lib/util/git/index.ts +++ b/lib/util/git/index.ts @@ -1,13 +1,6 @@ import URL from 'url'; import fs from 'fs-extra'; -import Git, { - DiffResult as DiffResult_, - Options, - ResetMode, - SimpleGit, - StatusResult as StatusResult_, - TaskOptions, -} from 'simple-git'; +import Git, { Options, ResetMode, SimpleGit, TaskOptions } from 'simple-git'; import { join } from 'upath'; import { configFileNames } from '../../config/app-strings'; import { GlobalConfig } from '../../config/global'; @@ -22,45 +15,27 @@ import { } from '../../constants/error-messages'; import { logger } from '../../logger'; import { ExternalHostError } from '../../types/errors/external-host-error'; -import { GitOptions, GitProtocol } from '../../types/git'; +import type { GitProtocol } from '../../types/git'; import { Limit, incLimitedValue } from '../../workers/global/limits'; import { regEx } from '../regex'; import { parseGitAuthor } from './author'; -import { GitNoVerifyOption, getNoVerify, simpleGitConfig } from './config'; +import { getNoVerify, simpleGitConfig } from './config'; import { configSigningKey, writePrivateKey } from './private-key'; - -export { GitNoVerifyOption, setNoVerify } from './config'; +import type { + CommitFilesConfig, + CommitSha, + LocalConfig, + StatusResult, + StorageConfig, +} from './types'; + +export { setNoVerify } from './config'; export { setPrivateKey } from './private-key'; declare module 'fs-extra' { export function exists(pathLike: string): Promise<boolean>; } -export type StatusResult = StatusResult_; - -export type DiffResult = DiffResult_; - -export type CommitSha = string; - -interface StorageConfig { - currentBranch?: string; - url: string; - extraCloneOpts?: GitOptions; - cloneSubmodules?: boolean; - fullClone?: boolean; -} - -interface LocalConfig extends StorageConfig { - additionalBranches: string[]; - currentBranch: string; - currentBranchSha: string; - branchCommits: Record<string, CommitSha>; - branchIsModified: Record<string, boolean>; - ignoredAuthors: string[]; - gitAuthorName?: string; - gitAuthorEmail?: string; -} - // istanbul ignore next function checkForPlatformFailure(err: Error): void { if (process.env.NODE_ENV === 'test') { @@ -660,33 +635,6 @@ export async function hasDiff(branchName: string): Promise<boolean> { } } -/** - * File to commit - */ -export interface File { - /** - * Relative file path - */ - name: string; - - /** - * file contents - */ - contents: string | Buffer; - - /** - * the executable bit - */ - executable?: boolean; -} - -export type CommitFilesConfig = { - branchName: string; - files: File[]; - message: string; - force?: boolean; -}; - export async function commitFiles({ branchName, files, @@ -764,7 +712,7 @@ export async function commitFiles({ } const commitOptions: Options = {}; - if (getNoVerify().includes(GitNoVerifyOption.Commit)) { + if (getNoVerify().includes('commit')) { commitOptions['--no-verify'] = null; } @@ -795,7 +743,7 @@ export async function commitFiles({ '--force-with-lease': null, '-u': null, }; - if (getNoVerify().includes(GitNoVerifyOption.Push)) { + if (getNoVerify().includes('push')) { pushOptions['--no-verify'] = null; } diff --git a/lib/util/git/types.ts b/lib/util/git/types.ts new file mode 100644 index 0000000000..edf2902e21 --- /dev/null +++ b/lib/util/git/types.ts @@ -0,0 +1,58 @@ +import type { GitOptions } from '../../types/git'; + +export type { DiffResult, StatusResult } from 'simple-git'; + +export interface GitAuthor { + name?: string; + address?: string; +} + +export type GitNoVerifyOption = 'commit' | 'push'; + +export type CommitSha = string; + +export interface StorageConfig { + currentBranch?: string; + url: string; + extraCloneOpts?: GitOptions; + cloneSubmodules?: boolean; + fullClone?: boolean; +} + +export interface LocalConfig extends StorageConfig { + additionalBranches: string[]; + currentBranch: string; + currentBranchSha: string; + branchCommits: Record<string, CommitSha>; + branchIsModified: Record<string, boolean>; + ignoredAuthors: string[]; + gitAuthorName?: string; + gitAuthorEmail?: string; +} + +/** + * File to commit + */ +export interface File { + /** + * Relative file path + */ + name: string; + + /** + * file contents + */ + contents: string | Buffer; + + /** + * the executable bit + */ + executable?: boolean; +} + +export type CommitFilesConfig = { + branchName: string; + files: File[]; + message: string; + force?: boolean; +}; diff --git a/lib/workers/branch/execute-post-upgrade-commands.ts b/lib/workers/branch/execute-post-upgrade-commands.ts index 7c863533f9..8a2fc6d054 100644 --- a/lib/workers/branch/execute-post-upgrade-commands.ts +++ b/lib/workers/branch/execute-post-upgrade-commands.ts @@ -5,7 +5,8 @@ import { addMeta, logger } from '../../logger'; import type { ArtifactError } from '../../manager/types'; import { exec } from '../../util/exec'; import { readLocalFile, writeLocalFile } from '../../util/fs'; -import { File, getRepoStatus } from '../../util/git'; +import { getRepoStatus } from '../../util/git'; +import type { File } from '../../util/git/types'; import { regEx } from '../../util/regex'; import { sanitize } from '../../util/sanitize'; import { compile } from '../../util/template'; diff --git a/lib/workers/branch/get-updated.ts b/lib/workers/branch/get-updated.ts index 287c705488..2bd880163a 100644 --- a/lib/workers/branch/get-updated.ts +++ b/lib/workers/branch/get-updated.ts @@ -3,7 +3,8 @@ import { WORKER_FILE_UPDATE_FAILED } from '../../constants/error-messages'; import { logger } from '../../logger'; import { get } from '../../manager'; import type { ArtifactError, PackageDependency } from '../../manager/types'; -import { File, getFile } from '../../util/git'; +import { getFile } from '../../util/git'; +import { File } from '../../util/git/types'; import type { BranchConfig } from '../types'; import { doAutoReplace } from './auto-replace'; diff --git a/lib/workers/branch/index.spec.ts b/lib/workers/branch/index.spec.ts index d819e2e03b..196ac118a3 100644 --- a/lib/workers/branch/index.spec.ts +++ b/lib/workers/branch/index.spec.ts @@ -10,7 +10,7 @@ import * as _npmPostExtract from '../../manager/npm/post-update'; import type { WriteExistingFilesResult } from '../../manager/npm/post-update/types'; import { PrState } from '../../types'; import * as _exec from '../../util/exec'; -import { File, StatusResult } from '../../util/git'; +import type { File, StatusResult } from '../../util/git/types'; import * as _mergeConfidence from '../../util/merge-confidence'; import * as _sanitize from '../../util/sanitize'; import * as _limits from '../global/limits'; diff --git a/lib/workers/types.ts b/lib/workers/types.ts index 401464f966..02e0c5a44f 100644 --- a/lib/workers/types.ts +++ b/lib/workers/types.ts @@ -14,7 +14,7 @@ import type { PackageFile, } from '../manager/types'; import type { PlatformPrOptions } from '../platform/types'; -import type { File } from '../util/git'; +import type { File } from '../util/git/types'; import type { MergeConfidence } from '../util/merge-confidence'; import type { ChangeLogResult } from './pr/changelog/types'; -- GitLab