From d0efde542973d69c33c0c13fcc649b36e06ae9a2 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Fri, 22 Apr 2011 18:47:57 +0000 Subject: [PATCH] tools: fix up the releasestats make rule --- Makefile | 56 +++++++++++++++++++++++++++------------ tools/dayssincerelease.hs | 21 +++++++++++++++ 2 files changed, 60 insertions(+), 17 deletions(-) create mode 100644 tools/dayssincerelease.hs diff --git a/Makefile b/Makefile index f75810268..cdd8bd1bc 100644 --- a/Makefile +++ b/Makefile @@ -727,12 +727,26 @@ pushbinary: # show project stats useful for release notes -stats: showlastreleasedate showreleaseauthors showloc showcov showunpushedchanges showunreleasedchanges #simplebench #showerrors +releasestats: \ + showreleasedays \ + showunreleasedchangecount \ + showloc \ + showtestcount \ + showunittestcoverage \ + showreleaseauthors \ + showunreleasedcodechanges \ + showunpushedchanges +# simplebench +# showerrors -# ghci> let (d1,d2) = ("2010/12/06","2011/04/17") in diffDays (parsedate d2) (parsedate d1) -showlastreleasedate: - @echo Last release date: - @darcs changes --from-tag . | tail -2 +showreleasedays: + @echo Days since last release: + @tools/dayssincerelease.hs | head -1 | cut -d' ' -f-1 + @echo + +showunreleasedchangecount: + @echo Commits since last release: + @darcs changes --from-tag . --count @echo showreleaseauthors: @@ -741,32 +755,40 @@ showreleaseauthors: @echo showloc: - @echo Lines of code including tests: + @echo Current lines of code including tests: @sloccount `ls $(SOURCEFILES)` | grep haskell: @echo -showcov: hledgercov - @echo Test coverage: - @tools/coverage report test +showtestcount: + @echo "Unit tests:" + @hledger test 2>&1 | cut -d' ' -f2 + @echo "Functional tests:" + @make --no-print functest | egrep '^ Total' | awk '{print $$2}' + @echo + +showunittestcoverage: + @echo Unit test coverage: + @make --no-print quickcoverage | grep 'expressions' + @echo # showerrors: # @echo Known errors: # @awk '/^** errors/, /^** / && !/^** errors/' NOTES | grep '^\*\*\* ' | tail +1 # @echo -showunpushedchanges: - @echo Local changes: +showunpushedchanges unpushed: + @echo "Changes not yet pushed upstream (to `darcs show repo | grep 'Default Remote' | cut -c 17-`):" @-darcs push simon@joyful.com:/repos/hledger --dry-run | grep '*' | tac @echo -showcodechanges: - @echo Code changes: - @darcs changes --matches "not (name docs: or name site: or name tools:)" | egrep '^ +(\*|tagged)' +showunreleasedcodechanges unreleased: + @echo "hledger code changes since last release:" + @darcs changes --from-tag . --matches "not (name docs: or name doc: or name site: or name tools:)" | grep '*' @echo -showunreleasedchanges: - @echo "Feature/bugfix changes since last release: ("`darcs changes --from-tag . --count`")" - @darcs changes --from-tag . --matches "not (name docs: or name doc: or name site: or name tools:)" | grep '*' +showcodechanges: + @echo "hledger code changes:" + @darcs changes --matches "not (name docs: or name site: or name tools:)" | egrep '^ +(\*|tagged)' @echo ###################################################################### diff --git a/tools/dayssincerelease.hs b/tools/dayssincerelease.hs new file mode 100644 index 000000000..7cceb28ec --- /dev/null +++ b/tools/dayssincerelease.hs @@ -0,0 +1,21 @@ +#!/usr/bin/env runhaskell +{- +Display the current darcs repository's last tag and the number of days since. +Similar to: +$ darcs changes --to-tag . --from-tag .|head -n 1 |cut -d' ' -f-7 |xargs -I {} date -d "{}" +%s |xargs -I {} expr \( $(date +%s) - {} \) / 60 / 60 / 24 +-} +import Data.Time +import System.Locale +import System.Process + +main = do + s <- readProcess "darcs" ["changes","--from-tag",".","--to-tag","."] "" + let datestr = unwords $ take 6 $ words $ head $ lines s + date = readTime defaultTimeLocale "%a %b %e %H:%M:%S %Z %Y" datestr :: Day + today <- getCurrentDay + putStrLn $ show (diffDays today date) ++ " days since the last tag:\n" + putStr s + +getCurrentDay = do + t <- getZonedTime + return $ localDay (zonedTimeToLocalTime t)