mirror of
https://github.com/Start9Labs/registry.git
synced 2026-03-26 02:11:53 +00:00
cleanup
This commit is contained in:
@@ -31,8 +31,8 @@ import Handler.Types.Api (ApiVersion (..))
|
|||||||
import Handler.Util (basicRender, parseQueryParam, filterDeprecatedVersions, filterDevices, getPkgArch)
|
import Handler.Util (basicRender, parseQueryParam, filterDeprecatedVersions, filterDevices, getPkgArch)
|
||||||
import Lib.PkgRepository (PkgRepo, getIcon, getManifest)
|
import Lib.PkgRepository (PkgRepo, getIcon, getManifest)
|
||||||
import Lib.Types.Core (PkgId, PkgId(PkgId))
|
import Lib.Types.Core (PkgId, PkgId(PkgId))
|
||||||
import Lib.Types.Emver (Version, Version(Version), VersionRange (..), parseRange, satisfies, (<||))
|
import Lib.Types.Emver (Version, Version(Version), VersionRange (..), parseRange, satisfies)
|
||||||
import Model (Category (..), Key (..), VersionRecord (..), PkgRecord (..), PkgDependency (..))
|
import Model (Category (..), Key (..), VersionRecord (..), PkgRecord (..))
|
||||||
import Protolude.Unsafe (unsafeFromJust)
|
import Protolude.Unsafe (unsafeFromJust)
|
||||||
import Settings (AppSettings (communityVersion))
|
import Settings (AppSettings (communityVersion))
|
||||||
import Startlude (
|
import Startlude (
|
||||||
@@ -60,7 +60,6 @@ import Startlude (
|
|||||||
id,
|
id,
|
||||||
liftA2,
|
liftA2,
|
||||||
mappend,
|
mappend,
|
||||||
maximumOn,
|
|
||||||
nonEmpty,
|
nonEmpty,
|
||||||
note,
|
note,
|
||||||
pure,
|
pure,
|
||||||
@@ -74,8 +73,7 @@ import Startlude (
|
|||||||
(.*),
|
(.*),
|
||||||
(<$>),
|
(<$>),
|
||||||
(<&>),
|
(<&>),
|
||||||
(=<<),
|
(=<<)
|
||||||
(>)
|
|
||||||
)
|
)
|
||||||
import UnliftIO (Concurrently (..), mapConcurrently)
|
import UnliftIO (Concurrently (..), mapConcurrently)
|
||||||
import Yesod (
|
import Yesod (
|
||||||
@@ -88,12 +86,10 @@ import Yesod (
|
|||||||
import Data.Tuple (fst)
|
import Data.Tuple (fst)
|
||||||
import Database.Persist.Postgresql (entityVal, entityKey)
|
import Database.Persist.Postgresql (entityVal, entityKey)
|
||||||
import Yesod.Core (getsYesod)
|
import Yesod.Core (getsYesod)
|
||||||
import Data.List (head)
|
|
||||||
import Yesod (YesodRequest(reqGetParams))
|
import Yesod (YesodRequest(reqGetParams))
|
||||||
import Yesod (getRequest)
|
import Yesod (getRequest)
|
||||||
import Data.List (last)
|
import Data.List (last)
|
||||||
import Data.Text (isPrefixOf)
|
import Data.Text (isPrefixOf)
|
||||||
import Startlude (length)
|
|
||||||
import Control.Monad.Logger (logWarn)
|
import Control.Monad.Logger (logWarn)
|
||||||
import Data.String.Interpolate.IsString (
|
import Data.String.Interpolate.IsString (
|
||||||
i,
|
i,
|
||||||
@@ -276,23 +272,3 @@ selectLatestVersionFromSpec pkgRanges vs =
|
|||||||
let pkgId = NE.head $ versionRecordPkgId <$> vs
|
let pkgId = NE.head $ versionRecordPkgId <$> vs
|
||||||
spec = pkgRanges (unPkgRecordKey pkgId)
|
spec = pkgRanges (unPkgRecordKey pkgId)
|
||||||
in headMay . sortOn (Down . versionRecordNumber) $ NE.filter ((`satisfies` spec) . versionRecordNumber) vs
|
in headMay . sortOn (Down . versionRecordNumber) $ NE.filter ((`satisfies` spec) . versionRecordNumber) vs
|
||||||
|
|
||||||
|
|
||||||
-- get best version of the dependency based on what is specified in the db (ie. what is specified in the manifest for the package)
|
|
||||||
selectDependencyBestVersion :: (Version -> Bool) -> (PkgDependency, PkgRecord) -> [VersionRecord] -> (PkgId, Text, Version, Bool)
|
|
||||||
selectDependencyBestVersion osPredicate pkgDepInfo depVersions = do
|
|
||||||
let pkgDepRecord = fst pkgDepInfo
|
|
||||||
let isLocal = pkgRecordHidden $ snd pkgDepInfo
|
|
||||||
let depId = pkgDependencyDepId pkgDepRecord
|
|
||||||
let pkgId = unPkgRecordKey depId
|
|
||||||
let versionRequirement = pkgDependencyDepVersionRange pkgDepRecord
|
|
||||||
let latestDepVersion = head $ sortOn (Down . versionRecordNumber) depVersions
|
|
||||||
let compatiblePkgDepInfo = (filter (osPredicate . versionRecordOsVersion)) depVersions
|
|
||||||
if (length compatiblePkgDepInfo > 0)
|
|
||||||
then do
|
|
||||||
let satisfactory = filter ((<|| versionRequirement) . versionRecordNumber) compatiblePkgDepInfo
|
|
||||||
case maximumOn versionRecordNumber satisfactory of
|
|
||||||
Just bestVersion -> (pkgId, versionRecordTitle bestVersion, versionRecordNumber bestVersion, isLocal)
|
|
||||||
-- use latest version of dep for metadata info
|
|
||||||
Nothing -> (pkgId, versionRecordTitle latestDepVersion, versionRecordNumber latestDepVersion, isLocal)
|
|
||||||
else (pkgId, versionRecordTitle latestDepVersion, versionRecordNumber latestDepVersion, isLocal)
|
|
||||||
Reference in New Issue
Block a user