#lang racket/base (require racket/match setup/dirs) (define (show-tree t0 [format values]) (let loop ([t t0] [last? #t] [indent '()]) (define (I mid last) (cond [(eq? t t0) ""] [last? mid] [else last])) (for-each display (reverse indent)) (unless (eq? t t0) (printf "|\n")) (for-each display (reverse indent)) (printf "~a~a\n" (I "\\-" "+-") (format (car t))) (for ([s (cdr t)] [n (in-range (- (length t) 2) -1 -1)]) (loop s (zero? n) (cons (I " " "| ") indent))))) (define (zo-size-tree dir) (parameterize ([current-directory dir]) (define subs (filter values (for/list ([p (in-list (sort (map path->string (directory-list)) string