forked from renovatebot/renovate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
create.ts
49 lines (44 loc) · 1.72 KB
/
create.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import upath from 'upath';
import { GlobalConfig } from '../../../../config/global';
import type { RenovateConfig } from '../../../../config/types';
import { logger } from '../../../../logger';
import { commitAndPush } from '../../../../modules/platform/commit';
import { checkoutBranch } from '../../../../util/git';
import { getMigrationBranchName } from '../common';
import { ConfigMigrationCommitMessageFactory } from './commit-message';
import { PrettierParser, applyPrettierFormatting } from './migrated-data';
import type { MigratedData } from './migrated-data';
export async function createConfigMigrationBranch(
config: Partial<RenovateConfig>,
migratedConfigData: MigratedData
): Promise<string | null> {
logger.debug('createConfigMigrationBranch()');
const configFileName = migratedConfigData.filename;
logger.debug('Creating config migration branch');
const commitMessageFactory = new ConfigMigrationCommitMessageFactory(
config,
configFileName
);
const commitMessage = commitMessageFactory.getCommitMessage();
// istanbul ignore if
if (GlobalConfig.get('dryRun')) {
logger.info('DRY-RUN: Would commit files to config migration branch');
return Promise.resolve(null);
}
await checkoutBranch(config.defaultBranch!);
const { content, filename, indent } = migratedConfigData;
const parser = upath.extname(filename).replace('.', '') as PrettierParser;
const contents = await applyPrettierFormatting(content, parser, indent);
return commitAndPush({
branchName: getMigrationBranchName(config),
files: [
{
type: 'addition',
path: configFileName,
contents,
},
],
message: commitMessage.toString(),
platformCommit: !!config.platformCommit,
});
}