packages feed

tldr 0.1.0.0 → 0.2.0

raw patch · 4 files changed

+67/−21 lines, 4 filesdep +semigroupsdep ~shell-conduitPVP ok

version bump matches the API change (PVP)

Dependencies added: semigroups

Dependency ranges changed: shell-conduit

API changes (from Hackage documentation)

Files

+ CHANGELOG.md view
@@ -0,0 +1,5 @@+# 0.2.0++* Compliance with the tldr spec+* Fix `--update` flag bug+* Backported till GHC 7.8.3 and lts-2.22
README.md view
@@ -1,11 +1,33 @@ # tldr -Haskell client for tldr+[![Build Status](https://travis-ci.org/psibi/tldr-hs.svg?branch=master)](https://travis-ci.org/psibi/tldr-hs) -![tldr](https://cloud.githubusercontent.com/assets/737477/24076451/2a5a604c-0c57-11e7-9bf7-13d76e8e7f12.png)+Haskell client for tldr  ## Installation  1. [Install stack](https://docs.haskellstack.org/en/stable/README/#how-to-install) 2. Clone this repo  (TODO: Publish this to Stackage) 3. `stack install`++## Usage++``` shellsession+$ tldr --help+tldr - Simplified and community-driven man pages++Usage: tldr [-v|--version] [--update] COMMAND+  tldr Client program++Available options:+  -h,--help                Show this help text+  -v,--version             Show version+  --update                 Update tldr pages+  COMMAND                  name of the command+```++## Snapshot++![tldr](https://cloud.githubusercontent.com/assets/737477/24076451/2a5a604c-0c57-11e7-9bf7-13d76e8e7f12.png)++
app/Main.hs view
@@ -1,16 +1,18 @@+{-#LANGUAGE CPP#-}+ module Main where  import Tldr-import Options.Applicative+import Options.Applicative hiding ((<>)) import Data.Semigroup ((<>)) import Control.Monad import System.Directory import System.FilePath import Data.Conduit.Shell hiding (info)+import System.Environment (getArgs, withArgs)  data TldrOpts = TldrOpts   { pageName :: String-  , updateFlag :: Bool   } deriving (Show)  tldrDirName :: String@@ -46,25 +48,29 @@ updateTldrPages :: IO () updateTldrPages = do   homeDir <- getHomeDirectory-  let repoDir = homeDir </> tldrDirName <> "tldr"+  let repoDir = homeDir </> tldrDirName </> "tldr"   run $     do cd repoDir        git "pull" ["origin", "master"] +updateOption :: Parser (a -> a)+updateOption = infoOption "update" (long "update" <> help "Update tldr pages")+ tldrParserInfo :: ParserInfo TldrOpts tldrParserInfo =   info-    (helper <*> versionOption <*> programOptions)+    (helper <*> versionOption <*> updateOption <*> programOptions)     (fullDesc <> progDesc "tldr Client program" <>      header "tldr - Simplified and community-driven man pages")   where-    versionOption = infoOption "0.1" (long "version" <> help "Show version")-    programOptions :: Parser TldrOpts-    programOptions =-      TldrOpts <$>-      (strArgument (metavar "COMMAND" <> help "name of the command")) <*>-      (switch (long "update" <> help "Update tldr pages"))+    versionOption :: Parser (a -> a)+    versionOption =+      infoOption "0.1" (long "version" <> short 'v' <> help "Show version") +programOptions :: Parser TldrOpts+programOptions =+  (TldrOpts <$> strArgument (metavar "COMMAND" <> help "name of the command"))+ pageExists :: FilePath -> IO (Maybe FilePath) pageExists fname = do   exists <- doesFileExist fname@@ -77,14 +83,26 @@   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 + main :: IO () main = do   initializeTldrPages-  opts <- execParser tldrParserInfo-  when (updateFlag opts) updateTldrPages-  fname <- getPagePath (pageName opts)-  case fname of-    Nothing -> putStrLn ("No tldr entry for " <> (pageName opts))-    Just fpath -> renderPage fpath+  args <- getArgs+  case execParserPure (prefs noBacktrack) tldrParserInfo args of+    Failure _+      | null args -> withArgs ["--help"] (execParser tldrParserInfo) >> return ()+      | args == ["--update"] -> updateTldrPages+    parseResult -> do+      opts <- handleParseResult parseResult+      let page = pageName opts+      fname <- getPagePath page+      maybe (putStrLn ("No tldr entry for " <> page)) renderPage fname
tldr.cabal view
@@ -1,5 +1,5 @@ name:                tldr-version:             0.1.0.0+version:             0.2.0 synopsis:            Haskell tldr client description:         Haskell tldr client with support for updating and viewing tldr pages. homepage:            https://github.com/psibi/tldr-hs#readme@@ -10,7 +10,7 @@ copyright:           2017 Sibi category:            Web build-type:          Simple-extra-source-files:  README.md+extra-source-files:  README.md, CHANGELOG.md cabal-version:       >=1.10  library@@ -32,7 +32,8 @@                      , optparse-applicative                      , directory                      , filepath-                     , shell-conduit+                     , shell-conduit >= 4.6.0+                     , semigroups   default-language:    Haskell2010  test-suite tldr-test