From 760b356c0c00bfd3f4c8a6eaeaba21572c26fc6e Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Mon, 25 Jun 2018 12:35:42 +0300 Subject: [PATCH] Use yesod-gitrev and githash --- config/routes | 2 +- package.yaml | 1 + src/Application.hs | 3 ++- src/Foundation.hs | 2 ++ src/Handler/BuildVersion.hs | 29 ----------------------------- stack.yaml | 3 ++- 6 files changed, 8 insertions(+), 32 deletions(-) delete mode 100644 src/Handler/BuildVersion.hs diff --git a/config/routes b/config/routes index 3a3cb45..606540a 100644 --- a/config/routes +++ b/config/routes @@ -42,7 +42,7 @@ /install InstallR GET /older-releases OlderReleasesR GET -/build-version BuildVersionR GET +/build-version BuildVersionR GitRev appGitRev /download DownloadR GET /download/snapshots.json DownloadSnapshotsJsonR GET diff --git a/package.yaml b/package.yaml index 799892e..115819b 100644 --- a/package.yaml +++ b/package.yaml @@ -70,6 +70,7 @@ dependencies: - blaze-html - haddock-library - yesod-gitrepo +- yesod-gitrev - hoogle - deepseq - auto-update diff --git a/src/Application.hs b/src/Application.hs index 55f5695..041f850 100644 --- a/src/Application.hs +++ b/src/Application.hs @@ -37,6 +37,7 @@ import Stackage.Database (openStackageDatabase, PostgresConf (..)) import Stackage.Database.Cron (newHoogleLocker, singleRun) import Control.AutoUpdate import Control.Concurrent (threadDelay) +import Yesod.GitRev (tGitRev) -- Import all relevant handler modules here. -- Don't forget to add new modules to your cabal file! @@ -51,7 +52,6 @@ import Handler.Package import Handler.PackageDeps import Handler.PackageList import Handler.Hoogle -import Handler.BuildVersion import Handler.Sitemap import Handler.BuildPlan import Handler.Download @@ -144,6 +144,7 @@ makeFoundation appSettings = do appMirrorStatus <- mkUpdateMirrorStatus hoogleLocker <- newHoogleLocker True appHttpManager let appGetHoogleDB = singleRun hoogleLocker + let appGitRev = $$tGitRev return App {..} diff --git a/src/Foundation.hs b/src/Foundation.hs index 2638ee0..775ffae 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -12,6 +12,7 @@ import Yesod.AtomFeed import Yesod.GitRepo import Stackage.Database import qualified Yesod.Core.Unsafe as Unsafe +import Yesod.GitRev (GitRev) -- | The site argument for your application. This can be a good place to -- keep settings and values requiring initialization before your application @@ -31,6 +32,7 @@ data App = App -- https://github.com/fpco/stackage-server/issues/172 , appMirrorStatus :: IO (Status, WidgetFor App ()) , appGetHoogleDB :: SnapName -> IO (Maybe FilePath) + , appGitRev :: GitRev } instance HasHttpManager App where diff --git a/src/Handler/BuildVersion.hs b/src/Handler/BuildVersion.hs deleted file mode 100644 index 438ca10..0000000 --- a/src/Handler/BuildVersion.hs +++ /dev/null @@ -1,29 +0,0 @@ -module Handler.BuildVersion where - -import Import hiding (lift) -import Language.Haskell.TH.Syntax -import System.Process (rawSystem) -import System.Exit - -getBuildVersionR :: Handler Text -getBuildVersionR = return $ pack $(do - let headFile = ".git/HEAD" - qAddDependentFile headFile - ehead <- qRunIO $ tryIO $ readFile $ headFile - case decodeUtf8 <$> ehead of - Left e -> lift $ ".git/HEAD not read: " ++ show e - Right raw -> - case takeWhile (/= '\n') <$> stripPrefix "ref: " raw of - Nothing -> lift $ ".git/HEAD not in expected format: " ++ show raw - Just fp' -> do - let fp = ".git" unpack (fp' :: Text) - qAddDependentFile fp - bs <- qRunIO $ readFile fp - isDirty <- qRunIO - $ (/= ExitSuccess) - <$> rawSystem "git" ["diff-files", "--quiet"] - lift $ unpack $ unlines - [ "Most recent commit: " ++ asText (decodeUtf8 bs) - , "Working tree is " ++ (if isDirty then "dirty" else "clean") - ] - ) diff --git a/stack.yaml b/stack.yaml index cb65c0f..945deca 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,4 +1,5 @@ resolver: nightly-2018-06-20 extra-deps: -- archive: https://github.com/snoyberg/gitrev/archive/6a1a639f493ac08959eb5ddf540ca1937baaaaf9.tar.gz - archive: https://github.com/bitemyapp/esqueleto/archive/b81e0d951e510ebffca03c5a58658ad884cc6fbd.tar.gz +- archive: https://github.com/snoyberg/githash/archive/a80ff63bb32d2a3920bb870b4395ee231df0bd6e.tar.gz +- archive: https://github.com/snoyberg/yesod-gitrev/archive/98383b2d5ddad23b1503468d83b2ced76e6c6fe8.tar.gz