cabalg-0.2.9: src/Cabalg/Args.hs
module Cabalg.Args where
import Control.Arrow (second)
data Action
= Help
| Version
| Install [String] (Maybe String)
deriving (Eq, Show)
-- | Deserialize cabalg action
--
-- >>> fromString ["--version"]
-- Version
--
-- >>> fromString ["--help"]
-- Help
--
-- >>> fromString ["--usage"]
-- Help
--
-- >>> fromString ["-h"]
-- Help
--
-- >>> fromString ["https://url"]
-- Install ["https://url"] Nothing
--
-- >>> fromString ["https://url", "--", "--flags"]
-- Install ["https://url"] (Just "--flags")
fromString :: [String] -> Action
fromString [x] | x `elem` ["--help", "--usage", "-h"] = Help
fromString ["--version"] = Version
fromString x = uncurry Install . second flags . span (/= "--") $ x
where
flags [] = Nothing
flags ["--"] = Nothing
flags (_:xs) = Just $ unwords xs
printHelp :: IO ()
printHelp = putStrLn $ unlines
[ "cabalg is an alias for installing cabal package from git source repository."
, ""
, "Usage:"
, " $ cabalg [--version | [repository url...] [-- [cabal-install args...]]]"
, ""
, "Example:"
, " $ cabalg https://github.com/biegunka/biegunka@f524f97"
]