/yesod-scaffold

The Yesod scaffolding, with branches for different versions.

Primary LanguageHaskellMIT LicenseMIT

yesod-scaffold

  • master: Build Status
  • postgres: Build Status
  • mysql: Build Status
  • sqlite: Build Status
  • simple: Build Status
  • mongo: Build Status
  • minimal: Build Status
  • postgres-fay: Build Status

The Yesod scaffolding, with branches for different versions.

If you want to send a pull request affecting all the different flavors, please send it as a pull request against the postgres branch. The scripts we use for building the scaffoldings automatically merge changes from postgres to all other branches.

If you have a patch which is backend-specific, please send a pull request to the appropriate branch, with a comment that this change applies only to the specific branch.

Build Process

The code contained by the scaffolding itself is all contained on separate branches. The master branch contains code for performing merges between these branches, testing that the branches build correctly, and generating the .hsfiles used by the stack-template repository. (Note: the full list of recognized branches is maintained in the Shared.hs file on the master branch.

The basic workflow for this repository is as follows:

  1. Changes are made to one of the branches. If the change is intended to be applied to all variants, it should be made to the postgres branch (as mentioned above).

  2. Check out the master branch and run stack build to generate the helper executables.

  3. Merge the changes from postgres to all other branches by running stack exec yesod-scaffold-merge. Note that there will often be merge conflicts, which will need to be resolved and then the command rerun until all branches merge successfully.

  4. Run stack exec yesod-scaffold-build to compile and run tests in all branches. You will need some system libraries and to set up some databases for testing. (NOTE: We should consider automating this process and/or using a Docker image for all of this.) After this completes successfully, the hsfiles directory will be populated.

  5. The generated .hsfiles should be copied into the stack-templates repo, with yesod- prefixed to the names.