-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
config.ts
94 lines (84 loc) · 2.72 KB
/
config.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import { GlobalConfig } from '../../../../config/global';
import { getPreset } from '../../../../config/presets/local';
import { PRESET_DEP_NOT_FOUND } from '../../../../config/presets/util';
import type {
RenovateConfig,
RenovateSharedConfig,
} from '../../../../config/types';
import { logger } from '../../../../logger';
import { clone } from '../../../../util/clone';
import { EditorConfig, JSONWriter } from '../../../../util/json-writer';
async function getOnboardingConfig(
config: RenovateConfig
): Promise<RenovateSharedConfig> {
let onboardingConfig = clone(config.onboardingConfig);
let orgPreset: string | undefined;
logger.debug(
'Checking if this org/owner has a default Renovate preset which can be used.'
);
// TODO #7154
const orgName = config.repository!.split('/')[0];
// Check for org/renovate-config
try {
const repo = `${orgName}/renovate-config`;
if (await getPreset({ repo })) {
orgPreset = `local>${repo}`;
}
} catch (err) {
if (
err.message !== PRESET_DEP_NOT_FOUND &&
!err.message.startsWith('Unsupported platform')
) {
logger.warn({ err }, 'Unknown error fetching default owner preset');
}
}
if (!orgPreset) {
// Check for org/.{{platform}}
const platform = GlobalConfig.get('platform');
try {
const repo = `${orgName}/.${platform}`;
const presetName = 'renovate-config';
if (
await getPreset({
repo,
presetName,
})
) {
orgPreset = `local>${repo}:${presetName}`;
}
} catch (err) {
if (
err.message !== PRESET_DEP_NOT_FOUND &&
!err.message.startsWith('Unsupported platform')
) {
logger.warn({ err }, 'Unknown error fetching default owner preset');
}
}
}
if (orgPreset) {
logger.debug(
`Found org preset ${orgPreset} - using it in onboarding config`
);
onboardingConfig = {
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
extends: [orgPreset],
};
} else {
// Organization preset did not exist
logger.debug(
'No default org/owner preset found, so the default onboarding config will be used instead. Note: do not be concerned with any 404 messages that preceded this.'
);
}
logger.debug({ config: onboardingConfig }, 'onboarding config');
return onboardingConfig;
}
async function getOnboardingConfigContents(
config: RenovateConfig,
fileName: string
): Promise<string> {
const codeFormat = await EditorConfig.getCodeFormat(fileName);
const jsonWriter = new JSONWriter(codeFormat);
const onboardingConfig = await getOnboardingConfig(config);
return jsonWriter.write(onboardingConfig);
}
export { getOnboardingConfig, getOnboardingConfigContents };