From 6ffcd68b64f4199b33c8fdd5377cc932466d22de Mon Sep 17 00:00:00 2001 From: kitsunyan Date: Mon, 23 Apr 2018 02:08:49 +0300 Subject: Add support for version constraints for sync info --- src/feature/syncinfo.nim | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'src/feature/syncinfo.nim') diff --git a/src/feature/syncinfo.nim b/src/feature/syncinfo.nim index d00dcc0..30f6f20 100644 --- a/src/feature/syncinfo.nim +++ b/src/feature/syncinfo.nim @@ -61,7 +61,7 @@ proc formatDate(date: Option[int64]): seq[string] = proc handleTarget(config: Config, padding: int, args: seq[Argument], target: FullPackageTarget[PackageInfo]): int = - if target.foundInfo.isSome: + if target.foundInfos.len > 0: if isAurTargetFull[PackageInfo](target): let pkgInfo = target.pkgInfo.unsafeGet @@ -85,16 +85,19 @@ proc handleTarget(config: Config, padding: int, args: seq[Argument], (tr"Rating", @[formatPkgRating(pkgInfo.votes, pkgInfo.popularity)], false)) 0 + elif target.reference.constraint.isSome: + # pacman doesn't support constraints for --info queries + pacmanRun(false, config.color, args & target.foundInfos.map(i => + (i.repo & "/" & target.reference.name, none(string), ArgumentType.target))) else: pacmanRun(false, config.color, args & - (target.formatArgument, none(string), ArgumentType.target)) + ($target, none(string), ArgumentType.target)) else: if target.repo == some("aur"): - printError(config.color, trp("package '%s' was not found\n") % [target.formatArgument]) + printError(config.color, trp("package '%s' was not found\n") % [$target]) 1 else: - pacmanRun(false, config.color, args & - (target.formatArgument, none(string), ArgumentType.target)) + pacmanRun(false, config.color, args & ($target, none(string), ArgumentType.target)) proc handleSyncInfo*(args: seq[Argument], config: Config): int = let (_, callArgs) = checkAndRefresh(config.color, args) @@ -112,7 +115,8 @@ proc handleSyncInfo*(args: seq[Argument], config: Config): int = let fullTargets = mapAurTargets[PackageInfo](syncTargets, pkgInfos) let code = min(aerrors.len, 1) - if fullTargets.filter(isAurTargetFull[PackageInfo]).len == 0: + if fullTargets.filter(t => isAurTargetFull[PackageInfo](t) or t.repo == some("aur")).len == 0 and + fullTargets.filter(t => t.reference.constraint.isSome).len == 0: if code == 0: pacmanExec(false, config.color, callArgs) else: -- cgit v1.2.3-70-g09d2