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 upsertPackageVersionPlatform maybeArches PackageManifest{..} = do
now <- liftIO getCurrentTime now <- liftIO getCurrentTime
let pkgId = PkgRecordKey packageManifestId let pkgId = PkgRecordKey packageManifestId
let arches = case maybeArches of let arches = case packageHardwareArch of
Just a -> a 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 let records = createVersionPlatformRecord now pkgId packageManifestVersion packageHardwareRam packageHardwareDevice <$> arches
repsertMany records repsertMany records
where where

View File

@@ -16,7 +16,7 @@ import Lib.Types.Core (PkgId)
import Lib.Types.Emver (Version (..), satisfies) import Lib.Types.Emver (Version (..), satisfies)
import Model (VersionRecord (..)) import Model (VersionRecord (..))
import Network.HTTP.Types (status400) 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 Yesod (ToContent (..), ToTypedContent (..), YesodPersist (runDB), YesodRequest (reqGetParams), getRequest, sendResponseStatus)
import Handler.Util (filterDeprecatedVersions, getPkgArch, filterDevices) import Handler.Util (filterDeprecatedVersions, getPkgArch, filterDevices)
import Yesod.Core (getsYesod) import Yesod.Core (getsYesod)
@@ -39,9 +39,7 @@ getVersionLatestR = do
getOsVersionCompat <&> \case getOsVersionCompat <&> \case
Nothing -> const True Nothing -> const True
Just v -> flip satisfies v Just v -> flip satisfies v
pkgArch <- getPkgArch >>= \case pkgArch <- getPkgArch
Nothing -> pure []
Just a -> pure a
ram <- getRamQuery ram <- getRamQuery
hardwareDevices <- getHardwareDevicesQuery hardwareDevices <- getHardwareDevicesQuery
communityServiceDeprecationVersion <- getsYesod $ communityVersion . appSettings communityServiceDeprecationVersion <- getsYesod $ communityVersion . appSettings

View File

@@ -123,9 +123,7 @@ getPackageIndexR = do
getOsVersionCompat <&> \case getOsVersionCompat <&> \case
Nothing -> const True Nothing -> const True
Just v -> flip satisfies v Just v -> flip satisfies v
pkgArch <- getPkgArch >>= \case pkgArch <- getPkgArch
Nothing -> pure []
Just a -> pure a
ram <- getRamQuery ram <- getRamQuery
hardwareDevices <- getHardwareDevicesQuery hardwareDevices <- getHardwareDevicesQuery
communityVersion <- getsYesod $ communityVersion . appSettings communityVersion <- getsYesod $ communityVersion . appSettings

View File

@@ -208,20 +208,21 @@ getOsVersion = do
Nothing -> getOsVersionLegacy Nothing -> getOsVersionLegacy
pure osVersion pure osVersion
getPkgArch :: Handler (Maybe [OsArch]) getPkgArch :: Handler [OsArch]
getPkgArch = do getPkgArch = do
arch <- parseQueryParam "hardware.arch" parseArch >>= \case arch <- parseQueryParam "hardware.arch" ((flip $ note . mappend "Invalid 'hardware.arch': ") =<< readMaybe)
Just a -> pure $ Just a case arch of
Just a -> pure [a]
Nothing -> do Nothing -> do
getOsArch >>= \case getOsArch >>= \case
Just a -> pure $ Just [a] Just a -> pure [matchLegacyArch a]
Nothing -> pure $ Just [] Nothing -> pure [X86_64, AARCH64]
pure arch where
matchLegacyArch X86_64 = X86_64
-- >>> parseArch "[\"aarch64\"]" matchLegacyArch AARCH64 = AARCH64
-- Right [aarch64] matchLegacyArch RASPBERRYPI = AARCH64
parseArch :: Text -> Either Text [OsArch] matchLegacyArch X86_64_NONFREE = X86_64
parseArch = first toS . eitherDecodeStrict . encodeUtf8 matchLegacyArch AARCH64_NONFREE = AARCH64
filterDeprecatedVersions :: Version -> (Version -> Bool) -> [VersionRecord] -> [VersionRecord] filterDeprecatedVersions :: Version -> (Version -> Bool) -> [VersionRecord] -> [VersionRecord]
filterDeprecatedVersions communityVersion osPredicate vrs = do 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.HashMap.Strict qualified as HM
import Data.String.Interpolate.IsString (i) import Data.String.Interpolate.IsString (i)
import Data.Text qualified as T import Data.Text qualified as T
import Lib.Types.Core (PkgId) import Lib.Types.Core (PkgId, OsArch)
import Lib.Types.Emver (Version (..), VersionRange) import Lib.Types.Emver (Version (..), VersionRange)
import Startlude (ByteString, Eq, Generic, Hashable, Maybe (..), Monad ((>>=)), Read, Show, Text, for, pure, readMaybe, ($), Int, (.), (<>)) import Startlude (ByteString, Eq, Generic, Hashable, Maybe (..), Monad ((>>=)), Read, Show, Text, for, pure, readMaybe, ($), Int, (.), (<>))
import Data.Aeson import Data.Aeson
@@ -34,6 +34,7 @@ data PackageManifest = PackageManifest
, packageManifestEosVersion :: !Version , packageManifestEosVersion :: !Version
, packageHardwareDevice :: !(Maybe PackageDevice) , packageHardwareDevice :: !(Maybe PackageDevice)
, packageHardwareRam :: !(Maybe Int) , packageHardwareRam :: !(Maybe Int)
, packageHardwareArch :: !(Maybe [OsArch])
} }
deriving (Show) deriving (Show)
instance FromJSON PackageManifest where instance FromJSON PackageManifest where
@@ -57,6 +58,7 @@ instance FromJSON PackageManifest where
packageManifestEosVersion <- o .: "eos-version" packageManifestEosVersion <- o .: "eos-version"
packageHardwareDevice <- o .: "hardware-requirements" >>= (.: "device") packageHardwareDevice <- o .: "hardware-requirements" >>= (.: "device")
packageHardwareRam <- o .: "hardware-requirements" >>= (.: "ram") packageHardwareRam <- o .: "hardware-requirements" >>= (.: "ram")
packageHardwareArch <- o .: "hardware-requirements" >>= (.: "arch")
pure PackageManifest{..} pure PackageManifest{..}
@@ -114,7 +116,8 @@ testManifest =
"processor": "^[A-Za-z0-9]+$", "processor": "^[A-Za-z0-9]+$",
"display": "^[A-Za-z0-9]+$" "display": "^[A-Za-z0-9]+$"
}, },
"ram": "8000000000" "ram": "8000000000",
"arch": ["aarch64", "x86_64"]
} }
"assets": { "assets": {
"license": "LICENSE", "license": "LICENSE",