hugo-to-gemini/cmd/md2gmn/main.go
Timur Demin 9778ada128
Parse metadata in all Hugo formats
This makes gmnhg parse TOML/YAML/JSON/org-mode front matter in Hugo posts.

This also makes the library no longer render metadata in posts, removing
the API to do so. The metadata parsing code itself moves to
internal/gmnhg.

As the library no longer has a preset to include metadata in rendered
document, md2gmn will from now on silently discard front matter if it
encounters any.

Fixes #28. Unblocks #13.
2021-09-17 22:34:03 +05:00

66 lines
1.5 KiB
Go

// This file is part of gmnhg.
// gmnhg is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// gmnhg is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with gmnhg. If not, see <https://www.gnu.org/licenses/>.
// md2gmn converts Markdown text files to text/gemini.
package main
import (
"flag"
"io/ioutil"
"os"
gemini "github.com/tdemin/gmnhg"
"github.com/tdemin/gmnhg/internal/gmnhg"
)
var version = "v0+HEAD"
func main() {
var (
input string
file *os.File
isVersionCmd bool
)
flag.StringVar(&input, "f", "", "input file")
flag.BoolVar(&isVersionCmd, "version", false, "display version")
flag.Parse()
if isVersionCmd {
println("md2gmn", version)
return
}
if input != "" {
var err error
file, err = os.Open(input)
if err != nil {
panic(err)
}
} else {
file = os.Stdin
}
text, err := ioutil.ReadAll(file)
if err != nil {
panic(err)
}
content, _ := gmnhg.ParseMetadata(text)
geminiContent, err := gemini.RenderMarkdown(content, gemini.Defaults)
if err != nil {
panic(err)
}
os.Stdout.Write(geminiContent)
}