aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/apps/ListPath.hs
diff options
context:
space:
mode:
authorEgor Tensin <Egor.Tensin@gmail.com>2016-12-25 18:24:42 +0300
committerEgor Tensin <Egor.Tensin@gmail.com>2016-12-25 18:24:42 +0300
commit364345c59d190c720d639397e4da87631212636d (patch)
treedb9fc3552650b66186673de3359519885f72b244 /apps/ListPath.hs
parentpaths: add "current"/"all users" options (diff)
downloadwindows-env-364345c59d190c720d639397e4da87631212636d.tar.gz
windows-env-364345c59d190c720d639397e4da87631212636d.zip
rename source files
Diffstat (limited to 'apps/ListPath.hs')
-rw-r--r--apps/ListPath.hs82
1 files changed, 0 insertions, 82 deletions
diff --git a/apps/ListPath.hs b/apps/ListPath.hs
deleted file mode 100644
index 65d374b..0000000
--- a/apps/ListPath.hs
+++ /dev/null
@@ -1,82 +0,0 @@
--- |
--- Copyright : (c) 2015 Egor Tensin <Egor.Tensin@gmail.com>
--- License : MIT
--- Maintainer : Egor.Tensin@gmail.com
--- Stability : experimental
-
-module Main (main) where
-
-import Control.Monad (filterM)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Except (runExceptT)
-import Data.Maybe (fromMaybe)
-import System.Directory (doesDirectoryExist)
-import System.Environment (lookupEnv)
-import System.IO.Error (ioError)
-
-import Options.Applicative
-
-import qualified Windows.Environment as Env
-
-data WhichPaths = All | ExistingOnly | MissingOnly
- deriving (Eq, Show)
-
-shouldListPath :: WhichPaths -> Env.VarValue -> IO Bool
-shouldListPath All = return . const True
-shouldListPath ExistingOnly = doesDirectoryExist
-shouldListPath MissingOnly = fmap not . doesDirectoryExist
-
-data Source = Environment | Registry Env.Profile
- deriving (Eq, Show)
-
-data Options = Options
- { optName :: Env.VarName
- , optWhichPaths :: WhichPaths
- , optSource :: Source
- } deriving (Eq, Show)
-
-optionParser :: Parser Options
-optionParser = Options
- <$> optNameDesc
- <*> optWhichPathsDesc
- <*> optSourceDesc
- where
- optNameDesc = strOption
- $ long "name" <> short 'n'
- <> metavar "NAME" <> value "PATH"
- <> help "Variable name ('PATH' by default)"
- optWhichPathsDesc = pure All
- <|> flag' ExistingOnly (long "existing" <> short 'e'
- <> help "List existing paths only")
- <|> flag' MissingOnly (long "missing" <> short 'm'
- <> help "List missing paths only")
- optSourceDesc = pure Environment
- <|> flag' (Registry Env.CurrentUser) (long "user" <> short 'u'
- <> help "List current user's paths only")
- <|> flag' (Registry Env.AllUsers) (long "global" <> short 'g'
- <> help "List global (all users') paths only")
-
-main :: IO ()
-main = execParser parser >>= listPath
- where
- parser = info (helper <*> optionParser) $
- fullDesc <> progDesc "List directories in your PATH"
-
-listPath :: Options -> IO ()
-listPath options = runExceptT doListPath >>= either ioError return
- where
- varName = optName options
- whichPaths = optWhichPaths options
- source = optSource options
-
- query = queryFrom source
-
- queryFrom Environment = lift $ fromMaybe "" <$> lookupEnv varName
- queryFrom (Registry profile) = Env.query profile varName
-
- doListPath = do
- paths <- query
- lift $ printPaths $ Env.pathSplit paths
-
- printPaths paths =
- filterM (shouldListPath whichPaths) paths >>= mapM_ putStrLn