Skip to content

wurstscript/wurstscript.github.io

Repository files navigation

pages-build-deployment

WurstScript Webpage & Documentation

Live at https://wurstlang.org/

This folder contains the complete source of the WurstScript website, configured as jekyll project and deployed via github-pages.

Developer Information

Serving the page locally:

  1. Check whether you have Ruby 3.2+ installed:

    ruby --version

    This project currently uses Bundler 4.x (see Gemfile.lock), which requires Ruby >= 3.2.

  2. Install Bundler:

    gem install bundler

  3. Execute

    bundler install

  4. Run the server with:

    bundler exec jekyll serve

Styling

We use Sass as stylesheet language and you can find the files inside the _sass folder.

Tutorials

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 example cp 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

Standard library doc

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.md as necessary for your pages:
    • Edit the title, excerpt, date, color.
    • Change the sections to match the uri of the pages of your tutorial.
  • Write your new_doc pages, being sure to update the heading sections as necessary.

Search Index

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.

One-time GitHub setup

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).

Local dev with jekyll serve

jekyll serve does not generate a search index. To preview search locally:

  1. Build the site: bundle exec jekyll build
  2. Generate the index into _site/pagefind: npx -y pagefind@1.5.2 --site _site
  3. 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).

Jenkins

This repo now includes a root-level Jenkinsfile that automatically:

  1. Installs Ruby gems (bundler install)
  2. Builds the site (bundler exec jekyll build)
  3. Generates Pagefind index (npx -y pagefind --site _site)
  4. Archives _site/** as build artifacts

To use it:

  1. Create a Jenkins Pipeline (or Multibranch Pipeline) job for this repository.
  2. Keep script source as Jenkinsfile in SCM.
  3. Ensure the Jenkins agent has Ruby/Bundler and Node.js/npm available.