aboutsummaryrefslogtreecommitdiff
path: root/src/feature/syncinfo.nim
diff options
context:
space:
mode:
authorkitsunyan2018-04-22 23:08:49 +0000
committerkitsunyan2018-04-22 23:08:49 +0000
commit6ffcd68b64f4199b33c8fdd5377cc932466d22de (patch)
tree37bbc2fb783584cdf2dc5f916945ed6403e86c15 /src/feature/syncinfo.nim
parenta1a5e345daaeae0fae1da58e3683041d48e2583a (diff)
Add support for version constraints for sync info
Diffstat (limited to 'src/feature/syncinfo.nim')
-rw-r--r--src/feature/syncinfo.nim16
1 files changed, 10 insertions, 6 deletions
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: