Find a file
mntn c2f2386a3d
Add support for branch and leaf bundles
This patch adds support for Hugo's branch and leaf bundles: https://gohugo.io/content-management/page-bundles/

Content directories can now have nested subdirectories, and content from each level will be converted to Gemini. If a subdirectory has a file named index.md (or any index.* file per the footnote on the Hugo page) then it becomes a leaf bundle. For leaf bundles, only the generated index.gmi file will be passed up to parent directories as a page. The rest will be treated as "resources" that are not normally visible to pages in parent folders.

Each parent _index.md receives a list of pages from all nested subdirectories (except for the aforementioned leaf resource pages). This allows for content "rollup" pages. For instance, /series could show all pages under /series/first-season and /series/second-season, while allowing each subfolder to have its own more limited index. This also allows for "clean" URLs, as leaf bundles can be used to make pages that are basically just an index.md page under a named folder. You can then use the trimSuffix function (from sprig) in your gotmpl templates to clean up any links, by stripping "/index.md".

This patch also adds the copying of non-Markdown resource files from content directories, so that bundled resources can be pulled in. Theoretically if someone puts carefully named .gmi files in their content folder then this could cause a name collision, but you'd almost have to try to make that happen, so I didn't put in any checks for it. If this happens then any generated files with the same name are simply overwritten, so there's no serious harm done.

Hugo's leaf bundles support a special front matter attribute, "headless", which if set to true will cause the index.md file to be "invisible" and it will not be passed up to the parent. This is not currently implemented.
2021-08-17 22:59:11 +05:00
.github/workflows Migrate to GitHub 2021-08-01 04:11:04 +05:00
cmd Add support for branch and leaf bundles 2021-08-17 22:59:11 +05:00
internal/gemini Keep line breaks in blockquotes 2021-08-13 09:50:21 +05:00
.gitignore Ignore test files from Git 2020-11-08 17:38:15 +05:00
.golangci.yml Add golangci-lint config 2021-08-13 09:08:57 +05:00
.goreleaser.yml Migrate to GitHub 2021-08-01 04:11:04 +05:00
COPYING Add README and license code under GPLv3 2020-11-08 18:27:38 +05:00
Dockerfile Update to Go v1.16 2021-08-01 04:15:32 +05:00
go.mod Integrate sprig v3 for improved templating (#9) 2021-08-16 20:29:13 +05:00
go.sum Integrate sprig v3 for improved templating (#9) 2021-08-16 20:29:13 +05:00
README.md Migrate to GitHub 2021-08-01 04:11:04 +05:00
render.go Migrate to GitHub 2021-08-01 04:11:04 +05:00

Hugo-to-Gemini converter

PkgGoDev

This repo holds a converter of Hugo Markdown posts to text/gemini (also named Gemtext in this README). The converter is supposed to make people using Hugo's entrance to Project Gemini, the alternate web, somewhat simpler.

The renderer is somewhat hasty, and is NOT supposed to be able to convert the entirety of possible Markdown to Gemtext (as it's not possible to do so, considering Gemtext is a lot simpler than Markdown), but instead a selected subset of it, enough for conveying your mind in Markdown.

The renderer uses the gomarkdown library for parsing Markdown. gomarkdown has a few quirks at this time, the most notable one being unable to parse links/images inside other links.

gmnhg

This program converts Hugo Markdown content files from content/ in accordance with templates found in gmnhg/ to the output dir. It also copies static files from static/ to the output dir.

For more details about the rendering process, see the doc attached to the program.

Usage of gmnhg:
  -output string
        output directory (will be created if missing) (default "output/")
  -working string
        working directory (defaults to current directory)

md2gmn

This program reads Markdown input from either text file (if -f filename is given), or stdin. The resulting Gemtext goes to stdout.

Usage of md2gmn:
  -f string
        input file

md2gmn is mainly made to facilitate testing the Gemtext renderer but can be used as a standalone program as well.

License

This program is redistributed under the terms and conditions of the GNU General Public License, more specifically version 3 of the License. For details, see COPYING.