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)); }); }
public PagesController(IOptions <FlatFileCmsGitOptions> flatFileOptions) { this.flatFileOptions = flatFileOptions.Value; }