Beispiel #1
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);
        }
        private static void AddProjectOption(
            Command csharp,
            IDirectoryAccessor directoryAccessor)
        {
            var projectOptionArgument = new Argument <FileInfo>(result =>
            {
                var projectPath = new RelativeFilePath(result.Tokens.Select(t => t.Value).Single());

                if (directoryAccessor.FileExists(projectPath))
                {
                    return(ArgumentResult.Success(directoryAccessor.GetFullyQualifiedPath(projectPath)));
                }

                return(ArgumentResult.Failure($"Project not found: {projectPath.Value}"));
            })
            {
                Name  = "project",
                Arity = ArgumentArity.ExactlyOne
            };

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

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

                return(null);
            });

            var projectOption = new Option("--project",
                                           argument: projectOptionArgument);

            csharp.Add(projectOption);
        }
Beispiel #3
0
 public static bool FileExists(
     this IDirectoryAccessor directoryAccessor,
     string relativePath) =>
 directoryAccessor.FileExists(new RelativeFilePath(relativePath));