#! /usr/bin/env runhaskell import Control.Arrow ( (&&&) ) import Data.Map ( Map (..), fromList ) import qualified Data.Map ( lookup ) import Data.Maybe ( fromJust ) import Prelude hiding ( lookup ) import System.Environment ( getEnv ) import System.Process ( system ) import Text.Printf ( printf ) parseToMap :: [String] -> Map String String parseToMap = fromList . map ((takeWhile notSpace) &&& (tail . dropWhile notSpace)) where notSpace = (/= ' ') mkLookup :: (Ord k) => Map k a -> k -> a mkLookup m = \k -> fromJust $ Data.Map.lookup k m main :: IO () main = do homeDir <- getEnv "HOME" ls <- fmap lines $ readFile $ homeDir ++ "/.ncftp/batdev.cfg" let lookup = mkLookup . parseToMap $ ls let cl = printf "ncftp ftp://%s:%s@%s" (lookup "user") (lookup "pass") (lookup "host") system cl return ()