packages feed

latest-npm-version-0.2.1: Main.hs

{-# 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]