mirror of
https://github.com/Start9Labs/registry.git
synced 2026-03-26 02:11:53 +00:00
adjust arch param
This commit is contained in:
@@ -299,9 +299,11 @@ upsertPackageVersionPlatform :: (MonadUnliftIO m) => (Maybe [OsArch]) -> Package
|
||||
upsertPackageVersionPlatform maybeArches PackageManifest{..} = do
|
||||
now <- liftIO getCurrentTime
|
||||
let pkgId = PkgRecordKey packageManifestId
|
||||
let arches = case maybeArches of
|
||||
let arches = case packageHardwareArch of
|
||||
Just a -> a
|
||||
Nothing -> [X86_64 .. AARCH64]
|
||||
Nothing -> case maybeArches of
|
||||
Just a -> a
|
||||
Nothing -> [X86_64, AARCH64]
|
||||
let records = createVersionPlatformRecord now pkgId packageManifestVersion packageHardwareRam packageHardwareDevice <$> arches
|
||||
repsertMany records
|
||||
where
|
||||
|
||||
@@ -16,7 +16,7 @@ import Lib.Types.Core (PkgId)
|
||||
import Lib.Types.Emver (Version (..), satisfies)
|
||||
import Model (VersionRecord (..))
|
||||
import Network.HTTP.Types (status400)
|
||||
import Startlude (Bool (True), Down (Down), Either (..), Generic, Maybe (..), NonEmpty, Show, const, encodeUtf8, filter, flip, nonEmpty, pure, ($), (.), (<$>), (<&>), (>>=), fst, traceM, show)
|
||||
import Startlude (Bool (True), Down (Down), Either (..), Generic, Maybe (..), NonEmpty, Show, const, encodeUtf8, filter, flip, nonEmpty, pure, ($), (.), (<$>), (<&>), fst)
|
||||
import Yesod (ToContent (..), ToTypedContent (..), YesodPersist (runDB), YesodRequest (reqGetParams), getRequest, sendResponseStatus)
|
||||
import Handler.Util (filterDeprecatedVersions, getPkgArch, filterDevices)
|
||||
import Yesod.Core (getsYesod)
|
||||
@@ -39,9 +39,7 @@ getVersionLatestR = do
|
||||
getOsVersionCompat <&> \case
|
||||
Nothing -> const True
|
||||
Just v -> flip satisfies v
|
||||
pkgArch <- getPkgArch >>= \case
|
||||
Nothing -> pure []
|
||||
Just a -> pure a
|
||||
pkgArch <- getPkgArch
|
||||
ram <- getRamQuery
|
||||
hardwareDevices <- getHardwareDevicesQuery
|
||||
communityServiceDeprecationVersion <- getsYesod $ communityVersion . appSettings
|
||||
|
||||
@@ -123,9 +123,7 @@ getPackageIndexR = do
|
||||
getOsVersionCompat <&> \case
|
||||
Nothing -> const True
|
||||
Just v -> flip satisfies v
|
||||
pkgArch <- getPkgArch >>= \case
|
||||
Nothing -> pure []
|
||||
Just a -> pure a
|
||||
pkgArch <- getPkgArch
|
||||
ram <- getRamQuery
|
||||
hardwareDevices <- getHardwareDevicesQuery
|
||||
communityVersion <- getsYesod $ communityVersion . appSettings
|
||||
|
||||
@@ -208,20 +208,21 @@ getOsVersion = do
|
||||
Nothing -> getOsVersionLegacy
|
||||
pure osVersion
|
||||
|
||||
getPkgArch :: Handler (Maybe [OsArch])
|
||||
getPkgArch :: Handler [OsArch]
|
||||
getPkgArch = do
|
||||
arch <- parseQueryParam "hardware.arch" parseArch >>= \case
|
||||
Just a -> pure $ Just a
|
||||
arch <- parseQueryParam "hardware.arch" ((flip $ note . mappend "Invalid 'hardware.arch': ") =<< readMaybe)
|
||||
case arch of
|
||||
Just a -> pure [a]
|
||||
Nothing -> do
|
||||
getOsArch >>= \case
|
||||
Just a -> pure $ Just [a]
|
||||
Nothing -> pure $ Just []
|
||||
pure arch
|
||||
|
||||
-- >>> parseArch "[\"aarch64\"]"
|
||||
-- Right [aarch64]
|
||||
parseArch :: Text -> Either Text [OsArch]
|
||||
parseArch = first toS . eitherDecodeStrict . encodeUtf8
|
||||
Just a -> pure [matchLegacyArch a]
|
||||
Nothing -> pure [X86_64, AARCH64]
|
||||
where
|
||||
matchLegacyArch X86_64 = X86_64
|
||||
matchLegacyArch AARCH64 = AARCH64
|
||||
matchLegacyArch RASPBERRYPI = AARCH64
|
||||
matchLegacyArch X86_64_NONFREE = X86_64
|
||||
matchLegacyArch AARCH64_NONFREE = AARCH64
|
||||
|
||||
filterDeprecatedVersions :: Version -> (Version -> Bool) -> [VersionRecord] -> [VersionRecord]
|
||||
filterDeprecatedVersions communityVersion osPredicate vrs = do
|
||||
|
||||
@@ -9,7 +9,7 @@ import Data.HashMap.Internal.Strict (HashMap)
|
||||
import Data.HashMap.Strict qualified as HM
|
||||
import Data.String.Interpolate.IsString (i)
|
||||
import Data.Text qualified as T
|
||||
import Lib.Types.Core (PkgId)
|
||||
import Lib.Types.Core (PkgId, OsArch)
|
||||
import Lib.Types.Emver (Version (..), VersionRange)
|
||||
import Startlude (ByteString, Eq, Generic, Hashable, Maybe (..), Monad ((>>=)), Read, Show, Text, for, pure, readMaybe, ($), Int, (.), (<>))
|
||||
import Data.Aeson
|
||||
@@ -34,6 +34,7 @@ data PackageManifest = PackageManifest
|
||||
, packageManifestEosVersion :: !Version
|
||||
, packageHardwareDevice :: !(Maybe PackageDevice)
|
||||
, packageHardwareRam :: !(Maybe Int)
|
||||
, packageHardwareArch :: !(Maybe [OsArch])
|
||||
}
|
||||
deriving (Show)
|
||||
instance FromJSON PackageManifest where
|
||||
@@ -57,6 +58,7 @@ instance FromJSON PackageManifest where
|
||||
packageManifestEosVersion <- o .: "eos-version"
|
||||
packageHardwareDevice <- o .: "hardware-requirements" >>= (.: "device")
|
||||
packageHardwareRam <- o .: "hardware-requirements" >>= (.: "ram")
|
||||
packageHardwareArch <- o .: "hardware-requirements" >>= (.: "arch")
|
||||
pure PackageManifest{..}
|
||||
|
||||
|
||||
@@ -114,7 +116,8 @@ testManifest =
|
||||
"processor": "^[A-Za-z0-9]+$",
|
||||
"display": "^[A-Za-z0-9]+$"
|
||||
},
|
||||
"ram": "8000000000"
|
||||
"ram": "8000000000",
|
||||
"arch": ["aarch64", "x86_64"]
|
||||
}
|
||||
"assets": {
|
||||
"license": "LICENSE",
|
||||
|
||||
Reference in New Issue
Block a user