Popularity
6.0
Stable
Activity
5.0
-
805
30
103

Description

Couscous generates a GitHub pages website from your markdown documentation.

What follows is the documentation for contributors.

Code Quality Rank: L5
Programming language: PHP
License: GNU General Public License v3.0 or later
Latest version: v1.8.0

Couscous alternatives and similar libraries

Based on the "Static Site Generators" category.
Alternatively, view Couscous alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of Couscous or a related project?

Add another 'Static Site Generators' Library

README


layout: home

Couscous generates a GitHub pages website from your markdown documentation.

Build Status Average time to resolve an issue Percentage of issues still open

Everything is documented on couscous.io.

What follows is the documentation for contributors.

How Couscous works?

Couscous was designed to be as simple as possible. By embracing simplicity, it becomes extremely simple to extend.

Website generation

The website generation is composed of a list of steps to process the Project model object:

interface Step
{
    /**
     * Process the given project.
     *
     * @param Project $project
     */
    public function __invoke(Project $project);
}

Steps are very granular, thus extremely easy to write and test. For example:

  • LoadConfig: load the couscous.yml config file
  • InstallDependencies: install the dependencies (using yarn, npm or bower)
  • LoadMarkdownFiles: load the content of all the *.md files in memory
  • RenderMarkdown: render the markdown content
  • WriteFiles: write the in-memory processed files to the target directory

For example, here is a step that would preprocess Markdown files to put the word "Couscous" in bold:

class PutCouscousInBold implements \Couscous\Step
{
    public function __invoke(Project $project)
    {
        /** @var MarkdownFile[] $markdownFiles */
        $markdownFiles = $project->findFilesByType('Couscous\Model\MarkdownFile');

        foreach ($markdownFiles as $file) {
            $file->content = str_replace('Couscous', '**Couscous**', $file->content);
        }
    }
}

Couscous uses PHP-DI for wiring everything together with dependency injection.

The full list of steps is configured in [src/Application/config.php](src/Application/config.php).

Website deployment

Couscous deploys by cloning (in a temp directory) the current repository, checking out the gh-pages branch, generating the website inside it, committing and pushing.

In the future, Couscous will support several deployment strategies.

Contributing

See the [CONTRIBUTING](CONTRIBUTING.md) file.

License

Couscous is released under the MIT License.


*Note that all licence references and agreements mentioned in the Couscous README section above are relevant to that project's source code only.