From b6ca87e0631eda74aa878ad4d424b1b6052ea246 Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Sun, 14 Mar 2021 02:10:33 +0100 Subject: [PATCH] Implement --version flag --- package.yaml | 1 + src/QBar/Cli.hs | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/package.yaml b/package.yaml index a25ba9a..beffc20 100644 --- a/package.yaml +++ b/package.yaml @@ -32,6 +32,7 @@ dependencies: - dbus - directory - filepath +- gitrev - hostname - lens - mtl diff --git a/src/QBar/Cli.hs b/src/QBar/Cli.hs index af1d19e..c1febf9 100644 --- a/src/QBar/Cli.hs +++ b/src/QBar/Cli.hs @@ -1,4 +1,5 @@ {-# LANGUAGE ApplicativeDo #-} +{-# LANGUAGE TemplateHaskell #-} module QBar.Cli where @@ -15,6 +16,7 @@ import QBar.Time import Control.Monad (join) import Data.Maybe (fromMaybe) import qualified Data.Text.Lazy as T +import Development.GitRev import Options.Applicative -- |Entry point. @@ -31,12 +33,18 @@ parseMain = customExecParser parserPrefs parser parserPrefs :: ParserPrefs parserPrefs = prefs showHelpOnEmpty +versionInformation :: String +versionInformation = "Branch: " <> $gitBranch <> "\n" + <> "Commit: " <> $gitHash <> (if $gitDirty then " (dirty)" else "") <> "\n" + <> "Commit date: " <> $gitCommitDate + mainParser :: Parser (IO ()) mainParser = do verbose <- switch $ long "verbose" <> short 'v' <> help "Print more diagnostic output to stderr (including a copy of every bar update)." indicator <- switch $ long "indicator" <> short 'i' <> help "Show render indicator." socketLocation <- optional $ strOption $ long "socket" <> short 's' <> metavar "SOCKET" <> help "Control socket location. By default determined by WAYLAND_SOCKET location." barCommand <- barCommandParser + infoOption versionInformation $ long "version" <> help "Shows version information about the executable." return (barCommand MainOptions {verbose, indicator, socketLocation}) barCommandParser :: Parser (MainOptions -> IO ()) -- GitLab