File: Main.hs

package info (click to toggle)
haskell-open-browser 0.4.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 92 kB
  • sloc: haskell: 114; makefile: 2
file content (34 lines) | stat: -rw-r--r-- 1,147 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{-# LANGUAGE LambdaCase #-}

module Main
  ( main
  ) where

import Control.Exception ( Exception (..), SomeException )
import System.Exit ( ExitCode (..) )
import Web.Browser ( openBrowser, openBrowserWithExitCode )

main :: IO ()
main = do
  openBrowser "https://haskell.org/" >>= \case
    True -> putStrLn "The operation succeeded!"
    False -> putStrLn "The operation failed!"
  blankLine
  putStrLn "Help with debugging:"
  putStrLn "Try a good URL:"
  tryOpenGoodUrl >>= reportResult
  blankLine
  putStrLn "Try a bad URL:"
  tryOpenBadUrl >>= reportResult
 where
  tryOpenGoodUrl :: IO (Either SomeException (ExitCode, String, String))
  tryOpenGoodUrl = openBrowserWithExitCode "https://haskell.org/"
  tryOpenBadUrl :: IO (Either SomeException (ExitCode, String, String))
  tryOpenBadUrl = openBrowserWithExitCode "example-bad-url"
  reportResult = \case
    Left e -> putStrLn $ "Exception: " <> displayException e
    Right (ec, out, err) -> do
      putStrLn $ "Exit code: " <> show ec
      putStrLn $ "Standard output: " <> out
      putStrLn $ "Standard error: " <> err
  blankLine = putStrLn ""