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 +5/−0
- README.md +24/−2
- app/Main.hs +34/−16
- tldr.cabal +4/−3
+ 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+[](https://travis-ci.org/psibi/tldr-hs) -+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++++
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