tldr 0.6.3 → 0.6.4
raw patch · 3 files changed
+6/−184 lines, 3 files
Files
- CHANGELOG.md +4/−0
- app/Main_flymake.hs +0/−181
- tldr.cabal +2/−3
CHANGELOG.md view
@@ -1,3 +1,7 @@+# 0.6.4++* Fix cabal file+ # 0.6.3 * Drop `-optl-static` for linux builds
− app/Main_flymake.hs
@@ -1,181 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE BangPatterns #-}--module Main- ( main- ) where--import Control.Monad-import Data.List (intercalate)-import Data.Semigroup ((<>))-import qualified Data.Set as Set-import Data.Version (showVersion)-import GHC.IO.Handle.FD (stdout)-import Options.Applicative-import Paths_tldr (version)-import System.Directory-import System.Environment (getArgs, getExecutablePath)-import System.FilePath-import System.Process.Typed-import Tldr--data TldrOpts = TldrOpts- { tldrAction :: TldrCommand- } deriving (Show)--data TldrCommand- = UpdateIndex- | ViewPage ViewOptions- [String]- | About- deriving (Show, Eq, Ord)--data ViewOptions = ViewOptions- { platformOption :: Maybe String- } deriving (Show, Eq, Ord)--programOptions :: Parser TldrOpts-programOptions =- (TldrOpts <$> (updateIndexCommand <|> viewPageCommand <|> aboutFlag))--updateIndexCommand :: Parser TldrCommand-updateIndexCommand =- flag'- UpdateIndex- (long "update" <> short 'u' <> help "Update offline cache of tldr pages")--aboutFlag :: Parser TldrCommand-aboutFlag = flag' About (long "about" <> short 'a' <> help "About this program")--viewOptionsParser :: Parser ViewOptions-viewOptionsParser = ViewOptions <$> platformFlag--viewPageCommand :: Parser TldrCommand-viewPageCommand =- ViewPage <$> viewOptionsParser <*>- some (strArgument (metavar "COMMAND" <> help "name of the command"))--platformFlag :: Parser (Maybe String)-platformFlag =- optional- (strOption- (long "platform" <> short 'p' <> metavar "PLATFORM" <>- help- ("Prioritize specfic platform while searching. Valid values include " <>- platformHelpValue)))- where- platformHelpValue :: String- platformHelpValue = intercalate ", " platformDirs--tldrDirName :: String-tldrDirName = "tldr"--repoHttpsUrl :: String-repoHttpsUrl = "https://github.com/tldr-pages/tldr.git"--checkDirs :: [String]-checkDirs = "common" : platformDirs--platformDirs :: [String]-platformDirs = ["linux", "osx", "windows", "sunos"]--tldrInitialized :: IO Bool-tldrInitialized = do- dataDir <- getXdgDirectory XdgData tldrDirName- let dir2 = dataDir </> "tldr"- pages = dataDir </> "tldr" </> "pages"- exists <- mapM doesDirectoryExist [dataDir, dir2, pages]- return $ all (== True) exists--initializeTldrPages :: IO ()-initializeTldrPages = do- initialized <- tldrInitialized- unless initialized $ do- dataDir <- getXdgDirectory XdgData tldrDirName- createDirectoryIfMissing False dataDir- runProcess_ $ setWorkingDir dataDir $ proc "git" ["clone", repoHttpsUrl]--updateTldrPages :: IO ()-updateTldrPages = do- dataDir <- getXdgDirectory XdgData tldrDirName- let repoDir = dataDir </> "tldr"- repoExists <- doesDirectoryExist repoDir- case repoExists of- True ->- runProcess_ $- setWorkingDir (repoDir) $ proc "git" ["pull", "origin", "master"]- False -> initializeTldrPages--tldrParserInfo :: ParserInfo TldrOpts-tldrParserInfo =- info- (helper <*> versionOption <*> programOptions)- (fullDesc <> progDesc "tldr Client program" <>- header "tldr - Simplified and community-driven man pages")- where- versionOption :: Parser (a -> a)- versionOption =- infoOption- (showVersion version)- (long "version" <> short 'v' <> help "Show version")--pageExists :: FilePath -> IO (Maybe FilePath)-pageExists fname = do- exists <- doesFileExist fname- if exists- then return $ Just fname- else return Nothing--getPagePath :: String -> [String] -> IO (Maybe FilePath)-getPagePath page platformDirs = do- dataDir <- getXdgDirectory XdgData tldrDirName- let pageDir = dataDir </> "tldr" </> "pages"- paths = map (\x -> pageDir </> x </> page <.> "md") platformDirs- foldr1 (<|>) <$> mapM pageExists paths--getCheckDirs :: ViewOptions -> [String]-getCheckDirs voptions =- case platformOption voptions of- Nothing -> checkDirs- Just platform -> nubOrd $ ["common", platform] <> checkDirs---- | Strip out duplicates-nubOrd :: Ord a => [a] -> [a]-nubOrd = loop mempty- where- loop _ [] = []- loop !s (a:as)- | a `Set.member` s = loop s as- | otherwise = a : loop (Set.insert a s) as--handleAboutFlag :: IO ()-handleAboutFlag = do- path <- getExecutablePath- let content =- unlines- [ path <> " v" <> (showVersion version)- , "Copyright (C) 2017 Sibi Prabakaran"- , "Source available at https://github.com/psibi/tldr-hs"- ]- putStr content--handleTldrOpts :: TldrOpts -> IO ()-handleTldrOpts TldrOpts {..} = do- case tldrAction of- UpdateIndex -> updateTldrPages- About -> handleAboutFlag- ViewPage voptions pages -> do- let npage = intercalate "-" pages- fname <- getPagePath npage (getCheckDirs voptions)- case fname of- Just path -> renderPage path stdout- Nothing -> putStrLn ("No tldr entry for " <> (intercalate " " pages))--main :: IO ()-main = do- args <- getArgs- case execParserPure (prefs showHelpOnEmpty) tldrParserInfo args of- failOpts@(Failure _) -> handleParseResult failOpts >> return ()- Success opts -> handleTldrOpts opts- compOpts@(CompletionInvoked _) -> handleParseResult compOpts >> return ()
tldr.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 42792f866f3ecbc33aff1f95a2848ca0cb6f39b98e10530e65707f48331b2cde+-- hash: 6d6a28bd0b56fd00a272f305ae388900bd3a5e235b44afb32bd4e758846bf2f7 name: tldr-version: 0.6.3+version: 0.6.4 synopsis: Haskell tldr client description: Haskell tldr client with support for viewing tldr pages. Has offline cache for accessing pages. Visit https://tldr.sh for more details.@@ -52,7 +52,6 @@ executable tldr main-is: Main.hs other-modules:- Main_flymake Paths_tldr hs-source-dirs: app