Esempio n. 1
0
        public TopicFolder(string rawName, ProjectRoot project) : base(rawName)
        {
            _project = project;

            _url = rawName.Split('/').Select(FindValue).Join("/");
            _url = project.Url.AppendUrl(_url);
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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();
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
 public void AddProject(ProjectRoot project)
 {
     _projects[project.Name.ToLowerInvariant()] = project;
 }