From 1d980ae94714e2b23dc62ab117172410e2d2ecfc Mon Sep 17 00:00:00 2001 From: Miguel de la Cruz Date: Sun, 14 Jul 2024 12:02:48 +0200 Subject: [PATCH] Adds readme, license and contributing parsing --- README.md | 2 +- gitssg.go | 49 ++++++++++++++++++++++++++++++++++++------------- 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 4ce729e..8f26c32 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Project heavily inspired by the amazing - [ ] Add a base url to avoid relative links if provided. - [X] Generate the index html file for the `index` subcommand. - [X] Generate the log html file for a repository. -- [ ] Detect and link README, LICENSE and CONTRIBUTING files. +- [X] Detect and link README, LICENSE and CONTRIBUTING files. - [X] Generate the files html file and file structure. - [ ] Generate the refs html file. - [X] Add a proper CLI parsing and subcommands. diff --git a/gitssg.go b/gitssg.go index f2e03c4..f70b546 100644 --- a/gitssg.go +++ b/gitssg.go @@ -27,12 +27,12 @@ type RepoDir struct { // ToDo: replace has* with the filename, as it can be bare or .md type RepoInfo struct { - Name string - Description string - Url string - HasReadme bool - HasLicense bool - HasContributing bool + Name string + Description string + Url string + Readme string + License string + Contributing string } type CommitFile struct { @@ -69,6 +69,9 @@ type CommitInfo struct { var embedTmpl embed.FS var timeShortFormatStr = "2006-01-02 15:04" var timeLongFormatStr = time.RFC1123 +var readmeNames = []string{"README", "README.md", "README.txt"} +var licenseNames = []string{"LICENSE", "LICENSE.txt"} +var contributingNames = []string{"CONTRIBUTING", "CONTRIBUTING.txt"} var funcMap = template.FuncMap{ "inc": func(i int) int { return i + 1 @@ -78,16 +81,16 @@ var funcMap = template.FuncMap{ menu += " | Files" menu += " | Refs" - if repoInfo.HasReadme { - menu += "| README" + if repoInfo.Readme != "" { + menu += " | README" } - if repoInfo.HasLicense { - menu += "| LICENSE" + if repoInfo.License != "" { + menu += " | LICENSE" } - if repoInfo.HasContributing { - menu += "| CONTRIBUTING" + if repoInfo.Contributing != "" { + menu += " | CONTRIBUTING" } return template.HTML(menu) @@ -271,7 +274,27 @@ func generateRepo(path string, logLimit int) error { return fmt.Errorf("cannot get commit for hash %s: %w", head.Hash(), err) } - // ToDo: populate hasReadme, hasLicense and hasContributing + // populate Readme, License and Contributing + for _, name := range readmeNames { + if _, err := c.File(name); err == nil { + repoInfo.Readme = name + break + } + } + + for _, name := range licenseNames { + if _, err := c.File(name); err == nil { + repoInfo.License = name + break + } + } + + for _, name := range contributingNames { + if _, err := c.File(name); err == nil { + repoInfo.Contributing = name + break + } + } tree, err := c.Tree() if err != nil {