From b643c34d6c0d7f446032b39243b49979053e536e Mon Sep 17 00:00:00 2001 From: Keagan McClelland Date: Thu, 25 Feb 2021 18:34:54 -0700 Subject: [PATCH] adds release notes feature --- src/Handler/Types/Status.hs | 14 +++++++++----- src/Handler/Version.hs | 9 ++++++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/Handler/Types/Status.hs b/src/Handler/Types/Status.hs index 56af484..cada3de 100644 --- a/src/Handler/Types/Status.hs +++ b/src/Handler/Types/Status.hs @@ -13,14 +13,18 @@ import Orphans.Emver ( ) data AppVersionRes = AppVersionRes { appVersionVersion :: Version , appVersionMinCompanion :: Maybe Version + , appVersionReleaseNotes :: Maybe Text } deriving (Eq, Show) instance ToJSON AppVersionRes where - toJSON AppVersionRes { appVersionVersion, appVersionMinCompanion } = - object $ ["version" .= appVersionVersion] <> case appVersionMinCompanion of - Nothing -> [] - Just x -> ["minCompanion" .= x] - + toJSON AppVersionRes { appVersionVersion, appVersionMinCompanion, appVersionReleaseNotes } = + let rn = case appVersionReleaseNotes of + Nothing -> [] + Just x -> ["release-notes" .= x] + mc = case appVersionMinCompanion of + Nothing -> [] + Just x -> ["minCompanion" .= x] + in object $ ["version" .= appVersionVersion] <> mc <> rn instance ToContent AppVersionRes where toContent = toContent . toJSON instance ToTypedContent AppVersionRes where diff --git a/src/Handler/Version.hs b/src/Handler/Version.hs index a746450..4886c19 100644 --- a/src/Handler/Version.hs +++ b/src/Handler/Version.hs @@ -18,11 +18,12 @@ import Lib.Types.Emver import Settings import System.FilePath ( () ) import Util.Shared +import System.Directory ( doesFileExist ) getVersionR :: Handler AppVersionRes getVersionR = do rv <- AppVersionRes . registryVersion . appSettings <$> getYesod - pure . rv $ Nothing + pure $ rv Nothing Nothing getVersionAppR :: Text -> Handler (Maybe AppVersionRes) getVersionAppR appId = do @@ -34,10 +35,12 @@ getVersionSysR :: Text -> Handler (Maybe AppVersionRes) getVersionSysR sysAppId = runMaybeT $ do sysDir <- ( "sys") . resourcesDir . appSettings <$> getYesod avr <- MaybeT $ getVersionWSpec sysDir sysExt - pure $ avr { appVersionMinCompanion = Just $ Version (1, 1, 0, 0) } + let notesPath = sysDir "agent" show (appVersionVersion avr) "release-notes.md" + notes <- liftIO $ ifM (doesFileExist notesPath) (Just <$> readFile notesPath) (pure Nothing) + pure $ avr { appVersionMinCompanion = Just $ Version (1, 1, 0, 0), appVersionReleaseNotes = notes } where sysExt = Extension (toS sysAppId) :: Extension "" getVersionWSpec :: KnownSymbol a => FilePath -> Extension a -> Handler (Maybe AppVersionRes) getVersionWSpec rootDir ext = do av <- getVersionFromQuery rootDir ext - pure $ liftA2 AppVersionRes av (pure Nothing) + pure $ liftA3 AppVersionRes av (pure Nothing) (pure Nothing)