/
global-manifest.ts
44 lines (38 loc) · 1.16 KB
/
global-manifest.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
import * as datasourceNuget from '../../../datasource/nuget';
import { logger } from '../../../logger';
import { SkipReason } from '../../../types';
import type { PackageDependency, PackageFile } from '../../types';
import type { MsbuildGlobalManifest } from '../types';
export function extractMsbuildGlobalManifest(
content: string,
packageFile: string
): PackageFile | null {
const deps: PackageDependency[] = [];
let manifest: MsbuildGlobalManifest;
try {
manifest = JSON.parse(content);
} catch (err) {
logger.debug({ fileName: packageFile }, 'Invalid JSON');
return null;
}
if (!manifest['msbuild-sdks'] && !manifest.sdk?.version) {
logger.debug(
{ fileName: packageFile },
'This global.json is not a Nuget file'
);
return null;
}
for (const depName of Object.keys(manifest['msbuild-sdks'])) {
const sdk = manifest['msbuild-sdks'][depName];
const currentValue = sdk[0];
const dep: PackageDependency = {
depType: 'nuget',
depName,
currentValue,
datasource: datasourceNuget.id,
skipReason: SkipReason.UnsupportedDatasource,
};
deps.push(dep);
}
return { deps };
}