From fd107363738eda65b381ffb4f1f3d23a796ecbe3 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Thu, 25 Nov 2010 07:10:38 +0000 Subject: [PATCH] refactor: consistent main modules in add-ons --- .../Hledger/{Chart.hs => Chart/Main.hs} | 46 +++++++++++++----- hledger-chart/Main.hs | 38 --------------- hledger-chart/hledger-chart.cabal | 4 +- hledger-vty/Hledger/{Vty.hs => Vty/Main.hs} | 47 ++++++++++++++----- hledger-vty/Main.hs | 36 -------------- hledger-vty/hledger-vty.cabal | 4 +- hledger-web/{ => Hledger/Web}/Main.hs | 2 +- hledger-web/hledger-web.cabal | 3 +- hledger-web/hledger-web.hs | 2 + 9 files changed, 80 insertions(+), 102 deletions(-) rename hledger-chart/Hledger/{Chart.hs => Chart/Main.hs} (77%) delete mode 100644 hledger-chart/Main.hs rename hledger-vty/Hledger/{Vty.hs => Vty/Main.hs} (92%) delete mode 100644 hledger-vty/Main.hs rename hledger-web/{ => Hledger/Web}/Main.hs (99%) create mode 100644 hledger-web/hledger-web.hs diff --git a/hledger-chart/Hledger/Chart.hs b/hledger-chart/Hledger/Chart/Main.hs similarity index 77% rename from hledger-chart/Hledger/Chart.hs rename to hledger-chart/Hledger/Chart/Main.hs index 9941e058f..43ec38fc6 100644 --- a/hledger-chart/Hledger/Chart.hs +++ b/hledger-chart/Hledger/Chart/Main.hs @@ -1,18 +1,12 @@ +{-# LANGUAGE CPP #-} {-| - -Generate balances pie chart - +hledger-web - a hledger add-on providing rudimentary pie chart generation. +Copyright (c) 2007-2010 Simon Michael +Released under GPL version 3 or later. -} -module Hledger.Cli.Chart +module Hledger.Chart.Main where -import Hledger.Data.Utils -import Hledger.Data.Types -import Hledger.Data.Amount -import Hledger.Data.Ledger -import Hledger.Data.Commodity -import Hledger.Cli.Options - import Control.Monad (liftM3) import Graphics.Rendering.Chart import Data.Colour @@ -22,6 +16,36 @@ import Data.Colour.RGBSpace.HSL (hsl) import Data.Colour.SRGB.Linear (rgb) import Data.List import Safe (readDef) +#if __GLASGOW_HASKELL__ <= 610 +import Prelude hiding (putStr, putStrLn) +import System.IO.UTF8 (putStr, putStrLn) +#endif + +import Hledger.Chart +import Hledger.Cli.Commands +import Hledger.Cli.Options +import Hledger.Cli.Tests +import Hledger.Cli.Utils (withJournalDo) +import Hledger.Cli.Version (versionmsg, binaryfilename) +import Hledger.Data + + +main :: IO () +main = do + (opts, cmd, args) <- parseArguments + run cmd opts args + where + run cmd opts args + | Help `elem` opts = putStr help1 + | HelpOptions `elem` opts = putStr help2 + | HelpAll `elem` opts = putStr $ help1 ++ "\n" ++ help2 + | Version `elem` opts = putStrLn versionmsg + | BinaryFilename `elem` opts = putStrLn binaryfilename + | null cmd = maybe (putStr help1) (withJournalDo opts args cmd) defaultcmd + | cmd `isPrefixOf` "chart" = withJournalDo opts args cmd chart + | otherwise = putStr help1 + + defaultcmd = Just chart -- | Generate an image with the pie chart and write it to a file chart :: [Opt] -> [String] -> Journal -> IO () diff --git a/hledger-chart/Main.hs b/hledger-chart/Main.hs deleted file mode 100644 index 2f6d6e90d..000000000 --- a/hledger-chart/Main.hs +++ /dev/null @@ -1,38 +0,0 @@ -{-# LANGUAGE CPP #-} -{-| -hledger-web - a hledger add-on providing rudimentary pie chart generation. -Copyright (c) 2007-2010 Simon Michael -Released under GPL version 3 or later. --} - -module Main where - -#if __GLASGOW_HASKELL__ <= 610 -import Prelude hiding (putStr, putStrLn) -import System.IO.UTF8 (putStr, putStrLn) -#endif - -import Hledger.Chart -import Hledger.Cli.Commands -import Hledger.Cli.Options -import Hledger.Cli.Tests -import Hledger.Cli.Utils (withJournalDo) -import Hledger.Cli.Version (versionmsg, binaryfilename) -import Hledger.Data - -main :: IO () -main = do - (opts, cmd, args) <- parseArguments - run cmd opts args - where - run cmd opts args - | Help `elem` opts = putStr help1 - | HelpOptions `elem` opts = putStr help2 - | HelpAll `elem` opts = putStr $ help1 ++ "\n" ++ help2 - | Version `elem` opts = putStrLn versionmsg - | BinaryFilename `elem` opts = putStrLn binaryfilename - | null cmd = maybe (putStr help1) (withJournalDo opts args cmd) defaultcmd - | cmd `isPrefixOf` "chart" = withJournalDo opts args cmd chart - | otherwise = putStr help1 - - defaultcmd = Just chart diff --git a/hledger-chart/hledger-chart.cabal b/hledger-chart/hledger-chart.cabal index 06ec6e59d..2c76980e9 100644 --- a/hledger-chart/hledger-chart.cabal +++ b/hledger-chart/hledger-chart.cabal @@ -23,10 +23,10 @@ source-repository head location: http://joyful.com/repos/hledger executable hledger-chart - main-is: Main.hs + main-is: hledger-chart.hs ghc-options: -threaded -W other-modules: - Hledger.Chart + Hledger.Chart.Main build-depends: hledger == 0.13 ,hledger-lib == 0.13 diff --git a/hledger-vty/Hledger/Vty.hs b/hledger-vty/Hledger/Vty/Main.hs similarity index 92% rename from hledger-vty/Hledger/Vty.hs rename to hledger-vty/Hledger/Vty/Main.hs index f7d34c225..787c3e13f 100644 --- a/hledger-vty/Hledger/Vty.hs +++ b/hledger-vty/Hledger/Vty/Main.hs @@ -1,19 +1,44 @@ -{-| - -A simple text UI for hledger, based on the vty library. - +{-# LANGUAGE CPP #-} +{-| +hledger-vty - a hledger add-on providing a curses-style interface. +Copyright (c) 2007-2010 Simon Michael +Released under GPL version 3 or later. -} -module Hledger.Vty -where +module Hledger.Vty.Main where + +#if __GLASGOW_HASKELL__ <= 610 +import Prelude hiding (putStr, putStrLn) +import System.IO.UTF8 (putStr, putStrLn) +#endif import Safe (headDef) import Graphics.Vty -import Hledger.Data -import Hledger.Cli.Options -import Hledger.Cli.Balance -import Hledger.Cli.Register -import Hledger.Cli.Print +import Hledger.Cli.Balance +import Hledger.Cli.Options +import Hledger.Cli.Print +import Hledger.Cli.Register +import Hledger.Cli.Utils (withJournalDo) +import Hledger.Cli.Version (versionmsg, binaryfilename) +import Hledger.Data + + +main :: IO () +main = do + (opts, cmd, args) <- parseArguments + run cmd opts args + where + run cmd opts args + | Help `elem` opts = putStr help1 + | HelpOptions `elem` opts = putStr help2 + | HelpAll `elem` opts = putStr $ help1 ++ "\n" ++ help2 + | Version `elem` opts = putStrLn versionmsg + | BinaryFilename `elem` opts = putStrLn binaryfilename + | null cmd = maybe (putStr help1) (withJournalDo opts args cmd) defaultcmd + | cmd `isPrefixOf` "vty" = withJournalDo opts args cmd vty + | otherwise = putStr help1 + + defaultcmd = Just vty helpmsg = "(b)alance, (r)egister, (p)rint, (right) to drill down, (left) to back up, (q)uit" diff --git a/hledger-vty/Main.hs b/hledger-vty/Main.hs deleted file mode 100644 index 69d45cbcb..000000000 --- a/hledger-vty/Main.hs +++ /dev/null @@ -1,36 +0,0 @@ -{-# LANGUAGE CPP #-} -{-| -hledger-vty - a hledger add-on providing a curses-style interface. -Copyright (c) 2007-2010 Simon Michael -Released under GPL version 3 or later. --} - -module Main where - -#if __GLASGOW_HASKELL__ <= 610 -import Prelude hiding (putStr, putStrLn) -import System.IO.UTF8 (putStr, putStrLn) -#endif - -import Hledger.Cli.Options -import Hledger.Cli.Utils (withJournalDo) -import Hledger.Cli.Version (versionmsg, binaryfilename) -import Hledger.Data -import Hledger.Vty - -main :: IO () -main = do - (opts, cmd, args) <- parseArguments - run cmd opts args - where - run cmd opts args - | Help `elem` opts = putStr help1 - | HelpOptions `elem` opts = putStr help2 - | HelpAll `elem` opts = putStr $ help1 ++ "\n" ++ help2 - | Version `elem` opts = putStrLn versionmsg - | BinaryFilename `elem` opts = putStrLn binaryfilename - | null cmd = maybe (putStr help1) (withJournalDo opts args cmd) defaultcmd - | cmd `isPrefixOf` "vty" = withJournalDo opts args cmd vty - | otherwise = putStr help1 - - defaultcmd = Just vty diff --git a/hledger-vty/hledger-vty.cabal b/hledger-vty/hledger-vty.cabal index ccc807f4f..338184c84 100644 --- a/hledger-vty/hledger-vty.cabal +++ b/hledger-vty/hledger-vty.cabal @@ -24,10 +24,10 @@ source-repository head location: http://joyful.com/repos/hledger executable hledger-vty - main-is: Main.hs + main-is: hledger-vty.hs ghc-options: -threaded -W other-modules: - Hledger.Vty + Hledger.Vty.Main build-depends: hledger == 0.13 ,hledger-lib == 0.13 diff --git a/hledger-web/Main.hs b/hledger-web/Hledger/Web/Main.hs similarity index 99% rename from hledger-web/Main.hs rename to hledger-web/Hledger/Web/Main.hs index c3a437ca2..fa19d05f9 100644 --- a/hledger-web/Main.hs +++ b/hledger-web/Hledger/Web/Main.hs @@ -5,7 +5,7 @@ Copyright (c) 2007-2010 Simon Michael Released under GPL version 3 or later. -} -module Main where +module Hledger.Web.Main where #if __GLASGOW_HASKELL__ <= 610 import Prelude hiding (putStr, putStrLn) diff --git a/hledger-web/hledger-web.cabal b/hledger-web/hledger-web.cabal index f78e9d426..8844fb4c6 100644 --- a/hledger-web/hledger-web.cabal +++ b/hledger-web/hledger-web.cabal @@ -36,11 +36,12 @@ Flag production Default: False executable hledger-web - main-is: Main.hs + main-is: hledger-web.hs ghc-options: -threaded -W if flag(production) cpp-options: -DPRODUCTION other-modules: + Hledger.Web.Main Hledger.Web.App Hledger.Web.Files Hledger.Web.Settings diff --git a/hledger-web/hledger-web.hs b/hledger-web/hledger-web.hs new file mode 100644 index 000000000..e41e7546f --- /dev/null +++ b/hledger-web/hledger-web.hs @@ -0,0 +1,2 @@ +#!/usr/bin/env runhaskell +import Hledger.Web.Main (main)