ssg/TODO.md

2.4 KiB

TODO

Here will be kept all of the various todos for this project, organized by release.

Future

Add

  • Plan out plugin system such that we can create custom providers of texts, data, etc.
  • Provide a way to override ssgBuilds variables from the cli.
  • Add Watchable interface/trait back; an abstraction over FS watching and other sources (such as a database, etc.).
  • Explore apply(Plugin) in buildScripts.

Fix

v0.2.0

Add

  • Write manual.
  • Remove lib module.
  • Add a way for CLI to choose a build to do, or multiple builds, defaulting to 'default' if it exists.
  • Write lots of tests for buildscript dsl, etc.
  • Explore base in buildScript dsl.
    • Get rid of allBuilds concept, and replace it with composable/concat-able builds. In the dsl we could have a notion of abstractBuild which can be 'extended' (i.e., on the left side of a concat operation) but not actually run (since it doesn't have a name).
    • OutputDir should be concat-able, such that the left is the base for the right.
    • OutputDirFunctions.concat should be concat-able as well, such that both are BiFunction<OutputDir, Build, OutputDir>, and the output of the left is the input of the right.
    • Make the delegates as dumb as possible; no more getResult methods; make different classes/object handle concat'ing and getting results.

Fix

  • Update CHANGELOG to reflect the gsp-dsl changes.
    • taskTypes gone, use class name instead
    • introduction of models
  • Change most instances of Closure<Void> to Closure<?> to help with IDE expectations.

Finished

v0.2.0

  • Investigate imports, including static, in scripts
    • Does not work; must use binding
  • Get rid of taskTypes DSL, replace with static import of task types to scripts
    • Done via the binding directly
  • Plan out data models DSL
    • Done via models dsl

v0.1.0

  • Add some kind of outputs map to dsl that can be used to retrieve various info about another output of the current build. For example:
    // while in a special page 'special.gsp' we could get the 'output' info for a text 'blog/post.md'
    def post = outputs['blog/post.md']
    assert post instanceof Output // or something
    assert post.path == 'blog/post.md'
    assert post.targetPath = 'blog/post.html'
    // as well as some other information, perhaps such as the Type, extension, *etc.*