2024-05-06 11:17:07 -06:00
|
|
|
import { newlineRegex } from '../../../util/regex';
|
2023-02-19 05:43:48 -07:00
|
|
|
import type { PackageDependency, PackageFileContent } from '../types';
|
2024-05-06 11:17:07 -06:00
|
|
|
import { parseLine } from './line-parser';
|
2018-10-01 05:50:36 -06:00
|
|
|
|
2024-05-06 11:17:07 -06:00
|
|
|
export function extractPackageFile(content: string): PackageFileContent | null {
|
2019-07-25 00:17:19 -06:00
|
|
|
const deps: PackageDependency[] = [];
|
2024-05-06 11:17:07 -06:00
|
|
|
|
|
|
|
const lines = content.split(newlineRegex);
|
|
|
|
for (let lineNumber = 0; lineNumber < lines.length; lineNumber += 1) {
|
|
|
|
const line = lines[lineNumber];
|
|
|
|
const dep = parseLine(line);
|
|
|
|
if (!dep) {
|
|
|
|
continue;
|
2018-10-01 05:50:36 -06:00
|
|
|
}
|
2024-05-06 11:17:07 -06:00
|
|
|
|
|
|
|
dep.managerData ??= {};
|
|
|
|
dep.managerData.lineNumber = lineNumber;
|
|
|
|
|
|
|
|
deps.push(dep);
|
2018-10-01 05:50:36 -06:00
|
|
|
}
|
2024-05-06 11:17:07 -06:00
|
|
|
|
2018-10-01 05:50:36 -06:00
|
|
|
if (!deps.length) {
|
|
|
|
return null;
|
|
|
|
}
|
2022-08-09 13:51:43 -06:00
|
|
|
|
2024-05-06 11:17:07 -06:00
|
|
|
return { deps };
|
2022-08-09 13:51:43 -06:00
|
|
|
}
|