mirror of
https://github.com/Start9Labs/registry.git
synced 2026-04-01 20:44:15 +00:00
adjust arch param
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user