Skip to content

Commit 570be9c

Browse files
committed
chore: extract writeAnalyticsConfig to publish
1 parent 717de7d commit 570be9c

File tree

3 files changed

+38
-24
lines changed

3 files changed

+38
-24
lines changed

packages/build/src/npm-packages.ts

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { execFileSync } from 'child_process';
22
import path from 'path';
3-
import writeAnalyticsConfig from './analytics';
4-
import Config from './config';
53

64
const PLACEHOLDER_VERSION = '0.0.0-dev.0';
75
const PROJECT_ROOT = path.resolve(__dirname, '..', '..', '..');
@@ -22,18 +20,11 @@ export function bumpNpmPackages(version: string): void {
2220
'--force-publish',
2321
'--yes'
2422
], {
25-
cwd: PROJECT_ROOT,
2623
stdio: 'inherit'
2724
});
2825
}
2926

30-
export async function publishNpmPackages(config: Config): Promise<void> {
31-
// ensures the segment api key to be present in the published packages
32-
await writeAnalyticsConfig(
33-
config.analyticsConfigFilePath,
34-
config.segmentKey
35-
);
36-
27+
export function publishNpmPackages(): void {
3728
const packages = listNpmPackages();
3829

3930
const versions = Array.from(new Set(packages.map(({ version }) => version)));
@@ -56,16 +47,16 @@ export async function publishNpmPackages(config: Config): Promise<void> {
5647
'--force-publish',
5748
'--yes'
5849
], {
59-
cwd: PROJECT_ROOT,
6050
stdio: 'inherit'
6151
});
6252
}
6353

6454
function listNpmPackages(): {version: string}[] {
6555
const lernaListOutput = execFileSync(
6656
LERNA_BIN, [
57+
'list',
6758
'--json',
68-
], { cwd: PROJECT_ROOT }
59+
]
6960
).toString();
7061

7162
const packages = JSON.parse(lernaListOutput);

packages/build/src/publish.spec.ts

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import chai, { expect } from 'chai';
44
import Config from './config';
55
import path from 'path';
66
import sinon from 'ts-sinon';
7+
import type writeAnalyticsConfigType from './analytics';
8+
import type { publishNpmPackages as publishNpmPackagesType } from './npm-packages';
9+
import type uploadDownloadCenterConfigType from './download-center';
710

811
chai.use(require('sinon-chai'));
912

@@ -13,8 +16,9 @@ function createStubRepo(overrides?: any): GithubRepo {
1316

1417
describe('publish', () => {
1518
let config: Config;
16-
let uploadDownloadCenterConfig: (version: string, awsKey: string, awsSecret: string) => Promise<any>;
17-
let publishNpmPackages: (config: Config) => Promise<void>;
19+
let uploadDownloadCenterConfig: typeof uploadDownloadCenterConfigType;
20+
let publishNpmPackages: typeof publishNpmPackagesType;
21+
let writeAnalyticsConfig: typeof writeAnalyticsConfigType;
1822
let githubRepo: GithubRepo;
1923

2024
beforeEach(() => {
@@ -50,6 +54,7 @@ describe('publish', () => {
5054

5155
uploadDownloadCenterConfig = sinon.spy();
5256
publishNpmPackages = sinon.spy();
57+
writeAnalyticsConfig = sinon.spy();
5358
githubRepo = createStubRepo();
5459
});
5560

@@ -65,7 +70,8 @@ describe('publish', () => {
6570
config,
6671
githubRepo,
6772
uploadDownloadCenterConfig,
68-
publishNpmPackages
73+
publishNpmPackages,
74+
writeAnalyticsConfig
6975
);
7076

7177
expect(uploadDownloadCenterConfig).to.have.been.calledWith(
@@ -80,21 +86,25 @@ describe('publish', () => {
8086
config,
8187
githubRepo,
8288
uploadDownloadCenterConfig,
83-
publishNpmPackages
89+
publishNpmPackages,
90+
writeAnalyticsConfig
8491
);
8592

8693
expect(githubRepo.promoteRelease).to.have.been.calledWith(config);
8794
});
8895

89-
it('publishes NPM packages', async() => {
96+
it('writes analytics config and then publishes NPM packages', async() => {
9097
await publish(
9198
config,
9299
githubRepo,
93100
uploadDownloadCenterConfig,
94-
publishNpmPackages
101+
publishNpmPackages,
102+
writeAnalyticsConfig
95103
);
96104

105+
expect(writeAnalyticsConfig).to.have.been.calledOnce;
97106
expect(publishNpmPackages).to.have.been.calledWith();
107+
expect(publishNpmPackages).to.have.been.calledAfter(writeAnalyticsConfig as any);
98108
});
99109
});
100110

@@ -110,7 +120,8 @@ describe('publish', () => {
110120
config,
111121
githubRepo,
112122
uploadDownloadCenterConfig,
113-
publishNpmPackages
123+
publishNpmPackages,
124+
writeAnalyticsConfig
114125
);
115126

116127
expect(uploadDownloadCenterConfig).not.to.have.been.called;
@@ -121,7 +132,8 @@ describe('publish', () => {
121132
config,
122133
githubRepo,
123134
uploadDownloadCenterConfig,
124-
publishNpmPackages
135+
publishNpmPackages,
136+
writeAnalyticsConfig
125137
);
126138

127139
expect(githubRepo.promoteRelease).not.to.have.been.called;
@@ -132,7 +144,8 @@ describe('publish', () => {
132144
config,
133145
githubRepo,
134146
uploadDownloadCenterConfig,
135-
publishNpmPackages
147+
publishNpmPackages,
148+
writeAnalyticsConfig
136149
);
137150

138151
expect(publishNpmPackages).not.to.have.been.called;

packages/build/src/publish.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
import { GithubRepo } from './github-repo';
22
import Config from './config';
33
import { redactConfig } from './redact-config';
4+
import type writeAnalyticsConfigType from './analytics';
5+
import type { publishNpmPackages as publishNpmPackagesType } from './npm-packages';
6+
import type uploadDownloadCenterConfigType from './download-center';
47

58
export default async function publish(
69
config: Config,
710
githubRepo: GithubRepo,
8-
uploadDownloadCenterConfig: (version: string, awsKey: string, awsSecret: string) => Promise<any>,
9-
publishNpmPackages: (config: Config) => Promise<void>,
11+
uploadDownloadCenterConfig: typeof uploadDownloadCenterConfigType,
12+
publishNpmPackages: typeof publishNpmPackagesType,
13+
writeAnalyticsConfig: typeof writeAnalyticsConfigType
1014
): Promise<void> {
1115
if (config.dryRun) return;
1216

@@ -25,6 +29,12 @@ export default async function publish(
2529

2630
await githubRepo.promoteRelease(config);
2731

28-
await publishNpmPackages(config);
32+
// ensures the segment api key to be present in the published packages
33+
await writeAnalyticsConfig(
34+
config.analyticsConfigFilePath,
35+
config.segmentKey
36+
);
37+
38+
publishNpmPackages();
2939
console.info('mongosh: finished release process.');
3040
}

0 commit comments

Comments
 (0)