Mercurial > piecrust2
view piecrust/plugins/builtin.py @ 1188:a7c43131d871
bake: Fix file write flushing problem with Python 3.8+
Writing the cache files fails in Python 3.8 because it looks like flushing
behaviour has changed. We need to explicitly flush. And even then, in very
rare occurrences, it looks like it can still run into racing conditions,
so we do a very hacky and ugly "retry" loop when fetching cached data :(
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 15 Jun 2021 22:36:23 -0700 |
parents | 74c0c7483986 |
children |
line wrap: on
line source
from piecrust.plugins.base import PieCrustPlugin class BuiltInPlugin(PieCrustPlugin): name = '__builtin__' def getCommands(self): from piecrust.commands.base import HelpCommand from piecrust.commands.builtin.admin import AdministrationPanelCommand from piecrust.commands.builtin.baking import ( BakeCommand, ShowRecordCommand) from piecrust.commands.builtin.info import ( RootCommand, ShowConfigCommand, FindCommand, ShowSourcesCommand, ShowRoutesCommand, ShowPathsCommand, UrlCommand) from piecrust.commands.builtin.plugins import PluginsCommand from piecrust.commands.builtin.publishing import PublishCommand from piecrust.commands.builtin.scaffolding import ( PrepareCommand, CopyAssetCommand) from piecrust.commands.builtin.serving import ServeCommand from piecrust.commands.builtin.tasks import TasksCommand from piecrust.commands.builtin.themes import ThemesCommand from piecrust.commands.builtin.util import ( InitCommand, PurgeCommand, ImportCommand) return [ InitCommand(), ImportCommand(), HelpCommand(), RootCommand(), PurgeCommand(), ShowConfigCommand(), FindCommand(), PrepareCommand(), CopyAssetCommand(), ShowSourcesCommand(), ShowRoutesCommand(), ShowPathsCommand(), UrlCommand(), ThemesCommand(), PluginsCommand(), BakeCommand(), ShowRecordCommand(), ServeCommand(), AdministrationPanelCommand(), PublishCommand(), TasksCommand() ] def getCommandExtensions(self): from piecrust.commands.builtin.scaffolding import ( DefaultPrepareTemplatesCommandExtension, UserDefinedPrepareTemplatesCommandExtension, DefaultPrepareTemplatesHelpTopic) return [ DefaultPrepareTemplatesCommandExtension(), UserDefinedPrepareTemplatesCommandExtension(), DefaultPrepareTemplatesHelpTopic()] def getSources(self): from piecrust.sources.autoconfig import ( AutoConfigContentSource, OrderedContentSource) from piecrust.sources.blogarchives import BlogArchivesSource from piecrust.sources.default import DefaultContentSource from piecrust.sources.fs import FSContentSource from piecrust.sources.posts import ( FlatPostsSource, ShallowPostsSource, HierarchyPostsSource) from piecrust.sources.prose import ProseSource from piecrust.sources.taxonomy import TaxonomySource return [ AutoConfigContentSource, BlogArchivesSource, DefaultContentSource, FSContentSource, FlatPostsSource, HierarchyPostsSource, OrderedContentSource, ProseSource, ShallowPostsSource, TaxonomySource] def getPipelines(self): from piecrust.pipelines.page import PagePipeline from piecrust.pipelines.asset import AssetPipeline from piecrust.sources.taxonomy import TaxonomyPipeline from piecrust.sources.blogarchives import BlogArchivesPipeline return [ PagePipeline, AssetPipeline, TaxonomyPipeline, BlogArchivesPipeline] def getDataProviders(self): from piecrust.dataproviders.pageiterator import \ PageIteratorDataProvider from piecrust.dataproviders.blog import BlogDataProvider return [ PageIteratorDataProvider, BlogDataProvider] def getTemplateEngines(self): from piecrust.templating.inukshukengine import InukshukTemplateEngine from piecrust.templating.jinjaengine import JinjaTemplateEngine from piecrust.templating.pystacheengine import PystacheTemplateEngine return [ InukshukTemplateEngine(), JinjaTemplateEngine(), PystacheTemplateEngine()] def getFormatters(self): from piecrust.formatting.markdownformatter import MarkdownFormatter from piecrust.formatting.textileformatter import TextileFormatter from piecrust.formatting.smartypantsformatter import ( SmartyPantsFormatter) return [ MarkdownFormatter(), SmartyPantsFormatter(), TextileFormatter()] def getProcessors(self): from piecrust.processing.browserify import BrowserifyProcessor from piecrust.processing.compass import CompassProcessor from piecrust.processing.compressors import ( CleanCssProcessor, UglifyJSProcessor) from piecrust.processing.copy import CopyFileProcessor from piecrust.processing.less import LessProcessor from piecrust.processing.pygments_style import PygmentsStyleProcessor from piecrust.processing.requirejs import RequireJSProcessor from piecrust.processing.sass import SassProcessor from piecrust.processing.sitemap import SitemapProcessor from piecrust.processing.util import ConcatProcessor return [ BrowserifyProcessor(), CopyFileProcessor(), ConcatProcessor(), PygmentsStyleProcessor(), CompassProcessor(), LessProcessor(), SassProcessor(), RequireJSProcessor(), SitemapProcessor(), CleanCssProcessor(), UglifyJSProcessor()] def getImporters(self): from piecrust.importing.jekyll import JekyllImporter from piecrust.importing.piecrust import PieCrust1Importer from piecrust.importing.wordpress import WordpressXmlImporter return [ PieCrust1Importer(), JekyllImporter(), WordpressXmlImporter()] def getPublishers(self): from piecrust.publishing.copy import CopyPublisher from piecrust.publishing.sftp import SftpPublisher from piecrust.publishing.shell import ShellCommandPublisher from piecrust.publishing.rsync import RsyncPublisher return [ CopyPublisher, ShellCommandPublisher, SftpPublisher, RsyncPublisher] def getTaskRunners(self): from piecrust.tasks.mentions import MentionTaskRunner return [ MentionTaskRunner]