Ejemplo n.º 1
0
 public BootstrapperController(PackagesConfigContent content)
 {
     _content = content;
 }
Ejemplo n.º 2
0
 public DownloadController(PackagesConfigContent content)
 {
     _content = content;
 }
Ejemplo n.º 3
0
        protected void Application_Start()
        {
            // Get the application data path.
            var appDataPath = new DirectoryPath(AppDomain.CurrentDomain.GetData("DataDirectory").ToString());

            // Read all addins.
            // TODO: Fix this container hack.
            var addinReader = new AddinReader(new FileSystem());
            var addins      = addinReader.Read(appDataPath.CombineWithFilePath("addins.xml"));

            // Define packages.
            var packageDefinitions = new List <PackageDefinition>();

            packageDefinitions.AddRange(addins.GetAddins()
                                        .Where(x => x.PackageDefinition != null)
                                        .Where(x => x.PackageDefinition.Filters.Count > 0)
                                        .Select(x => x.PackageDefinition));

            // Add core packages.
            packageDefinitions.Add(new PackageDefinition
            {
                Filters = new List <string>
                {
                    "/**/Cake.Core.dll",
                    "/**/Cake.Common.dll",
                    "/**/Cake.Core.xml",
                    "/**/Cake.Common.xml"
                },
                PackageName = "Cake",
                Metadata    = new CakeMetadata()
            });

            // Add testing packages.
            packageDefinitions.Add(new PackageDefinition
            {
                Filters = new List <string>
                {
                    "/**/Cake.Testing.dll",
                    "/**/Cake.Testing.xml",
                },
                PackageName = "Cake.Testing",
                Metadata    = new CakeMetadata()
            });

            // Create the document model by downloading the nuget package.
            string cakeVersion;
            var    documentModel = NuGetBootstrapper.Download(appDataPath,
                                                              new NuGetConfiguration {
                Packages = packageDefinitions
            }, out cakeVersion);

            // Build the DSL model.
            var dslModel = DslModelBuilder.Build(documentModel);

            // Generate packages.config content.
            var packagesConfig = new PackagesConfigContent(cakeVersion);

            // Build the container.
            var builder = new ContainerBuilder();

            builder.RegisterModule <CoreModule>();
            builder.RegisterControllers(typeof(MvcApplication).Assembly);
            builder.RegisterInstance(documentModel).As <DocumentModel>().SingleInstance();
            builder.RegisterInstance(dslModel).As <DslModel>().SingleInstance();
            builder.RegisterType <DocumentModelResolver>().SingleInstance();
            builder.RegisterType <RouteService>().SingleInstance();
            builder.RegisterType <UrlResolver>().As <IUrlResolver>().As <UrlResolver>().SingleInstance();
            builder.RegisterType <SignatureCache>().SingleInstance();
            builder.RegisterType <ApiServices>().SingleInstance();
            builder.RegisterType <LanguageProvider>().SingleInstance();
            builder.RegisterType <SyntaxRenderer>().SingleInstance();
            builder.RegisterType <SignatureRenderer>().SingleInstance();
            builder.RegisterType <ApiServices>().SingleInstance();
            builder.RegisterInstance(packagesConfig).SingleInstance();
            var container = builder.Build();

            // Read the topics and register.
            var reader = container.Resolve <ITopicReader>();
            var topics = reader.Read(appDataPath.CombineWithFilePath("docs.xml"));

            // Read all blog entries.
            var blogReader = container.Resolve <IBlogReader>();
            var blogIndex  = blogReader.Parse(appDataPath.Combine("blog"));

            // Update the container.
            builder = new ContainerBuilder();
            builder.RegisterInstance(topics).As <TopicTree>().SingleInstance();
            builder.RegisterInstance(blogIndex).As <BlogIndex>().SingleInstance();
            builder.RegisterInstance(addins).As <AddinIndex>().SingleInstance();
            builder.Update(container);

            // Perform registrations.
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }