From 7f3d75abcab2f2a2e227f1b8f770d2e9b9d3a77b Mon Sep 17 00:00:00 2001 From: haskal Date: Wed, 7 Jul 2021 01:11:00 -0400 Subject: [PATCH] warn on unknown files in output dir this helps you clean up files if you delete a source file but don't delete the corresponding output target --- compiler.rkt | 2 +- render.rkt | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/compiler.rkt b/compiler.rkt index 96261db..6bf08b6 100644 --- a/compiler.rkt +++ b/compiler.rkt @@ -7,7 +7,7 @@ (require racket/bool racket/file racket/match racket/set syntax/parse/define (for-syntax racket/base racket/syntax)) -(provide define-rule define-rule* +(provide define-rule define-rule* rule-name rule-inputs rule-output generate-operations execute-rule execute-operations generate/execute) ;; A compiler rule diff --git a/render.rkt b/render.rkt index 3cfd159..d477428 100644 --- a/render.rkt +++ b/render.rkt @@ -334,7 +334,17 @@ (ir-doc->page xrefs-repo config) (write-string out))) output-rule)) - (append intermediate-rules output-rules img-rules static-rules (list scss hashtag-page))) + (define all-rules (append intermediate-rules output-rules img-rules static-rules (list scss hashtag-page))) + (define existing-output-files + (parameterize ([current-directory output-dir]) + (for/set ([file (in-directory #f)] #:when (file-exists? file)) + (build-path output-dir file)))) + (define accounted-output-files + (for/set ([rule (in-list all-rules)]) (rule-output rule))) + (define unknown-output-files (set-subtract existing-output-files accounted-output-files)) + (for ([f (in-set unknown-output-files)]) + (printf "WARN: unknown file in output dir: ~a\n" f)) + all-rules) (module+ main (require racket/cmdline)