Skip to content

Commit dae84cf

Browse files
committed
chore(release): moved the git tags logic into it's own file
- move the instance into release-graph class - pass resolveGitTags as params
1 parent 520ba42 commit dae84cf

File tree

7 files changed

+215
-169
lines changed

7 files changed

+215
-169
lines changed

packages/nx/src/command-line/release/changelog.ts

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
import * as chalk from 'chalk';
22
import { prompt } from 'enquirer';
33
import { readFileSync, rmSync, writeFileSync } from 'node:fs';
4-
import { ReleaseType, prerelease } from 'semver';
4+
import { prerelease } from 'semver';
55
import { dirSync } from 'tmp';
66
import type { DependencyBump } from '../../../release/changelog-renderer';
77
import { NxReleaseConfiguration, readNxJson } from '../../config/nx-json';
8-
import {
9-
FileData,
10-
ProjectFileMap,
11-
ProjectGraphProjectNode,
12-
} from '../../config/project-graph';
8+
import { ProjectGraphProjectNode } from '../../config/project-graph';
139
import { FsTree, Tree } from '../../generators/tree';
1410
import {
1511
createFileMapUsingProjectGraph,
@@ -22,6 +18,22 @@ import { isCI } from '../../utils/is-ci';
2218
import { output } from '../../utils/output';
2319
import { joinPathFragments } from '../../utils/path';
2420
import { workspaceRoot } from '../../utils/workspace-root';
21+
import {
22+
createChangesFromCommits,
23+
createFileToProjectMap,
24+
filterHiddenChanges,
25+
mapCommitToChange,
26+
} from './changelog/commit-utils';
27+
import {
28+
filterVersionPlansByCommitRange,
29+
resolveChangelogFromSHA,
30+
resolveWorkspaceChangelogFromSHA,
31+
} from './changelog/version-plan-filtering';
32+
import {
33+
ChangelogChange,
34+
createChangesFromGroupVersionPlans,
35+
createChangesFromProjectsVersionPlans,
36+
} from './changelog/version-plan-utils';
2537
import { ChangelogOptions } from './command-object';
2638
import {
2739
NxReleaseConfig,
@@ -39,11 +51,8 @@ import {
3951
} from './config/version-plans';
4052
import {
4153
GitCommit,
42-
Reference,
4354
getCommitHash,
44-
getFirstGitCommit,
4555
getGitDiff,
46-
getLatestGitTagForPattern,
4756
gitAdd,
4857
gitPush,
4958
gitTag,
@@ -55,6 +64,7 @@ import { printAndFlushChanges } from './utils/print-changes';
5564
import { printConfigAndExit } from './utils/print-config';
5665
import { ReleaseGraph, createReleaseGraph } from './utils/release-graph';
5766
import { createRemoteReleaseClient } from './utils/remote-release-clients/remote-release-client';
67+
import type { CheckAllBranchesWhen } from './utils/repository-git-tags';
5868
import { resolveChangelogRenderer } from './utils/resolve-changelog-renderer';
5969
import { resolveNxJsonConfigErrorMessage } from './utils/resolve-nx-json-error-message';
6070
import {
@@ -72,22 +82,6 @@ import {
7282
areAllVersionPlanProjectsFiltered,
7383
validateResolvedVersionPlansAgainstFilter,
7484
} from './utils/version-plan-utils';
75-
import {
76-
ChangelogChange,
77-
createChangesFromGroupVersionPlans,
78-
createChangesFromProjectsVersionPlans,
79-
} from './changelog/version-plan-utils';
80-
import {
81-
createChangesFromCommits,
82-
createFileToProjectMap,
83-
filterHiddenChanges,
84-
mapCommitToChange,
85-
} from './changelog/commit-utils';
86-
import {
87-
filterVersionPlansByCommitRange,
88-
resolveWorkspaceChangelogFromSHA,
89-
resolveChangelogFromSHA,
90-
} from './changelog/version-plan-filtering';
9185

9286
export interface NxReleaseChangelogResult {
9387
workspaceChangelog?: {
@@ -244,6 +238,7 @@ export function createAPI(
244238
args,
245239
nxReleaseConfig,
246240
useAutomaticFromRef,
241+
resolveRepositoryTags: releaseGraph.resolveRepositoryTags,
247242
});
248243

249244
// Filter version plans based on resolveVersionPlans option
@@ -372,7 +367,7 @@ export function createAPI(
372367
pattern: string,
373368
templateValues: Record<string, string>,
374369
preid: string | undefined,
375-
checkAllBranchesWhen: boolean | string[],
370+
checkAllBranchesWhen: CheckAllBranchesWhen,
376371
requireSemver: boolean,
377372
strictPreid: boolean
378373
): Promise<string | null> => {
@@ -383,6 +378,7 @@ export function createAPI(
383378
fromRef: args.from,
384379
tagPattern: pattern,
385380
tagPatternValues: templateValues,
381+
resolveRepositoryTags: releaseGraph.resolveRepositoryTags,
386382
checkAllBranchesWhen,
387383
preid,
388384
requireSemver,

packages/nx/src/command-line/release/changelog/version-plan-filtering.spec.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ describe('version-plan-filtering', () => {
2222
const mockGetLatestGitTagForPattern =
2323
gitUtils.getLatestGitTagForPattern as jest.Mock;
2424

25+
// Mock resolveRepositoryTags function for testing
26+
const mockResolveRepositoryTags = jest.fn().mockResolvedValue([]);
27+
2528
beforeEach(() => {
2629
jest.clearAllMocks();
2730
});
@@ -145,6 +148,7 @@ describe('version-plan-filtering', () => {
145148
},
146149
} as any,
147150
useAutomaticFromRef: false,
151+
resolveRepositoryTags: mockResolveRepositoryTags,
148152
});
149153

150154
expect(mockGetCommitHash).toHaveBeenCalledWith('v1.0.0');
@@ -166,6 +170,7 @@ describe('version-plan-filtering', () => {
166170
},
167171
} as any,
168172
useAutomaticFromRef: false,
173+
resolveRepositoryTags: mockResolveRepositoryTags,
169174
});
170175

171176
expect(mockGetLatestGitTagForPattern).toHaveBeenCalled();
@@ -188,6 +193,7 @@ describe('version-plan-filtering', () => {
188193
},
189194
} as any,
190195
useAutomaticFromRef: true,
196+
resolveRepositoryTags: mockResolveRepositoryTags,
191197
});
192198

193199
expect(mockGetFirstGitCommit).toHaveBeenCalled();
@@ -208,6 +214,7 @@ describe('version-plan-filtering', () => {
208214
},
209215
} as any,
210216
useAutomaticFromRef: false,
217+
resolveRepositoryTags: mockResolveRepositoryTags,
211218
});
212219

213220
expect(result).toBeNull();
@@ -231,11 +238,13 @@ describe('version-plan-filtering', () => {
231238
},
232239
} as any,
233240
useAutomaticFromRef: false,
241+
resolveRepositoryTags: mockResolveRepositoryTags,
234242
});
235243

236244
expect(mockGetLatestGitTagForPattern).toHaveBeenCalledWith(
237245
'{version}',
238246
{},
247+
mockResolveRepositoryTags,
239248
expect.objectContaining({
240249
preid: 'beta',
241250
})
@@ -274,11 +283,13 @@ describe('version-plan-filtering', () => {
274283
},
275284
} as any,
276285
useAutomaticFromRef: false,
286+
resolveRepositoryTags: mockResolveRepositoryTags,
277287
});
278288

279289
expect(mockGetLatestGitTagForPattern).toHaveBeenCalledWith(
280290
'{projectName}-v{version}',
281291
{},
292+
mockResolveRepositoryTags,
282293
expect.objectContaining({
283294
preid: 'alpha',
284295
})

packages/nx/src/command-line/release/changelog/version-plan-filtering.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ import {
1111
getLatestGitTagForPattern,
1212
} from '../utils/git';
1313
import type { VersionData } from '../utils/shared';
14+
import type {
15+
CheckAllBranchesWhen,
16+
RepoGitTags,
17+
} from '../utils/repository-git-tags';
1418

1519
/**
1620
* Filters version plans to only include those that were committed between the specified SHAs
@@ -128,15 +132,17 @@ export async function resolveChangelogFromSHA({
128132
requireSemver,
129133
strictPreid,
130134
useAutomaticFromRef,
135+
resolveRepositoryTags,
131136
}: {
132137
fromRef?: string;
133138
tagPattern: string;
134139
tagPatternValues: Record<string, string>;
135-
checkAllBranchesWhen: boolean | string[];
140+
checkAllBranchesWhen: CheckAllBranchesWhen;
136141
preid?: string;
137142
requireSemver: boolean;
138143
strictPreid: boolean;
139144
useAutomaticFromRef: boolean;
145+
resolveRepositoryTags: RepoGitTags['resolveTags'];
140146
}): Promise<string | null> {
141147
// If user provided a from ref, resolve it to a SHA
142148
if (fromRef) {
@@ -146,6 +152,7 @@ export async function resolveChangelogFromSHA({
146152
const latestTag = await getLatestGitTagForPattern(
147153
tagPattern,
148154
tagPatternValues,
155+
resolveRepositoryTags,
149156
{
150157
checkAllBranchesWhen,
151158
preid,
@@ -172,10 +179,12 @@ export async function resolveWorkspaceChangelogFromSHA({
172179
args,
173180
nxReleaseConfig,
174181
useAutomaticFromRef,
182+
resolveRepositoryTags,
175183
}: {
176184
args: ChangelogOptions;
177185
nxReleaseConfig: NxReleaseConfig;
178186
useAutomaticFromRef: boolean;
187+
resolveRepositoryTags: RepoGitTags['resolveTags'];
179188
}): Promise<string | null> {
180189
const workspacePreid = extractPreidFromVersion(args.version);
181190
const projectsPreid = extractProjectsPreidFromVersionData(args.versionData);
@@ -189,6 +198,7 @@ export async function resolveWorkspaceChangelogFromSHA({
189198
requireSemver: nxReleaseConfig.releaseTag.requireSemver,
190199
strictPreid: nxReleaseConfig.releaseTag.strictPreid,
191200
useAutomaticFromRef,
201+
resolveRepositoryTags,
192202
});
193203
}
194204

packages/nx/src/command-line/release/utils/git.spec.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import {
22
extractReferencesFromCommit,
33
getLatestGitTagForPattern,
4-
RepoGitTags,
54
sanitizeProjectNameForGitTag,
65
} from './git';
6+
import { RepoGitTags } from './repository-git-tags';
77

88
jest.mock('./exec-command', () => ({
99
execCommand: jest.fn(() =>
@@ -151,9 +151,12 @@ See merge request nx-release-test/nx-release-test!2`,
151151
});
152152

153153
describe('getLatestGitTagForPattern', () => {
154+
// Create a mock resolveTags function that uses the mocked execCommand
155+
const mockRepoGitTags = RepoGitTags.create();
156+
const mockResolveTags = mockRepoGitTags.resolveTags;
157+
154158
afterEach(() => {
155159
jest.clearAllMocks();
156-
RepoGitTags.instance.clean();
157160
});
158161

159162
describe('when releaseTagPatternStrictPreid is false', () => {
@@ -352,6 +355,7 @@ See merge request nx-release-test/nx-release-test!2`,
352355
projectName,
353356
releaseGroupName,
354357
},
358+
mockResolveTags,
355359
{
356360
requireSemver,
357361
preid: preid,
@@ -451,6 +455,7 @@ See merge request nx-release-test/nx-release-test!2`,
451455
{
452456
projectName,
453457
},
458+
mockResolveTags,
454459
{
455460
preid: preid,
456461
requireSemver: true,
@@ -476,6 +481,7 @@ See merge request nx-release-test/nx-release-test!2`,
476481
{
477482
projectName: 'my-lib-1',
478483
},
484+
mockResolveTags,
479485
{
480486
requireSemver: true,
481487
strictPreid: false,
@@ -490,6 +496,7 @@ See merge request nx-release-test/nx-release-test!2`,
490496
{
491497
projectName: 'my-lib-1',
492498
},
499+
mockResolveTags,
493500
{
494501
requireSemver: true,
495502
strictPreid: false,

0 commit comments

Comments
 (0)