Live at https://wurstlang.org/
This folder contains the complete source of the WurstScript website, configured as jekyll project and deployed via github-pages.
-
Check whether you have Ruby 3.2+ installed:
ruby --versionThis project currently uses Bundler 4.x (see
Gemfile.lock), which requires Ruby >= 3.2. -
Install Bundler:
gem install bundler -
Execute
bundler install -
Run the server with:
bundler exec jekyll serve
We use Sass as stylesheet language and you can find the files inside the _sass folder.
Tutorials are included as part of the documentation in their own section.
To create a new tutorial:
- Create a new markdown file in the
_tutorials/folder, for examplecp saveload.md new_tutorial.md. - Adjust the frontmatter such as title, excerpt, date
- The tutorial will be automatically added to the documentation page, the sidebar is generated from markdown headings
Adding a standard library doc page works almost the same as tutorials.
- Create a new table of contents file in
_doc/stdlib/ - Create a new set of tuturial pages in a subfolder of
_doc/stdlib/, e.g._doc/stdlib/new_doc - Define the pages by changing the contents of
_doc/stdlib/new_doc/ - This part differs Add the new doc page to the stdlib index in
_doc/stdlib/intro.md. Entries should be alphabetically sorted. - Setup
new_doc.mdas necessary for your pages:- Edit the title, excerpt, date, color.
- Change the
sectionsto match the uri of the pages of your tutorial.
- Write your new_doc pages, being sure to update the heading sections as necessary.
The site uses pagefind for fully local static search. No external API key is required.
The index is generated automatically by CI on every deploy — see
.github/workflows/pages.yml. It builds the
site, runs Pagefind against the built _site, and deploys the result to
GitHub Pages. Because the index is rebuilt from the actual content on every
deploy, it can never drift out of sync.
Do not commit a
pagefind/folder. It is.gitignored on purpose. A hand-committed index drifts from the content and breaks search (you get "SEARCH INDEX NOT FOUND" on the live site). Let CI generate it.
In repo Settings → Pages → Build and deployment, set Source to
"GitHub Actions". The workflow then publishes the site (custom domain
wurstlang.org is preserved via the CNAME file).
jekyll serve does not generate a search index. To preview search locally:
- Build the site:
bundle exec jekyll build - Generate the index into
_site/pagefind:npx -y pagefind@1.5.2 --site _site - Serve
_site(e.g.npx -y serve _site). Search loads from/pagefind/pagefind.js.
Repeat steps 1–2 after content changes you want reflected in local search.
Prerequisite: Node.js (for npx pagefind).
This repo now includes a root-level Jenkinsfile that automatically:
- Installs Ruby gems (
bundler install) - Builds the site (
bundler exec jekyll build) - Generates Pagefind index (
npx -y pagefind --site _site) - Archives
_site/**as build artifacts
To use it:
- Create a Jenkins Pipeline (or Multibranch Pipeline) job for this repository.
- Keep script source as
Jenkinsfilein SCM. - Ensure the Jenkins agent has Ruby/Bundler and Node.js/npm available.