Skip to content

Commit a3504fc

Browse files
committed
feat: allow running tool in offline mode by setting --fetch-remote=false
1 parent 2e76a77 commit a3504fc

9 files changed

+49
-13
lines changed

src/initial-parameters.test.ts

+17-7
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,13 @@ describe('initial-parameters', () => {
3636
reset: true,
3737
backport: false,
3838
defaultBranch: 'main',
39+
fetchRemote: true,
3940
});
4041
jest
4142
.spyOn(envModule, 'getEnvironmentVariables')
4243
.mockReturnValue({ EDITOR: undefined });
4344
when(jest.spyOn(projectModule, 'readProject'))
44-
.calledWith('/path/to/project', { stderr })
45+
.calledWith('/path/to/project', { stderr, fetchRemote: true })
4546
.mockResolvedValue(project);
4647

4748
const initialParameters = await determineInitialParameters({
@@ -56,6 +57,7 @@ describe('initial-parameters', () => {
5657
reset: true,
5758
releaseType: 'ordinary',
5859
defaultBranch: 'main',
60+
fetchRemote: true,
5961
});
6062
});
6163

@@ -72,6 +74,7 @@ describe('initial-parameters', () => {
7274
reset: true,
7375
backport: false,
7476
defaultBranch: 'main',
77+
fetchRemote: true,
7578
});
7679
jest
7780
.spyOn(envModule, 'getEnvironmentVariables')
@@ -88,6 +91,7 @@ describe('initial-parameters', () => {
8891

8992
expect(readProjectSpy).toHaveBeenCalledWith('/path/to/cwd/project', {
9093
stderr,
94+
fetchRemote: true,
9195
});
9296
});
9397

@@ -102,12 +106,13 @@ describe('initial-parameters', () => {
102106
reset: true,
103107
backport: false,
104108
defaultBranch: 'main',
109+
fetchRemote: true,
105110
});
106111
jest
107112
.spyOn(envModule, 'getEnvironmentVariables')
108113
.mockReturnValue({ EDITOR: undefined });
109114
when(jest.spyOn(projectModule, 'readProject'))
110-
.calledWith('/path/to/project', { stderr })
115+
.calledWith('/path/to/project', { stderr, fetchRemote: true })
111116
.mockResolvedValue(project);
112117

113118
const initialParameters = await determineInitialParameters({
@@ -132,12 +137,13 @@ describe('initial-parameters', () => {
132137
reset: true,
133138
backport: false,
134139
defaultBranch: 'main',
140+
fetchRemote: true,
135141
});
136142
jest
137143
.spyOn(envModule, 'getEnvironmentVariables')
138144
.mockReturnValue({ EDITOR: undefined });
139145
when(jest.spyOn(projectModule, 'readProject'))
140-
.calledWith('/path/to/project', { stderr })
146+
.calledWith('/path/to/project', { stderr, fetchRemote: true })
141147
.mockResolvedValue(project);
142148

143149
const initialParameters = await determineInitialParameters({
@@ -162,12 +168,13 @@ describe('initial-parameters', () => {
162168
reset: true,
163169
backport: false,
164170
defaultBranch: 'main',
171+
fetchRemote: true,
165172
});
166173
jest
167174
.spyOn(envModule, 'getEnvironmentVariables')
168175
.mockReturnValue({ EDITOR: undefined });
169176
when(jest.spyOn(projectModule, 'readProject'))
170-
.calledWith('/path/to/project', { stderr })
177+
.calledWith('/path/to/project', { stderr, fetchRemote: true })
171178
.mockResolvedValue(project);
172179

173180
const initialParameters = await determineInitialParameters({
@@ -190,12 +197,13 @@ describe('initial-parameters', () => {
190197
reset: false,
191198
backport: false,
192199
defaultBranch: 'main',
200+
fetchRemote: true,
193201
});
194202
jest
195203
.spyOn(envModule, 'getEnvironmentVariables')
196204
.mockReturnValue({ EDITOR: undefined });
197205
when(jest.spyOn(projectModule, 'readProject'))
198-
.calledWith('/path/to/project', { stderr })
206+
.calledWith('/path/to/project', { stderr, fetchRemote: true })
199207
.mockResolvedValue(project);
200208

201209
const initialParameters = await determineInitialParameters({
@@ -218,12 +226,13 @@ describe('initial-parameters', () => {
218226
reset: false,
219227
backport: true,
220228
defaultBranch: 'main',
229+
fetchRemote: true,
221230
});
222231
jest
223232
.spyOn(envModule, 'getEnvironmentVariables')
224233
.mockReturnValue({ EDITOR: undefined });
225234
when(jest.spyOn(projectModule, 'readProject'))
226-
.calledWith('/path/to/project', { stderr })
235+
.calledWith('/path/to/project', { stderr, fetchRemote: true })
227236
.mockResolvedValue(project);
228237

229238
const initialParameters = await determineInitialParameters({
@@ -246,12 +255,13 @@ describe('initial-parameters', () => {
246255
reset: false,
247256
backport: false,
248257
defaultBranch: 'main',
258+
fetchRemote: true,
249259
});
250260
jest
251261
.spyOn(envModule, 'getEnvironmentVariables')
252262
.mockReturnValue({ EDITOR: undefined });
253263
when(jest.spyOn(projectModule, 'readProject'))
254-
.calledWith('/path/to/project', { stderr })
264+
.calledWith('/path/to/project', { stderr, fetchRemote: true })
255265
.mockResolvedValue(project);
256266

257267
const initialParameters = await determineInitialParameters({

src/initial-parameters.ts

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ type InitialParameters = {
2121
reset: boolean;
2222
releaseType: ReleaseType;
2323
defaultBranch: string;
24+
fetchRemote: boolean;
2425
};
2526

2627
/**
@@ -64,5 +65,6 @@ export async function determineInitialParameters({
6465
reset: args.reset,
6566
defaultBranch: args.defaultBranch,
6667
releaseType: args.backport ? 'backport' : 'ordinary',
68+
fetchRemote: args.fetchRemote,
6769
};
6870
}

src/main.test.ts

+3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ describe('main', () => {
2020
reset: true,
2121
defaultBranch: 'main',
2222
releaseType: 'backport',
23+
fetchRemote: true,
2324
});
2425
const followMonorepoWorkflowSpy = jest
2526
.spyOn(monorepoWorkflowOperations, 'followMonorepoWorkflow')
@@ -40,6 +41,7 @@ describe('main', () => {
4041
defaultBranch: 'main',
4142
stdout,
4243
stderr,
44+
fetchRemote: true,
4345
});
4446
});
4547

@@ -55,6 +57,7 @@ describe('main', () => {
5557
reset: false,
5658
defaultBranch: 'main',
5759
releaseType: 'backport',
60+
fetchRemote: true,
5861
});
5962
const followMonorepoWorkflowSpy = jest
6063
.spyOn(monorepoWorkflowOperations, 'followMonorepoWorkflow')

src/main.ts

+9-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,14 @@ export async function main({
2525
stdout: Pick<WriteStream, 'write'>;
2626
stderr: Pick<WriteStream, 'write'>;
2727
}) {
28-
const { project, tempDirectoryPath, reset, releaseType, defaultBranch } =
29-
await determineInitialParameters({ argv, cwd, stderr });
28+
const {
29+
project,
30+
tempDirectoryPath,
31+
reset,
32+
releaseType,
33+
defaultBranch,
34+
fetchRemote,
35+
} = await determineInitialParameters({ argv, cwd, stderr });
3036

3137
if (project.isMonorepo) {
3238
stdout.write(
@@ -40,6 +46,7 @@ export async function main({
4046
defaultBranch,
4147
stdout,
4248
stderr,
49+
fetchRemote,
4350
});
4451
} else {
4552
stdout.write(

src/monorepo-workflow-operations.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ import {
5959
* @param args.defaultBranch - The name of the default branch in the repository.
6060
* @param args.stdout - A stream that can be used to write to standard out.
6161
* @param args.stderr - A stream that can be used to write to standard error.
62+
* @param args.fetchRemote - Whether to synchronize local tags with remote.
6263
*/
6364
export async function followMonorepoWorkflow({
6465
project,
@@ -68,6 +69,7 @@ export async function followMonorepoWorkflow({
6869
defaultBranch,
6970
stdout,
7071
stderr,
72+
fetchRemote,
7173
}: {
7274
project: Project;
7375
tempDirectoryPath: string;
@@ -76,14 +78,15 @@ export async function followMonorepoWorkflow({
7678
defaultBranch: string;
7779
stdout: Pick<WriteStream, 'write'>;
7880
stderr: Pick<WriteStream, 'write'>;
81+
fetchRemote?: boolean;
7982
}) {
8083
const { version: newReleaseVersion, firstRun } = await createReleaseBranch({
8184
project,
8285
releaseType,
8386
});
8487

8588
if (firstRun) {
86-
await updateChangelogsForChangedPackages({ project, stderr });
89+
await updateChangelogsForChangedPackages({ project, stderr, fetchRemote });
8790
await commitAllChanges(
8891
project.directoryPath,
8992
`Initialize Release ${newReleaseVersion}`,

src/package.ts

+4
Original file line numberDiff line numberDiff line change
@@ -301,16 +301,19 @@ export function formatChangelog(changelog: string) {
301301
* @param args.project - The project.
302302
* @param args.package - A particular package in the project.
303303
* @param args.stderr - A stream that can be used to write to standard error.
304+
* @param args.fetchRemote - Whether to synchronize local tags with remote.
304305
* @returns The result of writing to the changelog.
305306
*/
306307
export async function updatePackageChangelog({
307308
project: { repositoryUrl },
308309
package: pkg,
309310
stderr,
311+
fetchRemote,
310312
}: {
311313
project: Pick<Project, 'directoryPath' | 'repositoryUrl'>;
312314
package: Package;
313315
stderr: Pick<WriteStream, 'write'>;
316+
fetchRemote?: boolean | undefined;
314317
}): Promise<void> {
315318
let changelogContent;
316319

@@ -337,6 +340,7 @@ export async function updatePackageChangelog({
337340
repoUrl: repositoryUrl,
338341
tagPrefixes: [`${pkg.validatedManifest.name}@`, 'v'],
339342
formatter: formatChangelog,
343+
fetchRemote,
340344
});
341345

342346
if (newChangelogContent) {

src/project.test.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ describe('project', () => {
6363
.calledWith(projectDirectoryPath)
6464
.mockResolvedValue(projectRepositoryUrl);
6565
when(jest.spyOn(repoModule, 'getTagNames'))
66-
.calledWith(projectDirectoryPath)
66+
.calledWith(projectDirectoryPath, true)
6767
.mockResolvedValue(projectTagNames);
6868
when(jest.spyOn(packageModule, 'readMonorepoRootPackage'))
6969
.calledWith({
@@ -111,7 +111,10 @@ describe('project', () => {
111111
);
112112

113113
expect(
114-
await readProject(projectDirectoryPath, { stderr }),
114+
await readProject(projectDirectoryPath, {
115+
stderr,
116+
fetchRemote: true,
117+
}),
115118
).toStrictEqual({
116119
directoryPath: projectDirectoryPath,
117120
repositoryUrl: projectRepositoryUrl,

src/project.ts

+4
Original file line numberDiff line numberDiff line change
@@ -136,17 +136,20 @@ export async function readProject(
136136
* @param args - The arguments.
137137
* @param args.project - The project.
138138
* @param args.stderr - A stream that can be used to write to standard error.
139+
* @param args.fetchRemote - Whether to synchronize local tags with remote.
139140
* @returns The result of writing to the changelog.
140141
*/
141142
export async function updateChangelogsForChangedPackages({
142143
project,
143144
stderr,
145+
fetchRemote,
144146
}: {
145147
project: Pick<
146148
Project,
147149
'directoryPath' | 'repositoryUrl' | 'workspacePackages'
148150
>;
149151
stderr: Pick<WriteStream, 'write'>;
152+
fetchRemote?: boolean | undefined;
150153
}): Promise<void> {
151154
await Promise.all(
152155
Object.values(project.workspacePackages)
@@ -158,6 +161,7 @@ export async function updateChangelogsForChangedPackages({
158161
project,
159162
package: pkg,
160163
stderr,
164+
fetchRemote,
161165
}),
162166
),
163167
);

src/repo.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ describe('repo', () => {
108108
})
109109
.mockResolvedValue(['tag1', 'tag2', 'tag3']);
110110

111-
expect(await getTagNames('/path/to/repo')).toStrictEqual([
111+
expect(await getTagNames('/path/to/repo', false)).toStrictEqual([
112112
'tag1',
113113
'tag2',
114114
'tag3',

0 commit comments

Comments
 (0)