sasm
====

sasm is a site assembler (not generator) written in go.

If you're here I commend your sleuthing. sasm is not ready for release, but
you can definitely try. It will panic due to some hardcoded paths, and the
rss functionality is not ready.'

sasm operates on html and very simple configuration files exclusively. It is 
not opinionated on your html generation toolchain, giving full freedom and 
composability.

More reasons on why I chose to make sasm exist can be found here[1]. 

Using sasm Is Easy!
-------------------

  # pull the latest release
  curl https://sasm.inkd.fyi/releases/sasm-v0.0.1.tgz -o sasm.tgz
  tar -xzf sasm-v0.0.1.tgz && cd sasm-v0.0.1/

  # or clone the repository for the latest development changes
  git clone https://git.sr.ht/~binkd/sasm && cd sasm/

  # build the site
  go run sasm.go
  
  # serve the site from out/
  go run sasm.go httpd

Now start writing. the pages found in the nav bar are found and configured in 
pages/, and the blog posts are found in posts/. Also, there are some globals 
in the top of sasm.go that you'll probably want to change. In addition, sasm
depends on having a `header.tmpl.html` and `footer.tmpl.html` available in
the same directory as the `sasm.go` source file. You'll figure it out...

You will notice files like posts/001-some-post.cfg. This is a very simple 
configuration file. When within the posts/ directory, the first line of a .cfg 
file refers to the title of the corresponding post, and the second line is the 
posts creation date. Example:

  some post
  2026-10-21

Similarly, a .cfg file within the pages/ directory encodes the title of a 
corresponding page, but not the date. Thus it is just a single line, like so:

  about

Neglecting to include a .cfg file for a corresponding html file just means
that the page won't be present in the nav bar.

Enjoy your new site, and please make sasm your own! If you have a patch you'd
like to share, send it to b@inkd.fyi.

[1]: https://sasm.inkd.fyi/about.html
