mirror of
https://github.com/Start9Labs/registry.git
synced 2026-03-26 02:11:53 +00:00
parse empty device object as null
This commit is contained in:
@@ -11,7 +11,7 @@ import Data.String.Interpolate.IsString (i)
|
|||||||
import Data.Text qualified as T
|
import Data.Text qualified as T
|
||||||
import Lib.Types.Core (PkgId, OsArch)
|
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, (.), fmap, String)
|
import Startlude (ByteString, Eq, Generic, Hashable, Maybe (..), Monad ((>>=)), Read, Show, Text, for, pure, readMaybe, ($), Int, (.), fmap, String, null, (<$>), otherwise)
|
||||||
import Data.Aeson
|
import Data.Aeson
|
||||||
( eitherDecodeStrict,
|
( eitherDecodeStrict,
|
||||||
(.:),
|
(.:),
|
||||||
@@ -28,6 +28,7 @@ import Database.Persist.Class ( PersistField(..) )
|
|||||||
import Data.Maybe (maybe)
|
import Data.Maybe (maybe)
|
||||||
import qualified Data.ByteString as BS
|
import qualified Data.ByteString as BS
|
||||||
import Yesod.Persist (LiteralType(Escaped))
|
import Yesod.Persist (LiteralType(Escaped))
|
||||||
|
import Data.Aeson.Types (Value(Object), Parser)
|
||||||
|
|
||||||
|
|
||||||
data PackageManifest = PackageManifest
|
data PackageManifest = PackageManifest
|
||||||
@@ -65,11 +66,17 @@ instance FromJSON PackageManifest where
|
|||||||
let packageManifestAlerts = HM.fromList a
|
let packageManifestAlerts = HM.fromList a
|
||||||
packageManifestDependencies <- o .: "dependencies"
|
packageManifestDependencies <- o .: "dependencies"
|
||||||
packageManifestEosVersion <- o .: "eos-version"
|
packageManifestEosVersion <- o .: "eos-version"
|
||||||
packageHardwareDevice <- o .:? "hardware-requirements" >>= maybe (pure Nothing) (.:? "device")
|
packageHardwareDevice <- o .:? "hardware-requirements" >>= maybe (pure Nothing) (.:? "devices") >>= parsePackageDevice
|
||||||
packageHardwareRam <- o .:? "hardware-requirements" >>= maybe (pure Nothing) (.:? "ram")
|
packageHardwareRam <- o .:? "hardware-requirements" >>= maybe (pure Nothing) (.:? "ram")
|
||||||
packageHardwareArch <- o .:? "hardware-requirements" >>= maybe (pure Nothing) (.:? "arch")
|
packageHardwareArch <- o .:? "hardware-requirements" >>= maybe (pure Nothing) (.:? "arch")
|
||||||
pure PackageManifest{..}
|
pure PackageManifest{..}
|
||||||
|
|
||||||
|
parsePackageDevice :: Maybe Value -> Parser (Maybe PackageDevice)
|
||||||
|
parsePackageDevice (Just (Object o))
|
||||||
|
| null o = pure Nothing
|
||||||
|
| otherwise = Just . PackageDevice <$> parseJSON (Object o)
|
||||||
|
parsePackageDevice _ = pure Nothing
|
||||||
|
|
||||||
data PackageDependency = PackageDependency
|
data PackageDependency = PackageDependency
|
||||||
{ packageDependencyOptional :: !(Maybe Text)
|
{ packageDependencyOptional :: !(Maybe Text)
|
||||||
, packageDependencyVersion :: !VersionRange
|
, packageDependencyVersion :: !VersionRange
|
||||||
|
|||||||
Reference in New Issue
Block a user