This blog is generated by Hugo, a static site generator. It works great! One of the things I like best about it is that it supports Org. That is, I can write posts in org-mode instead of markdown. Normally, you would create a new post with something like
❯ hugo new posts/foo.org /home/tim/blog/content/posts/foo.org created
The file created has a Hugo header already in it.
❯ cat content/posts/foo.org --- title: "Foo" date: 2021-09-21T14:01:43-04:00 draft: true ---
The problem is, this isn't valid Org. I really want it to say
#+title: "Foo" #+date: 2021-09-21T14:01:43-04:00 #+draft: true
I couldn't figure out how to get
hugo new to do that for me. Also, I don't really want it to create
content/posts/foo/index.org. That way I can put images and things that go with that post in the
foo directory too. Finally, I don't really need the time and offset, just the date.
I ended up writing blogpost, a little program that does all these things.
❯ blogpost --title=foo ❯ cat content/posts/foo/index.org #+title: foo #+date: 2021-09-21 #+draft: false #+tags:
In fact, the current date is usually what I want
foo to be too, so I made that the default.
❯ blogpost ❯ cat content/posts/20210921/index.org #+title: 20210921 #+date: 2021-09-21 #+draft: false #+tags:
I also gave it a
--tags option for adding tags.
❯ blogpost --help blogpost 0.1.0 Tim Heaney <firstname.lastname@example.org> USAGE: blogpost [FLAGS] [OPTIONS] FLAGS: --debug Debug mode --draft Mark the new post as a draft? -h, --help Print help information -v, --verbose Verbose mode (-v, -vv, -vvv, etc.) -V, --version Print version information OPTIONS: -d, --dir <DIR> Create the new post in this directory [default: ./content/posts] -t, --title <TITLE> Title of new post (default: today's date) --tags <TAGS> Tags are space-separated words [default: " "]