diff --git a/README.md b/README.md index 724e083ca9bfbb4623a85d66259d22cbb4b04c5a..4718bbea41fdfcdc5d30d94097788001055f0c4e 100644 --- a/README.md +++ b/README.md @@ -29,29 +29,33 @@ _Generate cover images from Hugo posts_ - **Example:** `p2c -i content/posts/post.md -o public/post/cover.png` ``` -❯ p2c -h +$ p2c -h Usage: p2c [options] Options: -h, --help Show the help message -i, --input string Path to input Markdown - -m, --metasize int Size of font for meta information (default 40) + -M, --metasize int Size of font for meta information (default 40) -o, --output string Path to output PNG - -p, --posttitlesize int Size of font for post title (default 60) - -s, --sitetitlesize int Size of font for site title (default 50) + -t, --posttitle string Title displayed in the generated image + -P, --posttitlesize int Size of font for post title (default 60) + -S, --sitetitlesize int Size of font for site title (default 50) + -s, --subtitle string Subtitle displayed in the generated image -example: p2c -i content/posts/post.md -o public/post/cover.png +example: p2c -i input.md -o output.png p2c is meant for use with Hugo. It looks at... -- Markdown file's frontmatter fields for +- The Markdown file's frontmatter fields for - title - date -- Site's config.{toml/yaml/yml} fields for +- The site's config.{toml/yaml/yml} fields for - title (site title) -- The file's metadata for the last modified date +- The file's last modification date according to + the git history, falling back to the filesystem + metadata if git history is not available ``` [goreportcard-badge]: https://goreportcard.com/badge/git.sr.ht/~amolith/p2c diff --git a/main.go b/main.go index 86742ed457f7fbfdbd0cf02202f2751ac4e298c6..dbf1caa34b33c04ac64df95500edebd1986eb4fc 100644 --- a/main.go +++ b/main.go @@ -12,6 +12,7 @@ import ( "image/color" "image/png" "os" + "os/exec" "strings" "gioui.org/font/opentype" @@ -328,7 +329,9 @@ It looks at... - date - The site's config.{toml/yaml/yml} fields for - title (site title) -- The file's metadata for the last modified date +- The file's last modification date according to + the git history, falling back to the filesystem + metadata if git history is not available `) } @@ -439,14 +442,27 @@ func getSiteTitle() string { return t.Title } -// Get the date the post was last edited using the file metadata +// Get the date the post was last edited using the git log and falling back to +// the file's last modified date func getEditDate(input string) string { - fileInfo, err := os.Stat(input) + _, err := os.Stat(".git") if err != nil { - fmt.Println("Error: Could not get file info") + fileInfo, err := os.Stat(input) + if err != nil { + fmt.Println("Error: Could not get file info") + fmt.Println(err) + os.Exit(1) + } + + return fileInfo.ModTime().Format("2006-01-02") + } + cmd := exec.Command("git", "log", "-1", "--format=%ad", "--date=short", input) + out, err := cmd.Output() + if err != nil { + fmt.Println("Error: Could not get git log") fmt.Println(err) os.Exit(1) } - return fileInfo.ModTime().Format("2006-01-02") + return strings.TrimSpace(string(out)) }