public static string GetPackageDirectory(this LockFile lockFile, LockFileTargetLibrary library) { var packageFolders = lockFile.GetNormalizedPackageFolders(); var packageFoldersCount = packageFolders.Count(); var userPackageFolder = packageFoldersCount == 1 ? string.Empty : packageFolders.First(); var fallbackPackageFolders = packageFoldersCount > 1 ? packageFolders.Skip(1) : packageFolders; var packageDirectory = new FallbackPackagePathResolver(userPackageFolder, fallbackPackageFolders) .GetPackageDirectory(library.Name, library.Version); return(packageDirectory); }
public CommandSpec CreateCommandSpecFromLibrary( LockFileTargetLibrary toolLibrary, string commandName, IEnumerable <string> commandArguments, IEnumerable <string> allowedExtensions, LockFile lockFile, CommandResolutionStrategy commandResolutionStrategy, string depsFilePath, string runtimeConfigPath) { Reporter.Verbose.WriteLine(string.Format( LocalizableStrings.AttemptingToFindCommand, PackagedCommandSpecFactoryName, commandName, toolLibrary.Name)); var toolAssembly = toolLibrary?.RuntimeAssemblies .FirstOrDefault(r => Path.GetFileNameWithoutExtension(r.Path) == commandName); if (toolAssembly == null) { Reporter.Verbose.WriteLine(string.Format( LocalizableStrings.FailedToFindToolAssembly, PackagedCommandSpecFactoryName, commandName)); return(null); } var commandPath = GetCommandFilePath(lockFile, toolLibrary, toolAssembly); if (!File.Exists(commandPath)) { Reporter.Verbose.WriteLine(string.Format( LocalizableStrings.FailedToFindCommandPath, PackagedCommandSpecFactoryName, commandPath)); return(null); } return(CreateCommandSpecWrappingWithMuxerIfDll( commandPath, commandArguments, depsFilePath, commandResolutionStrategy, lockFile.GetNormalizedPackageFolders(), runtimeConfigPath)); }