| File: JsonPackageSpecReader.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.ProjectModel\NuGet.ProjectModel.csproj (NuGet.ProjectModel) |
// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. #nullable disable using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using NuGet.Common; using NuGet.Frameworks; using NuGet.LibraryModel; namespace NuGet.ProjectModel { public static partial class JsonPackageSpecReader { private const char VersionSeparator = ';'; public static readonly string RestoreOptions = "restore"; public static readonly string RestoreSettings = "restoreSettings"; public static readonly string HideWarningsAndErrors = "hideWarningsAndErrors"; /// <summary> /// Load and parse a project.json file /// </summary> /// <param name="name">project name</param> /// <param name="packageSpecPath">file path</param> public static PackageSpec GetPackageSpec(string name, string packageSpecPath) { return FileUtility.SafeRead(filePath: packageSpecPath, read: (stream, filePath) => GetPackageSpec(stream, name, filePath, null)); } public static PackageSpec GetPackageSpec(string json, string name, string packageSpecPath) { using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(json))) { return GetPackageSpec(ms, name, packageSpecPath, null); } } public static PackageSpec GetPackageSpec(Stream stream, string name, string packageSpecPath, string snapshotValue) { return GetPackageSpec(stream, name, packageSpecPath, snapshotValue, EnvironmentVariableWrapper.Instance); } internal static PackageSpec GetPackageSpec(Stream stream, string name, string packageSpecPath, string snapshotValue, IEnvironmentVariableReader environmentVariableReader) { return GetPackageSpecUtf8JsonStreamReader(stream, name, packageSpecPath, environmentVariableReader, snapshotValue); } private static string ExtractMacro(string value, string userSettingsDirectory, bool useMacros) { if (useMacros) { return MacroStringsUtility.ExtractMacro(value, userSettingsDirectory, MacroStringsUtility.UserMacro); } return value; } private static void ExtractMacros(List<string> paths, string userSettingsDirectory, bool useMacros) { if (useMacros) { MacroStringsUtility.ExtractMacros(paths, userSettingsDirectory, MacroStringsUtility.UserMacro); } } private static void AddTargetFramework(PackageSpec packageSpec, NuGetFramework frameworkName, NuGetFramework secondaryFramework, TargetFrameworkInformation targetFrameworkInformation) { NuGetFramework updatedFramework = frameworkName; if (targetFrameworkInformation.Imports.Length > 0) { NuGetFramework[] imports = targetFrameworkInformation.Imports.ToArray(); if (targetFrameworkInformation.AssetTargetFallback) { updatedFramework = new AssetTargetFallbackFramework(GetDualCompatibilityFrameworkIfNeeded(frameworkName, secondaryFramework), imports); } else { updatedFramework = new FallbackFramework(GetDualCompatibilityFrameworkIfNeeded(frameworkName, secondaryFramework), imports); } } else { updatedFramework = GetDualCompatibilityFrameworkIfNeeded(frameworkName, secondaryFramework); } targetFrameworkInformation = new TargetFrameworkInformation(targetFrameworkInformation) { FrameworkName = updatedFramework }; packageSpec.TargetFrameworks.Add(targetFrameworkInformation); } private static NuGetFramework GetDualCompatibilityFrameworkIfNeeded(NuGetFramework frameworkName, NuGetFramework secondaryFramework) { if (secondaryFramework != default) { return new DualCompatibilityFramework(frameworkName, secondaryFramework); } return frameworkName; } private static bool ValidateDependencyTarget(LibraryDependencyTarget targetValue) { var isValid = false; switch (targetValue) { case LibraryDependencyTarget.Package: case LibraryDependencyTarget.Project: case LibraryDependencyTarget.ExternalProject: isValid = true; break; } return isValid; } } }