A flexible and extensible static content generation framework for .NET.
MIT License
Bot releases are hidden (Show)
Published by daveaglick almost 5 years ago
DefaultFeatures.Commands
into DefaultFeatures.BuildCommands
, DefaultFeatures.HostingCommands
, and DefaultFeatures.CustomCommands
for finer control.DefaultsToAdd
to DefaultFeatures
.ThrowException
module that can be used to throw exceptions based on a config value.BuildCommand
to PipelinesCommand
.build
to pipelines
and accepting pipelines to execute as an argument (moving the root path to an option).IBootstrapper.AddCommands<TParent>()
to add all nested class commands of a parent type.IBootstrapper.AddPipelines<TParent>()
to add all nested class pipelines of a parent type.Bootstrapper.CreateDefaultWithout()
and IBootstrapper.AddDefaultsWithout()
to create a default bootstrapper without specific components.IBootstrapper.AddBuildCommand()
methods to IBootstrapper.AddPipelineCommand()
.Published by daveaglick almost 5 years ago
StartProcess.WithArgument()
methods to add arguments to the module using a fluent interface.Config<TValue>.CombineWith()
extensions for combining two configs.Config<TValue>.Transform()
extensions for transforming from one value to another.IExecutionContext
(re)implement IMetadata
through Settings
.ToString()
overloads to IFileSystemEntry
(can't believe those weren't already there).Statiq.Netlify
extension with a DeployNetlifySite
module.IDocument
now implements IContentProviderFactory
.IContentProvider
overloads to the DeployAppService
module.Published by daveaglick almost 5 years ago
serve
command for serving arbitrary folders with a local preview server (#55, #60, thanks @duracellko).Published by daveaglick almost 5 years ago
Published by daveaglick almost 5 years ago
Published by daveaglick almost 5 years ago
SetMediaType
module to set the media type without changing the content.IDocument.ContentProvider
so that it's never null.IContentProvider.Length
to get the content length without needing to get the stream.AddMetadata
to SetMetadata
to better match other module naming conventions and to reflect the metadata key being set might already exist.ReplaceContent
to SetContent
to better match other module naming conventions.ProcessShortcodes
and uses a default delimiter of <?# ... ?>
(the forthcoming site generator will need to define the alternate delimiter for pre-transform shortcodes directly).IContentProvider.MediaType
to surface the media type of content.MediaTypes
static class that contains an exhaustive set of media type (MIME) mappings by file extension.DeploySearchIndex
module that deploys an Azure search index from input document metadata.deploy
command that executes deployment pipelines.ExecutionPolicy.Normal
policy and changed ExecutionPolicy.Default
to specify different behavior depending on if the pipeline is a deployment pipeline.Published by daveaglick almost 5 years ago
SetDestination
now takes either an extension or a path distinguished by a preceding dot.Published by daveaglick almost 5 years ago
ExecuteIf
to work when there are no input documents and the config doesn't require one.CreateDocuments
and adds additional config-based overloads.Published by daveaglick almost 5 years ago
IBoostrapper.ConfigureSettings()
to use a new IConfigurationSettings
object that exposes the settings and the underlying IConfiguration
IConfigurationSettings
to IReadOnlyConfigurationSettings
and introduced a new mutable IConfigurationSettings
to use in the bootstrapper.Published by daveaglick almost 5 years ago
IBootstrapper.AddSettings()
calls to run after other configuration.ReadFiles
.Pipeline
class (most importantly to remove the Dependencies
setter in favor of adding to the existing hash set).IReadOnlyApplicationState.IsCommand()
to determine the current command.Published by daveaglick almost 5 years ago
IConfigurator
to allow more flexible direct configuration (such as command branches).GenerateJson
so it executes when no input documents are provided.ReplaceContent
.EngineSettings
to ConfigurationSettings
to reflect a broader use than just the engine.Published by daveaglick about 5 years ago
IBootstrapper.AddDelegateCommand()
fluent methods to configure delegate-based commands.IBootstrapper.AddBuildCommand()
fluent methods to configure simple commands that build specified pipelines.EngineCommand
.IEngineManager
interface to expose the engine manager to commands that derive from EngineCommand
.IEngine.Settings
and IExecutionContext.Settings
to use a IConfiguration
as the backing store and present it as metadata.INamedPipeline
to allow pipeline instances to provide names.Module.AfterExecution()
and Module.AfterExecutionAsync()
to pass a new ExecutionOutputs
class instead of by ref (which doesn't work with async).MirrorResources
retry policy.Published by daveaglick about 5 years ago
==
overloads to NormalizedPath
.RenderSection()
to StatiqRazorPage
that renders default content if the section is not defined.IDocument.GetStream()
to IDocument.GetContentStream()
.IDocument.GetStringAsync()
to IDocument.GetContentStringAsync()
.IDocument.GetBytesAsync()
to IDocument.GetContentBytesAsync()
.IEngine.SerialExecution
and --serial
CLI argument to run pipelines and modules in serial (#58).Published by daveaglick about 5 years ago
IPipeline.Deployment
) which run their output phase only after other output phases (#57).StartProcess.WithErrorExitCode()
to define a custom function for determining if the process existed in error.-d
/--defaults
and a flag to the engine to indicate if default pipelines should be run independent of specified pipelines.SimpleBuildCommand
to CustomBuildCommand
and adds support for the default pipelines flag.Published by daveaglick about 5 years ago
ExecuteModules
module that works like the old Branch
module used to by dropping any output documents from the child modules.CreateTree
.nameof
is often used to refer to pipelines.Published by daveaglick about 5 years ago
StartProcess.KeepContent()
to prevent replacing document content with process output.StartProcess.OnlyOnce()
to only execute the process once.PipelineTrigger
to ExecutionPolicy
.IPipeline
implementations from the entry assembly are added by the bootstrapper by default.ICommand
implementations from the entry assembly are added by the bootstrapper by default.EngineManager
public so it can be used by custom commands.SimpleBuildCommand
base command to make creating new pipeline-specific build commands easier.AddPipelines()
and AddCommands()
methods to add pipelines and commands from the entry or a given assembly.MultiConfigModule
, ParallelMultiConfigModule
, SyncMultiConfigModule
, and ParallelSyncMultiConfigModule
base classes for modules that use multiple Config<T>
values.ExecutionPipeline
base pipeline for use when a custom pipeline that runs code for each phase is needed.ZipDirectory
module.Statiq.AmazonWebServices
extension library to Statiq.Aws
.Statiq.Azure
extension library.DeployAppService
module.Published by daveaglick about 5 years ago
IBootstrapper.AddSettings()
overload to IBoostrapper.ConfigureSettings()
.IBootstrapper.AddServices()
to IBoostrapper.ConfigureServices()
.IBootstrapper.ConfigureEngine()
.StartProcess
module to start a process and create a document from it's output or run it in the background.-p
/--pipeline
CLI argument to indicate which pipelines to execute.Published by daveaglick about 5 years ago
Module
before/after methods.Published by daveaglick about 5 years ago
IPipelineOutputs
with the result documents from each pipeline.BeforeModuleExecution
and AfterModuleExecution
with ability to override outputs.IEventCollection
, IReadOnlyEventCollection
, IEngine.Events
, and IExecutionContext.Events
.protected
, and renamed the execution methods for clarity.Pipeline
so it works better as a base class and you can define the phase modules directly as properties.ModuleList
methods to remove overload ambiguity between params IModule[]
and IEnumerable<IModule>
.IModule[]
to ModuleList
.IReadOnlyApplicationState
object in the IExecutionContext
, taking the place of the ApplicationInput
property.Config.FromSettings()
methods that get values from a IReadOnlySettings
.Published by daveaglick about 5 years ago