packages feed

tldr 0.4.0.1 → 0.4.0.2

raw patch · 5 files changed

+67/−52 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -1,4 +1,10 @@-# 0.4.0.1+# 0.5.0++* Obey XdgData for storing the files.+* Also search pages from sunos directory now.+* Support subcommansds ie. tldr git submodule will now work.++# 0.4.0.2  * Fix double initialization bug. Credits to @Kove-W-O-Salter 
README.md view
@@ -1,7 +1,7 @@ # tldr -[![Linux build](https://travis-ci.org/psibi/tldr-hs.svg?branch=master)](https://travis-ci.org/psibi/tldr-hs)-[![Window build](https://ci.appveyor.com/api/projects/status/wlqa2ndsquk1psqs/branch/master?svg=true)](https://ci.appveyor.com/project/psibi/tldr-hs/branch/master)+[![Build Status](https://dev.azure.com/psibi2000/tldr-hs/_apis/build/status/psibi.tldr-hs?branchName=master)](https://dev.azure.com/psibi2000/tldr-hs/_build/latest?definitionId=5?branchName=master)+ [![Hackage](https://img.shields.io/hackage/v/tldr.svg)](https://hackage.haskell.org/package/tldr) [![Stackage Nightly](http://stackage.org/package/tldr/badge/nightly)](http://stackage.org/nightly/package/tldr) [![Stackage LTS](http://stackage.org/package/tldr/badge/lts)](http://stackage.org/lts/package/tldr)@@ -32,5 +32,3 @@ ## Snapshot  ![tldr](https://cloud.githubusercontent.com/assets/737477/24076451/2a5a604c-0c57-11e7-9bf7-13d76e8e7f12.png)--
app/Main.hs view
@@ -1,60 +1,59 @@-{-#LANGUAGE CPP#-}-{-#LANGUAGE ScopedTypeVariables#-}+{-# LANGUAGE ScopedTypeVariables #-}  module Main where -import Tldr-import Options.Applicative hiding ((<>))-import Data.Semigroup ((<>)) import Control.Monad+import Data.List (intercalate, isPrefixOf)+import Data.Semigroup ((<>))+import Data.Version (showVersion)+import GHC.IO.Handle.FD (stdout)+import Options.Applicative hiding ((<>))+import Paths_tldr (version) import System.Directory+import System.Environment (getArgs, withArgs) import System.FilePath import System.Process.Typed-import System.Environment (getArgs, withArgs)-import GHC.IO.Handle.FD (stdout)-import Paths_tldr (version)-import Data.Version (showVersion)+import Tldr  data TldrOpts = TldrOpts   { pageName :: String   } deriving (Show)  tldrDirName :: String-tldrDirName = ".tldr"+tldrDirName = "tldr"  repoHttpsUrl :: String repoHttpsUrl = "https://github.com/tldr-pages/tldr.git"  checkDirs :: [String]-checkDirs = ["common", "linux", "osx"]+checkDirs = ["common", "linux", "osx", "windows", "sunos"]  tldrInitialized :: IO Bool tldrInitialized = do-  homeDir <- getHomeDirectory-  let dir1 = homeDir </> tldrDirName-      dir2 = homeDir </> tldrDirName </> "tldr"-      pages = homeDir </> tldrDirName </> "tldr" </> "pages"-  exists <- mapM doesDirectoryExist [dir1, dir2, pages]+  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-  initialized <- tldrInitialized   unless initialized $ do-    homeDir <- getHomeDirectory-    let cloneDir = homeDir </> tldrDirName-    runProcess_ $ proc "mkdir" [cloneDir]-    runProcess_ $ setWorkingDir cloneDir $ proc "git" ["clone", repoHttpsUrl]-+    dataDir <- getXdgDirectory XdgData tldrDirName+    createDirectoryIfMissing False dataDir+    runProcess_ $ setWorkingDir dataDir $ proc "git" ["clone", repoHttpsUrl]  updateTldrPages :: IO () updateTldrPages = do-  homeDir <- getHomeDirectory-  let repoDir = homeDir </> tldrDirName </> "tldr"+  dataDir <- getXdgDirectory XdgData tldrDirName+  let repoDir = dataDir </> "tldr"   repoExists <- doesDirectoryExist repoDir-  when repoExists $ do-    runProcess_ $ setWorkingDir repoDir $ proc "git" ["pull", "origin", "master"] +  case repoExists of+    True ->+      runProcess_ $+      setWorkingDir (repoDir) $ proc "git" ["pull", "origin", "master"]+    False -> initializeTldrPages  updateOption :: Parser (a -> a) updateOption = infoOption "update" (long "update" <> help "Update tldr pages")@@ -68,7 +67,9 @@   where     versionOption :: Parser (a -> a)     versionOption =-      infoOption (showVersion version) (long "version" <> short 'v' <> help "Show version")+      infoOption+        (showVersion version)+        (long "version" <> short 'v' <> help "Show version")  programOptions :: Parser TldrOpts programOptions =@@ -83,29 +84,39 @@  getPagePath :: String -> IO (Maybe FilePath) getPagePath page = do-  homeDir <- getHomeDirectory-  let pageDir = homeDir </> tldrDirName </> "tldr" </> "pages"-      x@(f1:f2:f3:[]) = map (\x -> pageDir </> x </> page <.> "md") checkDirs-#if MIN_VERSION_base(4,7,0)-  f1' <- pageExists f1-  f2' <- pageExists f2-  f3' <- pageExists f3-  return $ f1' <|> f2' <|> f3'-#else-  pageExists f1 <|> pageExists f2 <|> pageExists f3-#endif+  dataDir <- getXdgDirectory XdgData tldrDirName+  let pageDir = dataDir </> "tldr" </> "pages"+      paths = map (\x -> pageDir </> x </> page <.> "md") checkDirs+  foldr1 (<|>) <$> mapM pageExists paths +isOption :: String -> Bool+isOption string = string `isPrefixOf` "--" +hasOption :: [String] -> Bool+hasOption xs = any isOption xs+ main :: IO () main = do   args <- getArgs-  case execParserPure (prefs noBacktrack) tldrParserInfo args of+  case execParserPure (prefs showHelpOnEmpty) tldrParserInfo args of     failOpts@(Failure _)       | args == ["--update"] -> updateTldrPages-      | otherwise -> handleParseResult failOpts >> return ()+      | otherwise ->+        if hasOption args+          then handleParseResult failOpts >> return ()+          else do+            let npage = intercalate "-" args+            fname <- getPagePath npage+            case fname of+              Just path -> renderPage path stdout+              Nothing ->+                putStrLn ("No tldr entry for " <> (intercalate " " args))     Success opts -> do-         initializeTldrPages-         let page = pageName opts-         fname <- getPagePath page-         maybe (putStrLn ("No tldr entry for " <> page)) (flip renderPage stdout) fname +      initializeTldrPages+      let page = pageName opts+      fname <- getPagePath page+      maybe+        (putStrLn ("No tldr entry for " <> page))+        (flip renderPage stdout)+        fname     compOpts@(CompletionInvoked _) -> handleParseResult compOpts >> return ()
src/Tldr.hs view
@@ -93,7 +93,7 @@   handleSubsetNode :: Node -> Text-handleSubsetNode (Node _ ntype xs) = handleSubsetNodeType ntype <> (T.concat $ Prelude.map handleSubsetNode xs)+handleSubsetNode (Node _ ntype xs) = handleSubsetNodeType ntype <> T.concat (Prelude.map handleSubsetNode xs)  handleParagraph :: [Node] -> Handle -> IO () handleParagraph xs handle = TIO.hPutStrLn handle $ T.concat $ Prelude.map handleSubsetNode xs@@ -105,7 +105,7 @@ handleNode (Node _ ntype xs) handle = do   changeConsoleSetting ntype   renderNode ntype handle-  mapM_ (\(Node _ ntype' ns) -> renderNode ntype' handle >> mapM_ (flip handleNode $ handle) ns) xs+  mapM_ (\(Node _ ntype' ns) -> renderNode ntype' handle >> mapM_ (`handleNode` handle) ns) xs   setSGR [Reset]  parsePage :: FilePath -> IO Node
tldr.cabal view
@@ -1,5 +1,5 @@ name:                tldr-version:             0.4.0.1+version:             0.4.0.2 synopsis:            Haskell tldr client description:         Haskell tldr client with support for updating and viewing tldr pages. homepage:            https://github.com/psibi/tldr-hs#readme