diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index fa42816ad..17f7495d7 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -28,7 +28,7 @@ jobs: cabal v2-build --dependencies-only - name: Build run: | - cabal v2-install + cabal v2-install -fnightly strip $HOME/.cabal/bin/pandoc - name: Install artifact run: | @@ -58,7 +58,7 @@ jobs: for /f %%a in ('powershell -Command "Get-Date -format yyyy-MM-dd"') do set THEDATE=%%a set ARTIFACTS=%CD%\nightly-windows\pandoc-nightly-windows-%THEDATE% mkdir %ARTIFACTS% - stack build pandoc + stack build --flag pandoc:nightly --flag pandoc:embed_data_files pandoc forfiles /P .\.stack-work\install /M pandoc*.exe /S /C "cmd /C copy @path %%ARTIFACTS%%" copy COPYRIGHT %ARTIFACTS% ren %ARTIFACTS%\COPYRIGHT COPYRIGHT.txt @@ -82,7 +82,7 @@ jobs: run: | export ARTIFACTS=nightly-macos/pandoc-nightly-macos-$(date +%Y-%m-%d) mkdir -p ${ARTIFACTS} - stack build pandoc + stack build --flag pandoc:nightly --flag pandoc:embed_data_files pandoc for f in $(find .stack-work/install -name 'pandoc*' -perm +001 -type f); do cp $f ${ARTIFACTS}/; done mv ${ARTIFACTS}/pandoc ${ARTIFACTS}/pandoc cp COPYRIGHT ${ARTIFACTS}/ diff --git a/pandoc.cabal b/pandoc.cabal index 6b4c0b8ad..d1d04e36a 100644 --- a/pandoc.cabal +++ b/pandoc.cabal @@ -428,6 +428,10 @@ flag trypandoc Description: Build trypandoc cgi executable. Default: False +flag nightly + Description: Add '-nightly-COMPILEDATE' to the output of '--version'. + Default: False + common common-options default-language: Haskell2010 build-depends: base >= 4.12 && < 5 @@ -531,6 +535,9 @@ library zlib >= 0.5 && < 0.7 if !os(windows) build-depends: unix >= 2.4 && < 2.8 + if flag(nightly) + cpp-options: -DNIGHTLY + build-depends: template-haskell if flag(lua53) build-depends: hslua >= 2.1 && < 2.2, hslua-aeson >= 2.1 && < 2.3 diff --git a/src/Text/Pandoc/App/CommandLineOptions.hs b/src/Text/Pandoc/App/CommandLineOptions.hs index ffb7c5eb8..2db1fe53c 100644 --- a/src/Text/Pandoc/App/CommandLineOptions.hs +++ b/src/Text/Pandoc/App/CommandLineOptions.hs @@ -1,4 +1,5 @@ {-# LANGUAGE CPP #-} +{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TupleSections #-} @@ -71,6 +72,21 @@ import qualified Data.Map as M import qualified Data.Text as T import qualified Text.Pandoc.UTF8 as UTF8 +#ifdef NIGHTLY +import qualified Language.Haskell.TH as TH +import Data.Time +#endif + +#ifdef NIGHTLY +versionSuffix :: String +versionSuffix = "-nightly-" ++ + $(TH.stringE =<< + TH.runIO (formatTime defaultTimeLocale "%F" <$> Data.Time.getCurrentTime)) +#else +versionSuffix :: String +versionSuffix = "" +#endif + parseOptions :: [OptDescr (Opt -> IO Opt)] -> Opt -> IO Opt parseOptions options' defaults = do rawArgs <- map UTF8.decodeArg <$> getArgs @@ -954,7 +970,7 @@ options = peek top UTF8.hPutStrLn stdout $ T.pack - $ prg ++ " " ++ T.unpack pandocVersion ++ + $ prg ++ " " ++ T.unpack pandocVersion ++ versionSuffix ++ compileInfo ++ "\nScripting engine: " ++ luaVersion ++ "\nUser data directory: " ++ defaultDatadir ++ ('\n':copyrightMessage)