Apply a series of transformation to a QWERTY keyboard
TL;DR: - Accept input from the CLI - Add a project README.md
This commit is contained in:
parent
244503bba9
commit
d45685e245
4 changed files with 51 additions and 32 deletions
|
|
@ -5,41 +5,29 @@ module Main where
|
|||
import Options.Applicative
|
||||
import Data.Semigroup ((<>))
|
||||
|
||||
import qualified System.Environment as Env
|
||||
import qualified Transforms
|
||||
import qualified Keyboard
|
||||
import qualified App
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
data CommandArgs = CommandArgs
|
||||
{ hello :: String
|
||||
, quiet :: Bool
|
||||
, enthusiasm :: Int
|
||||
{ transforms :: String
|
||||
} deriving (Eq, Show)
|
||||
|
||||
parseArgs :: Parser CommandArgs
|
||||
parseArgs =
|
||||
CommandArgs <$> strOption
|
||||
( long "hello"
|
||||
<> metavar "TARGET"
|
||||
<> help "Target for the greeting" )
|
||||
<*> switch
|
||||
( long "quiet"
|
||||
<> short 'q'
|
||||
<> help "Whether to be quiet" )
|
||||
<*> option auto
|
||||
( long "enthusiasm"
|
||||
<> help "How enthusiastic to greet"
|
||||
<> showDefault
|
||||
<> value 1
|
||||
<> metavar "INT" )
|
||||
( long "transforms"
|
||||
<> short 't'
|
||||
<> help "String of transforms where (e.g. \"HHVS12VHVHS3\")" )
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
args <- execParser opts
|
||||
greet args
|
||||
CommandArgs{..} <- execParser opts
|
||||
case Transforms.fromString transforms of
|
||||
Nothing -> putStrLn "You must provide valid input (e.g. \"HHVS12VHVHS3\")"
|
||||
Just xs -> print $ foldl App.transform Keyboard.qwerty xs
|
||||
where
|
||||
opts = info (parseArgs <**> helper)
|
||||
( fullDesc
|
||||
<> progDesc "Print a greeting for TARGET"
|
||||
<> header "header - a test for optparse-applicative" )
|
||||
|
||||
greet :: CommandArgs -> IO ()
|
||||
greet CommandArgs{..} = putStrLn $ "Hello, " ++ hello ++ replicate enthusiasm '!'
|
||||
<> progDesc "Transform a QWERTY keyboard using a string of commands")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue