internal IReadOnlyList <string> FindProjFileAtOrAbovePath(IPhysicalFileSystem fileSystem, string startPath, HashSet <string> extensionLimiters)
 {
     if (extensionLimiters.Count == 0)
     {
         return(FileFindHelpers.FindFilesAtOrAbovePath(fileSystem, startPath, "*.*proj"));
     }
     else
     {
         return(FileFindHelpers.FindFilesAtOrAbovePath(fileSystem, startPath, "*.*proj", (filename) => extensionLimiters.Contains(Path.GetExtension(filename))));
     }
 }
        private ProjectTemplate InitProjectTemplateFromJsonConfig()
        {
            var files = FileFindHelpers.FindFilesAtOrAbovePath(_fileSystem, _rootPath, _templateSearchPattern);

            if (files.Count > 1)
            {
                throw new ArgumentException("Multiple config files found, make sure that there is only a single *_template.config file inside your project directory");
            }
            Console.WriteLine(_fileSystem.ReadAllText(files.First()));
            var template = JsonConvert.DeserializeObject <ProjectTemplate>(_fileSystem.ReadAllText(files.First()));

            return(template);
        }
 internal static IReadOnlyList <string> FindSolutionFilesAtOrAbovePath(IPhysicalFileSystem fileSystem, string outputBasePath)
 {
     return(FileFindHelpers.FindFilesAtOrAbovePath(fileSystem, outputBasePath, "*.sln"));
 }