Example #1
0
 private FilePath LockFileRelativePathToFullFilePath(string lockFileRelativePath, LockFileTargetLibrary library)
 {
     return(PackageDirectory
            .WithSubDirectories(
                Id.ToString(),
                library.Version.ToNormalizedString())
            .WithFile(lockFileRelativePath));
 }
Example #2
0
        private IReadOnlyList <CommandSettings> GetCommands()
        {
            const string AssetsFileName       = "project.assets.json";
            const string ToolSettingsFileName = "DotnetToolSettings.xml";

            try
            {
                var commands = new List <CommandSettings>();
                var lockFile = new LockFileFormat().Read(PackageDirectory.WithFile(AssetsFileName).Value);

                var library            = FindLibraryInLockFile(lockFile);
                var dotnetToolSettings = FindItemInTargetLibrary(library, ToolSettingsFileName);
                if (dotnetToolSettings == null)
                {
                    throw new ToolConfigurationException(
                              CommonLocalizableStrings.MissingToolSettingsFile);
                }

                var toolConfigurationPath =
                    PackageDirectory
                    .WithSubDirectories(
                        Id.ToString(),
                        library.Version.ToNormalizedString())
                    .WithFile(dotnetToolSettings.Path);

                var configuration = ToolConfigurationDeserializer.Deserialize(toolConfigurationPath.Value);

                var entryPointFromLockFile = FindItemInTargetLibrary(library, configuration.ToolAssemblyEntryPoint);
                if (entryPointFromLockFile == null)
                {
                    throw new ToolConfigurationException(
                              string.Format(
                                  CommonLocalizableStrings.MissingToolEntryPointFile,
                                  configuration.ToolAssemblyEntryPoint,
                                  configuration.CommandName));
                }

                // Currently only "dotnet" commands are supported
                commands.Add(new CommandSettings(
                                 configuration.CommandName,
                                 "dotnet",
                                 PackageDirectory
                                 .WithSubDirectories(
                                     Id.ToString(),
                                     library.Version.ToNormalizedString())
                                 .WithFile(entryPointFromLockFile.Path)));

                return(commands);
            }
            catch (Exception ex) when(ex is UnauthorizedAccessException || ex is IOException)
            {
                throw new ToolConfigurationException(
                          string.Format(
                              CommonLocalizableStrings.FailedToRetrieveToolConfiguration,
                              ex.Message),
                          ex);
            }
        }
Example #3
0
        private ToolConfiguration DeserializeToolConfiguration(string ToolSettingsFileName, LockFileTargetLibrary library)
        {
            var dotnetToolSettings = FindItemInTargetLibrary(library, ToolSettingsFileName);

            if (dotnetToolSettings == null)
            {
                throw new ToolConfigurationException(
                          CommonLocalizableStrings.MissingToolSettingsFile);
            }

            var toolConfigurationPath =
                PackageDirectory
                .WithSubDirectories(
                    Id.ToString(),
                    library.Version.ToNormalizedString())
                .WithFile(dotnetToolSettings.Path);

            var configuration = ToolConfigurationDeserializer.Deserialize(toolConfigurationPath.Value);

            return(configuration);
        }