Skip to content

Commit ef9d3e3

Browse files
authored
Merge pull request #42 from jecaro/verbose-out
Get the verbose switch out of subcommands
2 parents bee8986 + 80b430c commit ef9d3e3

File tree

3 files changed

+25
-19
lines changed

3 files changed

+25
-19
lines changed

.circleci/config.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@ jobs:
4545
command: git clone --recurse-submodules https://github.com/apauley/hledger-flow-example.git $HOME/hledger-flow-example
4646
- run:
4747
name: hledger-flow import
48-
command: ~/.local/bin/hledger-flow import --show-options --verbose $HOME/hledger-flow-example
48+
command: ~/.local/bin/hledger-flow --verbose import --show-options $HOME/hledger-flow-example
4949
- run:
5050
name: hledger-flow report
51-
command: ~/.local/bin/hledger-flow report --show-options --verbose $HOME/hledger-flow-example
51+
command: ~/.local/bin/hledger-flow --verbose report --show-options $HOME/hledger-flow-example
5252
- run:
5353
name: Undo package.yaml change before cache_save
5454
command: git checkout HEAD package.yaml

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ install:
5656
script:
5757
- stack test --interleaved-output
5858
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then git checkout HEAD package.yaml; fi
59-
- hledger-flow import --show-options --verbose $HOME/hledger-flow-example
60-
- hledger-flow report --show-options --verbose $HOME/hledger-flow-example
59+
- hledger-flow --verbose import --show-options $HOME/hledger-flow-example
60+
- hledger-flow --verbose report --show-options $HOME/hledger-flow-example
6161

6262
deploy:
6363
- provider: releases

app/Main.hs

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,50 +16,56 @@ import Hledger.Flow.CSVImport
1616

1717
data SubcommandParams = SubcommandParams { maybeBaseDir :: Maybe FilePath
1818
, hledgerPathOpt :: Maybe FilePath
19-
, verbose :: Bool
2019
, showOpts :: Bool
2120
, sequential :: Bool
2221
}
2322
deriving (Show)
24-
data Command = Version | Import SubcommandParams | Report SubcommandParams deriving (Show)
23+
data Command = Import SubcommandParams | Report SubcommandParams deriving (Show)
24+
25+
data BaseCommand = Version | Command { verbose :: Bool, command :: Command } deriving (Show)
2526

2627
main :: IO ()
2728
main = do
28-
cmd <- options "An hledger workflow focusing on automated statement import and classification:\nhttps://github.com/apauley/hledger-flow#readme" parser
29+
cmd <- options "An hledger workflow focusing on automated statement import and classification:\nhttps://github.com/apauley/hledger-flow#readme" baseCommandParser
2930
case cmd of
3031
Version -> stdout $ select versionInfo
31-
Import subParams -> toImportOptions subParams >>= importCSVs
32-
Report subParams -> toReportOptions subParams >>= generateReports
32+
Command verbose' (Import subParams) -> toImportOptions verbose' subParams >>= importCSVs
33+
Command verbose' (Report subParams) -> toReportOptions verbose' subParams >>= generateReports
3334

34-
toImportOptions :: SubcommandParams -> IO IT.ImportOptions
35-
toImportOptions params = do
35+
toImportOptions :: Bool -> SubcommandParams -> IO IT.ImportOptions
36+
toImportOptions verbose' params = do
3637
bd <- determineBaseDir $ maybeBaseDir params
3738
hli <- hledgerInfoFromPath $ hledgerPathOpt params
3839
return IT.ImportOptions { IT.baseDir = bd
3940
, IT.hledgerInfo = hli
40-
, IT.verbose = verbose params
41+
, IT.verbose = verbose'
4142
, IT.showOptions = showOpts params
4243
, IT.sequential = sequential params }
4344

44-
toReportOptions :: SubcommandParams -> IO RT.ReportOptions
45-
toReportOptions params = do
45+
toReportOptions :: Bool -> SubcommandParams -> IO RT.ReportOptions
46+
toReportOptions verbose' params = do
4647
bd <- determineBaseDir $ maybeBaseDir params
4748
hli <- hledgerInfoFromPath $ hledgerPathOpt params
4849
return RT.ReportOptions { RT.baseDir = bd
4950
, RT.hledgerInfo = hli
50-
, RT.verbose = verbose params
51+
, RT.verbose = verbose'
5152
, RT.showOptions = showOpts params
5253
, RT.sequential = sequential params }
5354

54-
parser :: Parser Command
55-
parser = fmap Import (subcommand "import" "Converts CSV transactions into categorised journal files" subcommandParser)
56-
<|> fmap Report (subcommand "report" "Generate Reports" subcommandParser)
55+
baseCommandParser :: Parser BaseCommand
56+
baseCommandParser = (Command <$> verboseParser <*> commandParser)
5757
<|> flag' Version (long "version" <> short 'V' <> help "Display version information")
5858

59+
commandParser :: Parser Command
60+
commandParser = fmap Import (subcommand "import" "Converts CSV transactions into categorised journal files" subcommandParser)
61+
<|> fmap Report (subcommand "report" "Generate Reports" subcommandParser)
62+
63+
verboseParser :: Parser Bool
64+
verboseParser = switch (long "verbose" <> short 'v' <> help "Print more verbose output")
65+
5966
subcommandParser :: Parser SubcommandParams
6067
subcommandParser = SubcommandParams
6168
<$> optional (argPath "basedir" "The hledger-flow base directory")
6269
<*> optional (optPath "hledger-path" 'H' "The full path to an hledger executable")
63-
<*> switch (long "verbose" <> short 'v' <> help "Print more verbose output")
6470
<*> switch (long "show-options" <> help "Print the options this program will run with")
6571
<*> switch (long "sequential" <> help "Disable parallel processing")

0 commit comments

Comments
 (0)