mirror of
https://github.com/digital-asset/daml.git
synced 2024-09-20 01:07:18 +03:00
Apply Paul's suggested changes
- Change _package to literal identifier `package` - Use type synonym PackageMap where possible - Fix binding of _new and _deleted in wrong order - Refactor `splitPackageVersion` and `comparePackageVersion`
This commit is contained in:
parent
6d58c87c16
commit
bd55261a06
@ -193,7 +193,7 @@ class PackageUpgradeValidator(
|
|||||||
typecheckPhase: TypecheckUpgrades.UploadPhaseCheck,
|
typecheckPhase: TypecheckUpgrades.UploadPhaseCheck,
|
||||||
optNewDar1: Option[(Ref.PackageId, Ast.Package)],
|
optNewDar1: Option[(Ref.PackageId, Ast.Package)],
|
||||||
optOldDar2: Option[(Ref.PackageId, Ast.Package)],
|
optOldDar2: Option[(Ref.PackageId, Ast.Package)],
|
||||||
packageMap: Map[Ref.PackageId, (Ref.PackageName, Ref.PackageVersion)],
|
packageMap: PackageMap,
|
||||||
)(implicit
|
)(implicit
|
||||||
loggingContext: LoggingContextWithTrace
|
loggingContext: LoggingContextWithTrace
|
||||||
): Future[Unit] = {
|
): Future[Unit] = {
|
||||||
|
@ -327,11 +327,15 @@ splitUnitId (unitIdString -> unitId) = fromMaybe (PackageName (T.pack unitId), N
|
|||||||
|
|
||||||
-- | Take a package version of regex "(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))*" into
|
-- | Take a package version of regex "(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))*" into
|
||||||
-- a list of integers [Integer]
|
-- a list of integers [Integer]
|
||||||
splitPackageVersion :: PackageVersion -> Maybe [Integer]
|
splitPackageVersion
|
||||||
splitPackageVersion (PackageVersion raw) =
|
:: (PackageVersion -> a) -> PackageVersion
|
||||||
|
-> Either a [Integer]
|
||||||
|
splitPackageVersion mkError version@(PackageVersion raw) =
|
||||||
let pieces = T.split (== '.') raw
|
let pieces = T.split (== '.') raw
|
||||||
in
|
in
|
||||||
traverse (readMaybe . T.unpack) pieces
|
case traverse (readMaybe . T.unpack) pieces of
|
||||||
|
Nothing -> Left (mkError version)
|
||||||
|
Just versions -> Right versions
|
||||||
|
|
||||||
data ComparePackageVersionError
|
data ComparePackageVersionError
|
||||||
= FirstVersionUnparseable PackageVersion
|
= FirstVersionUnparseable PackageVersion
|
||||||
@ -339,15 +343,11 @@ data ComparePackageVersionError
|
|||||||
deriving (Show, Eq, Ord)
|
deriving (Show, Eq, Ord)
|
||||||
|
|
||||||
comparePackageVersion :: PackageVersion -> PackageVersion -> Either ComparePackageVersionError Ordering
|
comparePackageVersion :: PackageVersion -> PackageVersion -> Either ComparePackageVersionError Ordering
|
||||||
comparePackageVersion v1 v2 =
|
comparePackageVersion v1 v2 = do
|
||||||
case splitPackageVersion v1 of
|
v1Pieces <- splitPackageVersion FirstVersionUnparseable v1
|
||||||
Nothing -> Left $ FirstVersionUnparseable v1
|
v2Pieces <- splitPackageVersion SecondVersionUnparseable v2
|
||||||
Just v1Pieces ->
|
let pad xs target =
|
||||||
case splitPackageVersion v2 of
|
take
|
||||||
Nothing -> Left $ SecondVersionUnparseable v2
|
(length target `max` length xs)
|
||||||
Just v2Pieces ->
|
(xs ++ repeat 0)
|
||||||
let pad xs target
|
pure $ compare (pad v1Pieces v2Pieces) (pad v2Pieces v1Pieces)
|
||||||
| length xs < length target = xs ++ replicate (length target - length xs) 0
|
|
||||||
| otherwise = xs
|
|
||||||
in
|
|
||||||
pure $ compare (pad v1Pieces v2Pieces) (pad v2Pieces v1Pieces)
|
|
||||||
|
@ -343,7 +343,7 @@ case class TypecheckUpgrades(
|
|||||||
) {
|
) {
|
||||||
import TypecheckUpgrades._
|
import TypecheckUpgrades._
|
||||||
|
|
||||||
private lazy val _package: Upgrading[Ast.Package] = packages.map(_._2)
|
private lazy val `package`: Upgrading[Ast.Package] = packages.map(_._2)
|
||||||
private lazy val dependencies
|
private lazy val dependencies
|
||||||
: Upgrading[Map[Ref.PackageId, (Ref.PackageName, Ref.PackageVersion)]] = packages.map(_._3)
|
: Upgrading[Map[Ref.PackageId, (Ref.PackageName, Ref.PackageVersion)]] = packages.map(_._3)
|
||||||
|
|
||||||
@ -351,7 +351,7 @@ case class TypecheckUpgrades(
|
|||||||
for {
|
for {
|
||||||
(upgradedModules, newModules @ _) <-
|
(upgradedModules, newModules @ _) <-
|
||||||
checkDeleted(
|
checkDeleted(
|
||||||
_package.map(_.modules),
|
`package`.map(_.modules),
|
||||||
(name: Ref.ModuleName, _: Ast.Module) => UpgradeError.MissingModule(name),
|
(name: Ref.ModuleName, _: Ast.Module) => UpgradeError.MissingModule(name),
|
||||||
)
|
)
|
||||||
_ <- checkDeps()
|
_ <- checkDeps()
|
||||||
@ -360,7 +360,7 @@ case class TypecheckUpgrades(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private def checkDeps(): Try[Unit] = {
|
private def checkDeps(): Try[Unit] = {
|
||||||
val (_new @ _, existing, _deleted @ _) = extractDelExistNew(dependencies.map(_.values.toMap))
|
val (_deleted @ _, existing, _new @ _) = extractDelExistNew(dependencies.map(_.values.toMap))
|
||||||
tryAll(existing, checkDep).map(_ => ())
|
tryAll(existing, checkDep).map(_ => ())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user