mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-01-11 19:58:28 +01:00
Use yesod-gitrev and githash
This commit is contained in:
parent
96e9a53a17
commit
760b356c0c
@ -42,7 +42,7 @@
|
|||||||
/install InstallR GET
|
/install InstallR GET
|
||||||
/older-releases OlderReleasesR GET
|
/older-releases OlderReleasesR GET
|
||||||
|
|
||||||
/build-version BuildVersionR GET
|
/build-version BuildVersionR GitRev appGitRev
|
||||||
|
|
||||||
/download DownloadR GET
|
/download DownloadR GET
|
||||||
/download/snapshots.json DownloadSnapshotsJsonR GET
|
/download/snapshots.json DownloadSnapshotsJsonR GET
|
||||||
|
|||||||
@ -70,6 +70,7 @@ dependencies:
|
|||||||
- blaze-html
|
- blaze-html
|
||||||
- haddock-library
|
- haddock-library
|
||||||
- yesod-gitrepo
|
- yesod-gitrepo
|
||||||
|
- yesod-gitrev
|
||||||
- hoogle
|
- hoogle
|
||||||
- deepseq
|
- deepseq
|
||||||
- auto-update
|
- auto-update
|
||||||
|
|||||||
@ -37,6 +37,7 @@ import Stackage.Database (openStackageDatabase, PostgresConf (..))
|
|||||||
import Stackage.Database.Cron (newHoogleLocker, singleRun)
|
import Stackage.Database.Cron (newHoogleLocker, singleRun)
|
||||||
import Control.AutoUpdate
|
import Control.AutoUpdate
|
||||||
import Control.Concurrent (threadDelay)
|
import Control.Concurrent (threadDelay)
|
||||||
|
import Yesod.GitRev (tGitRev)
|
||||||
|
|
||||||
-- Import all relevant handler modules here.
|
-- Import all relevant handler modules here.
|
||||||
-- Don't forget to add new modules to your cabal file!
|
-- Don't forget to add new modules to your cabal file!
|
||||||
@ -51,7 +52,6 @@ import Handler.Package
|
|||||||
import Handler.PackageDeps
|
import Handler.PackageDeps
|
||||||
import Handler.PackageList
|
import Handler.PackageList
|
||||||
import Handler.Hoogle
|
import Handler.Hoogle
|
||||||
import Handler.BuildVersion
|
|
||||||
import Handler.Sitemap
|
import Handler.Sitemap
|
||||||
import Handler.BuildPlan
|
import Handler.BuildPlan
|
||||||
import Handler.Download
|
import Handler.Download
|
||||||
@ -144,6 +144,7 @@ makeFoundation appSettings = do
|
|||||||
appMirrorStatus <- mkUpdateMirrorStatus
|
appMirrorStatus <- mkUpdateMirrorStatus
|
||||||
hoogleLocker <- newHoogleLocker True appHttpManager
|
hoogleLocker <- newHoogleLocker True appHttpManager
|
||||||
let appGetHoogleDB = singleRun hoogleLocker
|
let appGetHoogleDB = singleRun hoogleLocker
|
||||||
|
let appGitRev = $$tGitRev
|
||||||
|
|
||||||
return App {..}
|
return App {..}
|
||||||
|
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import Yesod.AtomFeed
|
|||||||
import Yesod.GitRepo
|
import Yesod.GitRepo
|
||||||
import Stackage.Database
|
import Stackage.Database
|
||||||
import qualified Yesod.Core.Unsafe as Unsafe
|
import qualified Yesod.Core.Unsafe as Unsafe
|
||||||
|
import Yesod.GitRev (GitRev)
|
||||||
|
|
||||||
-- | The site argument for your application. This can be a good place to
|
-- | The site argument for your application. This can be a good place to
|
||||||
-- keep settings and values requiring initialization before your application
|
-- keep settings and values requiring initialization before your application
|
||||||
@ -31,6 +32,7 @@ data App = App
|
|||||||
-- https://github.com/fpco/stackage-server/issues/172
|
-- https://github.com/fpco/stackage-server/issues/172
|
||||||
, appMirrorStatus :: IO (Status, WidgetFor App ())
|
, appMirrorStatus :: IO (Status, WidgetFor App ())
|
||||||
, appGetHoogleDB :: SnapName -> IO (Maybe FilePath)
|
, appGetHoogleDB :: SnapName -> IO (Maybe FilePath)
|
||||||
|
, appGitRev :: GitRev
|
||||||
}
|
}
|
||||||
|
|
||||||
instance HasHttpManager App where
|
instance HasHttpManager App where
|
||||||
|
|||||||
@ -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")
|
|
||||||
]
|
|
||||||
)
|
|
||||||
@ -1,4 +1,5 @@
|
|||||||
resolver: nightly-2018-06-20
|
resolver: nightly-2018-06-20
|
||||||
extra-deps:
|
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/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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user