Skip to content

Commit fa9177c

Browse files
committed
add subcommands
1 parent 42d3b75 commit fa9177c

File tree

1 file changed

+61
-15
lines changed

1 file changed

+61
-15
lines changed

app/Main.hs

Lines changed: 61 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ module Main where
33
import MyLib (someFunc)
44
import Options.Applicative
55

6-
data Sample = Sample
6+
data BuildAssetArgs = BuildAssetArgs
77
{ prefix :: String,
88
src :: String,
99
dst :: String
1010
}
1111

12-
sample :: Parser Sample
13-
sample =
14-
Sample
12+
buildAssetParser :: Parser BuildAssetArgs
13+
buildAssetParser =
14+
BuildAssetArgs
1515
<$> strOption
1616
( long "prefix"
1717
<> value ""
@@ -26,18 +26,64 @@ sample =
2626
<> help "path to static directory"
2727
)
2828

29-
greet :: Sample -> IO ()
30-
greet (Sample prefix src dst) = do
29+
buildAssetCommand :: ParserInfo BuildAssetArgs
30+
buildAssetCommand =
31+
info
32+
(buildAssetParser <**> helper)
33+
( fullDesc
34+
<> progDesc "Import answers-db into answers static asset"
35+
<> header "Import answers-db into answers static asset"
36+
)
37+
38+
data SplitMatlabMarkdownArgs = SplitMatlabMarkdownArgs FilePath FilePath
39+
40+
splitMatlabMarkdownParser :: Parser SplitMatlabMarkdownArgs
41+
splitMatlabMarkdownParser =
42+
SplitMatlabMarkdownArgs
43+
<$> strOption
44+
( long "src"
45+
<> help "path to the markdown file that is exported from MATLAB"
46+
)
47+
<*> strOption
48+
( long "dst"
49+
<> help "path to a directory"
50+
)
51+
52+
splitMatlabMarkdownCommand :: ParserInfo SplitMatlabMarkdownArgs
53+
splitMatlabMarkdownCommand =
54+
info
55+
(splitMatlabMarkdownParser <**> helper)
56+
( fullDesc
57+
<> progDesc "Build assets from a markdown file exported from MATLAB"
58+
<> header "Build assets from a markdown file exported from MATLAB"
59+
)
60+
61+
data Args = BuildAssets BuildAssetArgs | SplitMatlabMarkdown SplitMatlabMarkdownArgs
62+
63+
-- data Args = Args { commandArgs :: CommandArgs }
64+
65+
argsParser :: Parser Args
66+
argsParser =
67+
hsubparser
68+
( command "build-assets" (BuildAssets <$> buildAssetCommand)
69+
<> command "split-matlab-markdown" (SplitMatlabMarkdown <$> splitMatlabMarkdownCommand)
70+
)
71+
72+
greet :: Args -> IO ()
73+
greet (BuildAssets (BuildAssetArgs prefix src dst)) = do
3174
_ <- someFunc prefix src dst
3275
return ()
76+
greet (SplitMatlabMarkdown (SplitMatlabMarkdownArgs src dst)) = do
77+
return ()
3378

3479
main :: IO ()
35-
main = greet =<< execParser opts
36-
where
37-
opts =
38-
info
39-
(sample <**> helper)
40-
( fullDesc
41-
<> progDesc "import answers-db into answers static asset"
42-
<> header "what is header?"
43-
)
80+
main =
81+
greet
82+
=<< execParser
83+
( info
84+
(argsParser <**> helper)
85+
( fullDesc
86+
<> progDesc "Collection of utility functions for the Answers web app"
87+
<> header "Collection of utility functions for the Answers web app"
88+
)
89+
)

0 commit comments

Comments
 (0)