Commit: 27cdf3b9e0ea43ca97af01e5b8d915778b706c14 Parent: 3aba66886378420ada775803a060eafc30c6caf2 Author: Vi Grey Date: 2024-06-18 12:40 UTC Summary: Delete HTML files if gmi files are deleted CHANGELOG.txt | 6 ++++++ src/delete.go | 36 ++++++++++++++++++++++++++++++++++++ src/huginn.go | 3 ++- 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 60f4791..2595842 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.0.29] - 2024-06-18 + +### Added +- Delete HTML file and empty parent directories if gmi file is deleted + + ## [0.0.28] - 2024-05-08 ### Fixed diff --git a/src/delete.go b/src/delete.go new file mode 100644 index 0000000..b527f29 --- /dev/null +++ b/src/delete.go @@ -0,0 +1,36 @@ +package main + +import ( + "os" + "path/filepath" +) + +func getDeletedFiles(relPaths []string) (deletedFiles []string) { + for p, _ := range oldDiffHashes { + var notDeleted bool + for _, r := range relPaths { + if r == p { + notDeleted = true + break + } + } + if !notDeleted { + deletedFiles = append(deletedFiles, p) + } + } + return +} + +func deleteHTMLFiles(deletedFiles []string) { + for _, deletedFile := range deletedFiles { + pagePath := extensionlessPath(deletedFile) + p := pagePath + ".html" + for p != "." { + // Remove file or empty directory + if err := os.Remove(filepath.Join(outputdir, p)); err != nil { + break + } + p = filepath.Base(filepath.Dir(p)) + } + } +} diff --git a/src/huginn.go b/src/huginn.go index f3f0cd1..4ff62ed 100644 --- a/src/huginn.go +++ b/src/huginn.go @@ -9,7 +9,7 @@ import ( const ( PROGRAM = "huginn" - VERSION = "0.0.28" + VERSION = "0.0.29" ) func init() { @@ -29,6 +29,7 @@ func init() { func main() { relPaths := getAllGemtextFiles() + deleteHTMLFiles(getDeletedFiles(relPaths)) for _, relPath := range relPaths { diffHashes[relPath] = crc32c(filepath.Join(basedir, relPath)) if diffPath != "" && diffHashes[relPath] == oldDiffHashes[relPath] {