#lang racket/base

(require racket-makefile
         package-zipper
         net/sendurl
         )

(define doc-target "docs/git.html")
(define doc-src "scribblings/git.scrbl")

(makefile git-cli
          
          (target all
                  (displayln "use (make clean) or (make package)")
                  )

          (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))
                  (when (directory-exists? "scribblings")
                        (for-each (λ (f) (displayln f) (rm-f f)) (list-files "scribblings" #px"[.](css|js|html)$")))
                  )

          (target version
                  (displayln 
                   (git 'next-version)))

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

          (target zip
                  (deps package))

          (target doc-target
                  (deps doc-src)
                  (unless (directory-exists? "docs")
                          (make-directory "docs"))
                  (raco '(scribble --html +m --dest "docs" $<)))

          (target doc
                  (deps doc-target)
                  (displayln "Documentation built")
                  )

          (target showdoc
                  (deps doc)
                  (send-url/file doc-target))

          (target refresh
                  (displayln "Refreshing makefile")
                  (refresh-makefile)
                  (displayln "done.")
                  )
          (target setup
                  (raco '(setup git)))
          
          )