{-# LANGUAGE OverloadedStrings, DeriveDataTypeable #-} import Data.Data (Data) import Data.Typeable (Typeable) import Npm.Latest (fetchLatestVersion) import System.Console.CmdArgs.Implicit (cmdArgsRun, (&=)) import qualified Data.Text as T import qualified Data.Text.IO as TIO import qualified System.Console.CmdArgs.Implicit as CA data LatestNpmVersion = LatestNpmVersion {name :: String} deriving (Show, Data, Typeable) args :: CA.Mode (CA.CmdArgs LatestNpmVersion) args = CA.cmdArgsMode $ LatestNpmVersion{name = CA.def &= CA.args} &= CA.summary "latest-npm-version v0.1.0" main :: IO () main = do mainArgs <- cmdArgsRun args let moduleName = (name mainArgs) if length moduleName == 0 then TIO.putStrLn "Missing module name. Consult --help." else do version <- fetchLatestVersion moduleName case version of Nothing -> TIO.putStrLn "Error: fetching/parsing JSON failed" Just v -> TIO.putStrLn $ T.unwords [T.pack moduleName, v]