Пример #1
0
 public static Task <IDisposable> TryCreateAsync(IDirectoryAccessor directoryAccessor)
 {
     if (directoryAccessor == null)
     {
         throw new ArgumentNullException(nameof(directoryAccessor));
     }
     return(TryCreateAsync(directoryAccessor.GetFullyQualifiedFilePath(LockFileName)));
 }
Пример #2
0
        private static void AddProjectOption(
            Command command,
            IDirectoryAccessor directoryAccessor,
            string projectFileExtension)
        {
            var projectOptionArgument = new Argument <FileInfo>(
                (SymbolResult result, out FileInfo projectFile) =>
            {
                var projectPath = new RelativeFilePath(result.Tokens.Select(t => t.Value).Single());

                if (directoryAccessor.FileExists(projectPath))
                {
                    projectFile = directoryAccessor.GetFullyQualifiedFilePath(projectPath);

                    return(true);
                }

                result.ErrorMessage = $"Project not found: {projectPath.Value}";
                projectFile         = null;
                return(false);
            })
            {
                Name  = "project",
                Arity = ArgumentArity.ExactlyOne
            };

            projectOptionArgument.SetDefaultValue(() =>
            {
                var rootDirectory = directoryAccessor.GetFullyQualifiedPath(new RelativeDirectoryPath("."));
                var projectFiles  = directoryAccessor.GetAllFilesRecursively()
                                    .Where(file => directoryAccessor.GetFullyQualifiedPath(file.Directory).FullName == rootDirectory.FullName && file.Extension == projectFileExtension)
                                    .ToArray();

                if (projectFiles.Length == 1)
                {
                    return(directoryAccessor.GetFullyQualifiedPath(projectFiles.Single()));
                }

                return(null);
            });

            var projectOption = new Option("--project")
            {
                Argument = projectOptionArgument
            };

            command.Add(projectOption);
        }
Пример #3
0
        public ProjectAsset(IDirectoryAccessor directoryAccessor, string csprojFileName = null) : base(directoryAccessor)
        {
            if (directoryAccessor == null)
            {
                throw new ArgumentNullException(nameof(directoryAccessor));
            }

            if (string.IsNullOrWhiteSpace(csprojFileName))
            {
                var firstProject = DirectoryAccessor.GetAllFiles().Single(f => f.Extension == ".csproj");
                _projectFile = DirectoryAccessor.GetFullyQualifiedFilePath(firstProject.FileName);
            }
            else
            {
                _projectFile = DirectoryAccessor.GetFullyQualifiedFilePath(csprojFileName);
            }

            Directory = DirectoryAccessor.GetFullyQualifiedRoot();
            Name      = _projectFile?.Name ?? Directory?.Name;
            _lastBuildErrorLogFile = directoryAccessor.GetFullyQualifiedFilePath(".trydotnet-builderror");
            _cleanupStep           = new PipelineStep <AnalyzerResult>(LoadResultOrCleanAsync);
            _projectBuildStep      = _cleanupStep.Then(BuildProjectAsync);
            _workspaceStep         = _projectBuildStep.Then(BuildWorkspaceAsync);
        }
Пример #4
0
 private PackageTool(string name, IDirectoryAccessor directoryAccessor)
 {
     Name = name;
     DirectoryAccessor = directoryAccessor;
     FilePath          = DirectoryAccessor.GetFullyQualifiedFilePath(Name.ExecutableName()).FullName;
 }
        public static async Task LoadFromAssembliesInDirectory(this KernelExtensionLoader loader,
                                                               IDirectoryAccessor directory, IKernel kernel, KernelInvocationContext context,
                                                               IEnumerable <string> additionalDependencies = null)
        {
            if (directory.RootDirectoryExists())
            {
                context.Publish(new DisplayedValueProduced($"Loading kernel extensions in directory {directory.GetFullyQualifiedRoot().FullName}", context.Command));
                var extensionDlls = directory.GetAllFiles().Where(file => file.Extension == ".dll").Select(file => directory.GetFullyQualifiedFilePath(file));


                foreach (var extensionDll in extensionDlls)
                {
                    await loader.LoadFromAssembly(extensionDll, kernel, context, additionalDependencies);
                }

                context.Publish(new DisplayedValueProduced($"Loaded kernel extensions in directory {directory.GetFullyQualifiedRoot().FullName}", context.Command));
            }
        }
Пример #6
0
 public async Task LoadFromAssembliesInDirectory(IDirectoryAccessor directory, IKernel kernel, PublishEvent publishEvent)
 {
     if (directory.RootDirectoryExists())
     {
         var extensionDlls = directory.GetAllFiles().Where(file => file.Extension == ".dll").Select(file => directory.GetFullyQualifiedFilePath(file));
         foreach (var extensionDll in extensionDlls)
         {
             await LoadFromAssembly(extensionDll, kernel, publishEvent);
         }
     }
 }