/
update.ts
31 lines (30 loc) · 984 Bytes
/
update.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
import is from '@sindresorhus/is';
import detectIndent from 'detect-indent';
import { logger } from '../../logger';
import type { UpdateDependencyConfig } from '../types';
export function updateDependency({
fileContent,
upgrade,
}: UpdateDependencyConfig): string | null {
try {
logger.debug(`travis.updateDependency(): ${upgrade.newValue}`);
const indent = detectIndent(fileContent).indent || ' ';
let quote: string;
if (is.string(upgrade.currentValue[0])) {
quote =
fileContent.split(`'`).length > fileContent.split(`"`).length
? `'`
: `"`;
} else {
quote = '';
}
let newString = `node_js:\n`;
upgrade.newValue.split(',').forEach((version) => {
newString += `${indent}- ${quote}${version}${quote}\n`;
});
return fileContent.replace(/node_js:(\n\s+-[^\n]+)+\n/, newString);
} catch (err) {
logger.debug({ err }, 'Error setting new .travis.yml node versions');
return null;
}
}