Esempio n. 1
0
        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));
        }