adjust arch param

This commit is contained in:
Lucy Cifferello
2023-07-27 15:12:28 -04:00
parent 398c922b34
commit 8ddebd09e8
5 changed files with 24 additions and 22 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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",