Go to file
Owen Nelson 908f16855a Fixes #279 switch from iron to actix-web.
This implementation seems to match the behavior of the previous iron
server.

Static files are rendered as-is, and when a directory is requested, we
attempt to render a `index.html` found inside, or 404 if it's not
present.

The actix docs mention using channels to send a message to the server to
shut it down gracefully while running in another thread (as we're doing
here), but it seems like there would have to be some reorganization in
order to manage this effectively, perhaps holding the channel sender inside
`main.rs` so we can push a message through to the server when the call
to `cmd::serve()` finally returns.

For the time being, I left things without any careful attempts to
cleanup the server thread. This more or less matches the old iron
implementation as far as I can see.

The static file handling in actix is _just_ a little off from what we'd
want.
I left some comments in the source regarding why we can't just use their hook
for directory index redirection.
2018-06-25 18:07:41 +02:00
ci Improve sorting speed 2017-07-04 18:33:58 +09:00
completions Fix config CLI option 2018-03-16 19:11:12 +01:00
components Add year, month and day to page context with a date 2018-06-25 18:06:25 +02:00
docs Add year, month and day to page context with a date 2018-06-25 18:06:25 +02:00
src Fixes #279 switch from iron to actix-web. 2018-06-25 18:07:41 +02:00
sublime_syntaxes Update syntaxes 2018-06-25 18:00:25 +02:00
sublime_themes Add a bunch of themes, light and dark. 2018-02-28 21:15:25 +00:00
test_site Add html-alias test 2018-06-25 18:02:07 +02:00
.editorconfig Create new project 2016-12-06 14:51:33 +09:00
.gitignore Add snacraft config 2018-06-04 23:37:55 +12:00
.gitmodules Add CMake syntax and update other syntaxes 2018-04-13 15:07:30 +02:00
.travis.yml Try to remove sudo: required in travis 2018-01-25 12:44:41 +01:00
appveyor.yml Appveyor config fix 2018-06-22 14:29:11 +02:00
build.rs Config with i18n 2018-01-15 17:54:06 +01:00
Cargo.lock Fixes #279 switch from iron to actix-web. 2018-06-25 18:07:41 +02:00
Cargo.toml Fixes #279 switch from iron to actix-web. 2018-06-25 18:07:41 +02:00
CHANGELOG.md Add year, month and day to page context with a date 2018-06-25 18:06:25 +02:00
EXAMPLES.md Add Tinkering to EXAMPLES.md 2018-04-02 11:15:30 -04:00
LICENSE USe date range for license 2018-01-16 13:39:56 +01:00
netlify.toml Update gutenberg version on netlify 2018-03-29 20:21:35 +02:00
README.md Use the new shortcode parser 2018-06-25 18:00:05 +02:00
snapcraft.yaml Move snapcraft file 2018-06-22 13:40:26 +02:00

Gutenberg

Build Status Build status

A fast static site generator in a single binary with everything built-in.

Documentation is available on its site or in the docs/content folder of the repository.

Comparisons with other static site generators

Gutenberg Cobalt Hugo Pelican
Single binary
Language Rust Rust Go Python
Syntax highlighting
Sass compilation
Assets co-location
i18n
Image processing
Sane template engine ✕✕✕
Themes
Shortcodes
Internal links
Table of contents
Automatic header anchors
Aliases
Pagination
Custom taxonomies
Search
Data files

Supported content formats:

  • Gutenberg: markdown
  • Cobalt: markdown
  • Hugo: markdown, asciidoc, org-mode
  • Pelican: reStructuredText, markdown, asciidoc, org-mode, whatever-you-want

Note that many features of Pelican are coming from plugins, which might be tricky to use because of version mismatch or lacking documentation.

Contributing

As the documentation site is automatically built on commits to master, all development should happen on the next branch, unless it is fixing the current documentation.

If you want a feature added or modified, please open an issue to discuss it before doing a PR.

Adding syntax highlighting languages and themes

Adding a syntax

Syntax highlighting depends on submodules so ensure you load them first:

$ git submodule update --init

Gutenberg only works with syntaxes in the .sublime-syntax format. If your syntax is in .tmLanguage format, open it in Sublime Text and convert it to sublime-syntax by clicking on Tools > Developer > New Syntax from ... and put it at the root of sublime_syntaxes.

You can also add a submodule to the repository of the wanted syntax:

$ cd sublime_syntaxes
$ git submodule add https://github.com/elm-community/SublimeElmLanguageSupport

Note that you can also only copy manually the updated syntax definition file but this means Gutenberg won't be able to automatically update it.

You can check for any updates to the current packages by running:

$ git submodule update --remote --merge

And finally from the root of the components/highlighting crate run the following command:

$ cargo run --example generate_sublime synpack ../../sublime_syntaxes ../../sublime_syntaxes/newlines.packdump ../../sublime_syntaxes/nonewlines.packdump

Adding a theme

A gallery containing lots of themes is located at https://tmtheme-editor.herokuapp.com/#!/editor/theme/Agola%20Dark. More themes can be easily added to gutenberg, just make a PR with the wanted theme added in the sublime_themes directory and run the following command from the root of the components/rendering:

$ cargo run --example generate_sublime themepack ../../sublime_themes ../../sublime_themes/all.themedump

You should see the list of themes being added.