public TopicFolder(string rawName, ProjectRoot project) : base(rawName) { _project = project; _url = rawName.Split('/').Select(FindValue).Join("/"); _url = project.Url.AppendUrl(_url); }
public ProjectRoot LoadProject(string bottleName, string folder) { var files = FindFilesFromBottle(bottleName); var project = ProjectRoot.LoadFrom(folder.AppendPath(ProjectRoot.File)); findProjectVersion(bottleName, folder, project); return(CorrelateProject(project, files)); }
public static void GatherNugetsIntoProject(ProjectRoot project, string directory) { var files = new FileSystem().FindFiles(directory, FileSet.Deep("*.nuspec")); var nugets = files.Select(x => ReadFrom(x)); if (project.NugetWhitelist.IsEmpty()) { project.Nugets = nugets.Where(x => !x.Name.EndsWith(".Docs")).ToArray(); } else { var acceptable = project.NugetWhitelist.ToDelimitedArray(); project.Nugets = nugets.Where(x => acceptable.Contains(x.Name)).ToArray(); } }
public static ProjectRoot LoadFromFolder(string folder) { var project = ProjectRoot.LoadFrom(folder.AppendPath(ProjectRoot.File)); var files = new FileSystem() .FindFiles(folder, FileSet.Deep("*.spark")) .Select(file => new Template { FilePath = file, RootPath = folder, ViewPath = file }) .Where(IsTopic) .Select(x => new SparkTopicFile(new ViewDescriptor <Template>(x))).ToArray(); CorrelateProject(project, files); return(project); }
public static ProjectRoot CorrelateProject(ProjectRoot project, IEnumerable <ITopicFile> files) { var folders = new Cache <string, TopicFolder>(raw => new TopicFolder(raw, project)); files.GroupBy(x => (x.Folder ?? String.Empty)).Each(@group => { var topicFolder = folders[@group.Key]; var folderTopics = @group.Select(file => new Topic(topicFolder, file)).ToArray(); topicFolder.AddFiles(folderTopics); folderTopics.Each(TopicBuilder.BuildOut); var parentUrl = @group.Key.ParentUrl(); while (parentUrl.IsNotEmpty()) { folders.FillDefault(parentUrl); parentUrl = parentUrl.ParentUrl(); } }); folders.Each(x => { if (x.OrderString == String.Empty) { return; } var rawParent = x.OrderString.ParentUrl(); folders.WithValue(rawParent, parent => parent.Add(x)); }); var masterFolder = folders[String.Empty]; IEnumerable <Topic> topLevelSubjects = masterFolder.TopLevelTopics().ToArray(); project.Index = topLevelSubjects.FirstOrDefault(x => x.IsIndex); project.Splash = project.Index.ChildNodes.FirstOrDefault(x => x.Key.EndsWith("/splash")); if (project.Splash != null) { project.Splash.Remove(); project.Splash.Url = project.Url; project.Index.Url = project.Url.AppendUrl("index"); } return(project); }
private static void findProjectVersion(string bottleName, string folder, ProjectRoot project) { if (bottleName == "Application") { return; // hokey, but it stops an error. } var assemblyFileName = bottleName + ".dll"; var file = new FileSystem().FindFiles(folder, FileSet.Deep(assemblyFileName)).FirstOrDefault(); if (file != null) { try { var assembly = Assembly.ReflectionOnlyLoadFrom(file); if (assembly != null) { project.Version = assembly.GetName().Version.ToString().Split('.').Take(3).Join("."); } } catch (Exception) { Console.WriteLine("Unable to find a version for assembly at " + file); } } if (project.Version.IsNotEmpty()) { return; } try { var assembly = Assembly.Load(bottleName); if (assembly != null) { project.Version = assembly.GetName().Version.ToString(); } } catch (Exception) { Console.WriteLine("Could not load the assembly for " + bottleName); } }
public void AddProject(ProjectRoot project) { _projects[project.Name.ToLowerInvariant()] = project; }