Example #1
0
        public FlatFileCmsRazorProjectPageRouteModelProvider(
            FlatFileCmsProviderRazorProjectFileSystem razorFileSystem,
            IOptions <RazorPagesOptions> pagesOptionsAccessor,
            IOptions <FlatFileCmsGitOptions> flatFileOptions,
            ILoggerFactory loggerFactory,
            IHostingEnvironment hostingEnvironment)
        {
            _razorFileSystem    = razorFileSystem;
            _hostingEnvironment = hostingEnvironment;
            _pagesOptions       = pagesOptionsAccessor.Value;
            _flatFileOptions    = flatFileOptions.Value;
            _logger             = loggerFactory.CreateLogger <RazorProjectPageRouteModelProvider>();

            RootDirectory     = Path.GetFullPath(_flatFileOptions.FilePath);
            AreaRootDirectory = Path.GetFullPath(Path.Combine(_flatFileOptions.FilePath, "Areas"));

            _routeModelFactory = new PageRouteModelFactory(_pagesOptions, RootDirectory, AreaRootDirectory, _logger);
        }
        public void Execute(IServiceCollection serviceCollection, IServiceProvider serviceProvider)
        {
            var configuration = serviceProvider.GetService <IConfiguration>();

            serviceCollection.AddTransient <IGitRepositoryProvider, GitRepositoryProvider>();
            serviceCollection.Configure <FlatFileCmsGitOptions>(configuration.GetSection("Tapas:FlatFileCmsGit"));

            var cmsOptions = new FlatFileCmsGitOptions();

            configuration.Bind("Tapas:FlatFileCmsGit", cmsOptions);

            var repoProvider = serviceCollection.BuildServiceProvider()
                               .GetRequiredService <IGitRepositoryProvider>();

            serviceCollection.AddMvc()
            .AddRazorPagesOptions(o => { o.AllowAreas = true; })
            .AddRazorOptions(options =>
            {
                if (!IsValidPath(cmsOptions.FilePath))
                {
                    return;
                }

                if (!Directory.Exists(cmsOptions.FilePath))
                {
                    if (cmsOptions.RepositoryUrl.IsNullOrWhiteSpace())
                    {
                        Directory.CreateDirectory(cmsOptions.FilePath);
                    }
                    else
                    {
                        repoProvider.CloneRepositoryToPathAsync(cmsOptions);
                    }
                }

                options.FileProviders.Add(new PhysicalFileProvider(cmsOptions.FilePath));
            });
        }
Example #3
0
 public PagesController(IOptions <FlatFileCmsGitOptions> flatFileOptions)
 {
     this.flatFileOptions = flatFileOptions.Value;
 }