packages feed

hifi-0.1.4.1: app/Main.hs

{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE RecordWildCards #-}
module Main where

import           System.Environment             ( getArgs
                                                , getProgName
                                                )
import           Templating
import           System.Console.CmdArgs.Implicit
import           Data.Maybe                     ( fromMaybe )

data HifiArgs = HifiArgs { filename :: Maybe String
                         , interface :: Maybe Interface
                         , ssid :: Maybe SSID
                         , passphrase :: Maybe Passphrase
                         } deriving (Show, Data, Typeable)

hifiArgs =
  HifiArgs
      { filename   = def
        &= help "What the script and data files should be called."
        &= typ "FILE"
      , interface  = def
        &= help "Which interface should be used in the connect script."
        &= typ "STRING"
      , ssid       = def
        &= help "Which SSID the network you want to connect to has."
        &= typ "STRING"
      , passphrase = def
        &= help "What the passphrase for the network you want to connect to is."
        &= typ "STRING"
      }
    &= summary "Hifi"

main :: IO ()
main = do
  HifiArgs {..} <- cmdArgs hifiArgs
  case sequence [filename, interface, ssid, passphrase] of
    Just [filename, interface, ssid, passphrase] -> do
      (scriptFile, dataFile) <- createFiles filename interface ssid passphrase
      putStrLn $ "Created " ++ scriptFile ++ " and " ++ dataFile

    Nothing -> print
      "pass the '--help' flag to hifi to see which arguments are required"