#lang racket

(require "main.rkt")

(target all
        (displayln "use (make clean) or (make package) or (make commit/push")
        )

(target commit
        (let ((st (git 'status)))
          (displayln st)
          (when (> (length st) 0)
            (git 'add '-A)
            (git 'commit)
            (git 'push))))

(target push
        (git 'push))

(target status
        (displayln "git status:")
        (for-each (λ (e)
                    (displayln
                     (format "~a: ~a (remote ~a)" (caddr e) (cadr e) (car e))))
                  (git 'status))
        )

(target pull
        (git 'pull))

(target clean
        (for-each (λ (f) (displayln f) (rm-f f)) (list-files "." #px"([.]bak|~)$" #:recursive #t))
        (for-each (λ (d) (displayln d) (rm-rf d)) (list-dirs "." #px"(compiled|doc|docs)$" #:recursive #t))
        (for-each (λ (f) (displayln f) (rm-f f)) (list-files "scrbl" #px"[.](css|js|html)$"))
        )

(target package
        (deps clean)
        (zip-package))

(target "docs/racket-makefile.html"
        (deps "scrbl/racket-makefile.scrbl")
        (unless (directory-exists? "docs")
          (make-directory "docs"))
        (raco '(scribble --html +m --dest "docs" scrbl/racket-makefile.scrbl)))

(target doc
        (deps "docs/racket-makefile.html")
        (displayln "Documentation built")
        )

(target showdoc
        (deps doc)
        (send-url/file "docs/racket-makefile.html"))

(target refresh
        (displayln "Refreshing makefile")
        (refresh-makefile)
        (displayln "done.")
        )