Skip to content

Commit 43b2626

Browse files
AiOOHyojun Kang
authored andcommitted
Print error with exit code when error occured
1 parent be1dbe3 commit 43b2626

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

src/Nirum/Cli.hs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import System.Console.CmdArgs.Implicit ( Data
2424
)
2525
import System.Console.CmdArgs.Default (def)
2626
import System.Directory (createDirectoryIfMissing)
27+
import System.Exit (die)
2728
import System.FilePath (takeDirectory, (</>))
2829
import Text.InterpolatedString.Perl6 (qq)
2930
import Text.Megaparsec (Token)
@@ -148,7 +149,7 @@ main' = do
148149
result <- buildPackage target src
149150
case result of
150151
Left (TargetNameError targetName') ->
151-
putStrLn [qq|$targetName': No such target.
152+
die [qq|Couldn't find "$targetName'" target.
152153
Available targets: $targetNamesText|]
153154
Left (PackageError (ParseError modulePath error')) -> do
154155
{- FIXME: find more efficient way to determine filename from
@@ -157,19 +158,19 @@ Available targets: $targetNamesText|]
157158
case M.lookup modulePath filePaths of
158159
Just filePath' -> do
159160
m <- parseErrortoPrettyMessage error' filePath'
160-
putStrLn m
161-
Nothing -> putStrLn [qq|$modulePath not found|]
161+
die m
162+
Nothing -> die [qq|$modulePath not found|]
162163
Left (PackageError (ImportError importErrors)) ->
163-
putStrLn [qq|Import error:
164+
die [qq|Import error:
164165
{importErrorsToPrettyMessage importErrors}
165166
|]
166167
Left (PackageError (ScanError _ error')) ->
167-
putStrLn [qq|Scan error: $error'|]
168+
die [qq|Scan error: $error'|]
168169
Left (PackageError (MetadataError error')) ->
169-
putStrLn [qq|Metadata error: $error'|]
170+
die [qq|Metadata error: $error'|]
170171
Left (CompileError errors) ->
171172
forM_ (M.toList errors) $ \ (filePath, compileError) ->
172-
putStrLn [qq|error: $filePath: $compileError|]
173+
die [qq|error: $filePath: $compileError|]
173174
Right buildResult -> writeFiles outDir buildResult
174175

175176
writeFiles :: FilePath -> BuildResult -> IO ()
@@ -181,4 +182,4 @@ writeFiles outDir files =
181182
B.writeFile outPath code
182183

183184
main :: IO ()
184-
main = catchIOError main' $ putStrLn . ioeGetErrorString
185+
main = catchIOError main' $ die . ioeGetErrorString

0 commit comments

Comments
 (0)