public override async ValueTask ScanAsync(ScanFileContext context) { using var sr = await StreamUtilities.CreateReaderAsync(context.Content, context.CancellationToken).ConfigureAwait(false); var lineNo = 0; string?line; while ((line = await sr.ReadLineAsync().ConfigureAwait(false)) != null) { lineNo++; var match = s_pypiReferenceRegex.Match(line); if (!match.Success) { continue; } // Name==1.2.2 var packageName = match.Groups["PACKAGENAME"].Value; var versionGroup = match.Groups["VERSION"]; var version = versionGroup.Value; var column = versionGroup.Index + 1; await context.ReportDependency(new Dependency(packageName, version, DependencyType.PyPi, new TextLocation(context.FullPath, lineNo, column, versionGroup.Length))).ConfigureAwait(false); } }
public override async ValueTask ScanAsync(ScanFileContext context) { try { using var sr = await StreamUtilities.CreateReaderAsync(context.Content, context.CancellationToken).ConfigureAwait(false); using var jsonReader = new JsonTextReader(sr); var doc = await JToken.ReadFromAsync(jsonReader, context.CancellationToken).ConfigureAwait(false); var token = doc.SelectToken("$.sdk.version"); if (token?.Value <string>() is string version) { await context.ReportDependency(new Dependency(".NET SDK", version, DependencyType.DotNetSdk, new JsonLocation(context.FullPath, LineInfo.FromJToken(token), token.Path))).ConfigureAwait(false); } var sdksToken = doc.SelectToken("$.msbuild-sdks"); if (sdksToken is JObject sdks) { foreach (var sdk in sdks.Properties()) { version = sdk.Value.Value <string>(); if (version != null) { await context.ReportDependency(new Dependency(sdk.Name, version, DependencyType.NuGet, new JsonLocation(context.FullPath, LineInfo.FromJToken(sdk.Value), sdk.Value.Path))).ConfigureAwait(false); } } } } catch (JsonException) { } }
public override async ValueTask ScanAsync(ScanFileContext context) { try { using var sr = await StreamUtilities.CreateReaderAsync(context.Content, context.CancellationToken).ConfigureAwait(false); using var jsonReader = new JsonTextReader(sr); var doc = await JToken.ReadFromAsync(jsonReader, context.CancellationToken).ConfigureAwait(false); await ExtractSdk(context, doc).ConfigureAwait(false); await ExtractMsBuildSdks(context, doc).ConfigureAwait(false); } catch (JsonException) { } }
public override async ValueTask ScanAsync(ScanFileContext context) { try { using var sr = await StreamUtilities.CreateReaderAsync(context.Content, context.CancellationToken).ConfigureAwait(false); using var jsonReader = new JsonTextReader(sr); var doc = await JToken.ReadFromAsync(jsonReader, context.CancellationToken).ConfigureAwait(false); foreach (var deps in doc.SelectTokens("$..dependencies").Concat(doc.SelectTokens("$.tools")).OfType <JObject>()) { foreach (var dep in deps.Properties()) { JToken valueElement = dep; var packageName = dep.Name; string?version; if (dep.Value.Type == JTokenType.String) { version = dep.Value.Value <string>(); } else if (dep.Value.Type == JTokenType.Object) { var token = dep.Value.SelectToken("$.version"); if (token == null) { continue; } version = token.Value <string>(); valueElement = token; } else { continue; } if (version != null) { await context.ReportDependency(new Dependency(packageName, version, DependencyType.NuGet, new JsonLocation(context.FullPath, LineInfo.FromJToken(dep), valueElement.Path))).ConfigureAwait(false); } } } } catch (JsonException) { } }
public override async ValueTask ScanAsync(ScanFileContext context) { try { using var sr = await StreamUtilities.CreateReaderAsync(context.Content, context.CancellationToken).ConfigureAwait(false); using var jsonReader = new JsonTextReader(sr); var doc = await JToken.ReadFromAsync(jsonReader, context.CancellationToken).ConfigureAwait(false); // https://docs.npmjs.com/files/package.json#dependencies foreach (var deps in doc.SelectTokens("$.dependencies").OfType <JObject>()) { await ScanDependenciesAsync(context, deps).ConfigureAwait(false); } // https://docs.npmjs.com/files/package.json#devdependencies foreach (var deps in doc.SelectTokens("$.devDependencies").OfType <JObject>()) { await ScanDependenciesAsync(context, deps).ConfigureAwait(false); } // https://docs.npmjs.com/files/package.json#peerdependencies foreach (var deps in doc.SelectTokens("$.peerDependencies").OfType <JObject>()) { await ScanDependenciesAsync(context, deps).ConfigureAwait(false); } // https://docs.npmjs.com/files/package.json#optionaldependencies foreach (var deps in doc.SelectTokens("$.optionaldependencies").OfType <JObject>()) { await ScanDependenciesAsync(context, deps).ConfigureAwait(false); } } catch (JsonException) { } }