Skip to content

Commit

Permalink
refactor: move updateInternalDeps to worker logic (#15790)
Browse files Browse the repository at this point in the history
  • Loading branch information
RahulGautamSingh committed May 31, 2022
1 parent 6a24c24 commit 56170df
Show file tree
Hide file tree
Showing 9 changed files with 73 additions and 35 deletions.
1 change: 1 addition & 0 deletions lib/config/types.ts
Expand Up @@ -218,6 +218,7 @@ export interface RenovateConfig
repoIsOnboarded?: boolean;
repoIsActivated?: boolean;

updateInternalDeps?: boolean;
updateType?: UpdateType;

warnings?: ValidationMessage[];
Expand Down
Expand Up @@ -6,9 +6,11 @@ Array [
"deps": Array [
Object {
"depName": "@org/a",
"isInternal": true,
},
Object {
"depName": "@org/b",
"isInternal": true,
},
Object {
"depName": "@org/c",
Expand All @@ -32,6 +34,7 @@ Array [
"deps": Array [
Object {
"depName": "@org/b",
"isInternal": true,
},
Object {
"depName": "@org/c",
Expand Down Expand Up @@ -72,11 +75,11 @@ Array [
"deps": Array [
Object {
"depName": "@org/a",
"skipReason": "internal-package",
"isInternal": true,
},
Object {
"depName": "@org/b",
"skipReason": "internal-package",
"isInternal": true,
},
Object {
"depName": "@org/c",
Expand All @@ -100,7 +103,7 @@ Array [
"deps": Array [
Object {
"depName": "@org/b",
"skipReason": "internal-package",
"isInternal": true,
},
Object {
"depName": "@org/c",
Expand Down
2 changes: 1 addition & 1 deletion lib/modules/manager/npm/extract/index.spec.ts
Expand Up @@ -752,7 +752,7 @@ describe('modules/manager/npm/extract/index', () => {

describe('.postExtract()', () => {
it('runs', async () => {
await expect(npmExtract.postExtract([], false)).resolves.not.toThrow();
await expect(npmExtract.postExtract([])).resolves.not.toThrow();
});
});
});
10 changes: 4 additions & 6 deletions lib/modules/manager/npm/extract/index.ts
Expand Up @@ -472,11 +472,8 @@ export async function extractPackageFile(
};
}

export async function postExtract(
packageFiles: PackageFile[],
updateInternalDeps: boolean
): Promise<void> {
await detectMonorepos(packageFiles, updateInternalDeps);
export async function postExtract(packageFiles: PackageFile[]): Promise<void> {
await detectMonorepos(packageFiles);
await getLockedVersions(packageFiles);
}

Expand All @@ -500,7 +497,8 @@ export async function extractAllPackageFiles(
logger.debug({ packageFile }, 'packageFile has no content');
}
}
await postExtract(npmFiles, !!config.updateInternalDeps);

await postExtract(npmFiles);
return npmFiles;
}

Expand Down
16 changes: 8 additions & 8 deletions lib/modules/manager/npm/extract/monorepo.spec.ts
Expand Up @@ -48,12 +48,12 @@ describe('modules/manager/npm/extract/monorepo', () => {
packageJsonName: '@org/b',
},
] as any;
await detectMonorepos(packageFiles, false);
await detectMonorepos(packageFiles);
expect(packageFiles).toMatchSnapshot();
expect(packageFiles[1].managerData.lernaJsonFile).toBe('lerna.json');
expect(
packageFiles.some((packageFile) =>
packageFile.deps?.some((dep) => dep.skipReason)
packageFile.deps?.some((dep) => dep.isInternal)
)
).toBeTrue();
});
Expand Down Expand Up @@ -102,14 +102,14 @@ describe('modules/manager/npm/extract/monorepo', () => {
packageJsonName: '@org/b',
},
] as any;
await detectMonorepos(packageFiles, true);
await detectMonorepos(packageFiles);
expect(packageFiles).toMatchSnapshot();
expect(packageFiles[1].managerData.lernaJsonFile).toBe('lerna.json');
expect(
packageFiles.some((packageFile) =>
packageFile.deps?.some((dep) => dep.skipReason)
packageFile.deps?.some((dep) => dep.isInternal)
)
).toBeFalse();
).toBeTrue();
});

it('uses yarn workspaces package settings with lerna', async () => {
Expand All @@ -132,7 +132,7 @@ describe('modules/manager/npm/extract/monorepo', () => {
packageJsonName: '@org/b',
},
];
await detectMonorepos(packageFiles, false);
await detectMonorepos(packageFiles);
expect(packageFiles).toMatchSnapshot();
expect(packageFiles[1].managerData.lernaJsonFile).toBe('lerna.json');
});
Expand All @@ -154,7 +154,7 @@ describe('modules/manager/npm/extract/monorepo', () => {
packageJsonName: '@org/b',
},
];
await detectMonorepos(packageFiles, false);
await detectMonorepos(packageFiles);
expect(packageFiles).toMatchSnapshot([
{},
{ npmrc: '@org:registry=//registry.some.org\n' },
Expand Down Expand Up @@ -184,7 +184,7 @@ describe('modules/manager/npm/extract/monorepo', () => {
skipInstalls: true,
},
];
await detectMonorepos(packageFiles, false);
await detectMonorepos(packageFiles);
expect(packageFiles).toMatchSnapshot([
{},
{ managerData: { yarnZeroInstall: true }, skipInstalls: false },
Expand Down
30 changes: 14 additions & 16 deletions lib/modules/manager/npm/extract/monorepo.ts
Expand Up @@ -6,8 +6,7 @@ import { detectPnpmWorkspaces } from './pnpm';
import { matchesAnyPattern } from './utils';

export async function detectMonorepos(
packageFiles: Partial<PackageFile>[],
updateInternalDeps: boolean
packageFiles: Partial<PackageFile>[]
): Promise<void> {
await detectPnpmWorkspaces(packageFiles);
logger.debug('Detecting Lerna and Yarn Workspaces');
Expand Down Expand Up @@ -41,13 +40,13 @@ export async function detectMonorepos(
const internalPackageNames = internalPackageFiles
.map((sp) => sp.packageJsonName)
.filter(Boolean);
if (!updateInternalDeps) {
p.deps?.forEach((dep) => {
if (internalPackageNames.includes(dep.depName)) {
dep.skipReason = 'internal-package';
}
});
}

p.deps?.forEach((dep) => {
if (internalPackageNames.includes(dep.depName)) {
dep.isInternal = true;
}
});

for (const subPackage of internalPackageFiles) {
subPackage.managerData = subPackage.managerData || {};
subPackage.managerData.lernaJsonFile = lernaJsonFile;
Expand All @@ -60,13 +59,12 @@ export async function detectMonorepos(
subPackage.hasYarnWorkspaces = !!yarnWorkspacesPackages;
subPackage.npmrc = subPackage.npmrc || npmrc;
}
if (!updateInternalDeps) {
subPackage.deps?.forEach((dep) => {
if (internalPackageNames.includes(dep.depName)) {
dep.skipReason = 'internal-package';
}
});
}

subPackage.deps?.forEach((dep) => {
if (internalPackageNames.includes(dep.depName)) {
dep.isInternal = true;
}
});
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion lib/modules/manager/types.ts
Expand Up @@ -21,7 +21,6 @@ export interface ExtractConfig {
npmrc?: string;
npmrcMerge?: boolean;
skipInstalls?: boolean;
updateInternalDeps?: boolean;
}

export interface RegexManagerTemplates {
Expand Down Expand Up @@ -172,6 +171,7 @@ export interface PackageDependency<T = Record<string, any>> extends Package<T> {
editFile?: string;
separateMinorPatch?: boolean;
extractVersion?: string;
isInternal?: boolean;
}

export interface Upgrade<T = Record<string, any>>
Expand Down
30 changes: 30 additions & 0 deletions lib/workers/repository/extract/index.spec.ts
Expand Up @@ -40,6 +40,36 @@ describe('workers/repository/extract/index', () => {
expect(logger.debug).toHaveBeenCalled();
});

it('warns if packageFiles is null', async () => {
config.enabledManagers = ['npm'];
managerFiles.getManagerPackageFiles.mockResolvedValue(null);
expect(await extractAllDependencies(config)).toEqual({});
});

it('adds skipReason to internal deps when updateInternalDeps is false/undefined', async () => {
config.enabledManagers = ['npm'];
managerFiles.getManagerPackageFiles.mockResolvedValue([
{
deps: [{ depName: 'a', isInternal: true }, { depName: 'b' }],
},
]);
expect(await extractAllDependencies(config)).toEqual({
npm: [
{
deps: [
{
depName: 'a',
isInternal: true,
skipReason: 'internal-package',
},
{ depName: 'b' },
],
},
],
});
expect(logger.debug).toHaveBeenCalled();
});

it('checks custom managers', async () => {
managerFiles.getManagerPackageFiles.mockResolvedValue([{} as never]);
config.regexManagers = [{ fileMatch: ['README'], matchStrings: [''] }];
Expand Down
8 changes: 8 additions & 0 deletions lib/workers/repository/extract/index.ts
Expand Up @@ -47,6 +47,14 @@ export async function extractAllDependencies(
const extractResults = await Promise.all(
extractList.map(async (managerConfig) => {
const packageFiles = await getManagerPackageFiles(managerConfig);
for (const p of packageFiles ?? []) {
for (const dep of p.deps ?? []) {
if (!config.updateInternalDeps && dep.isInternal) {
dep.skipReason = 'internal-package';
}
}
}

return { manager: managerConfig.manager, packageFiles };
})
);
Expand Down

0 comments on commit 56170df

Please sign in to comment.