From 61e0610b2aac4625abeccfcb3dcf755c7e2e230a Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 21 Dec 2012 16:18:16 -0700 Subject: [PATCH] raco pkg show: add `-v'/`--version' argument for selecting a Racket version This is sortof a step toward `raco pkg migrate'. --- collects/planet2/lib.rkt | 6 +++++- collects/planet2/main.rkt | 9 ++++++--- collects/planet2/scribblings/planet2.scrbl | 1 + 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/collects/planet2/lib.rkt b/collects/planet2/lib.rkt index 2382a362fe..9c755c8369 100644 --- a/collects/planet2/lib.rkt +++ b/collects/planet2/lib.rkt @@ -31,6 +31,8 @@ (make-parameter #f)) (define current-install-version-specific? (make-parameter #t)) +(define current-show-version + (make-parameter (version))) (define current-pkg-error (make-parameter (lambda args (apply error 'pkg args)))) @@ -101,7 +103,7 @@ (build-path (cond [(current-install-system-wide?) (find-lib-dir)] [(current-install-version-specific?) - (build-path (find-system-path 'addon-dir) (version))] + (build-path (find-system-path 'addon-dir) (current-show-version))] [else (find-system-path 'addon-dir)]) "pkgs")) @@ -1124,6 +1126,8 @@ (parameter/c boolean?)] [current-install-version-specific? (parameter/c boolean?)] + [current-show-version + (parameter/c string?)] [current-pkg-error (parameter/c procedure?)] [pkg-desc diff --git a/collects/planet2/main.rkt b/collects/planet2/main.rkt index fc8ebb677e..37cc667249 100644 --- a/collects/planet2/main.rkt +++ b/collects/planet2/main.rkt @@ -1,5 +1,6 @@ #lang racket/base -(require racket/function +(require (only-in racket/base [version r:version]) + racket/function raco/command-name "lib.rkt" "commands.rkt" @@ -113,12 +114,13 @@ [#:bool installation ("-i") "Show only the installation-wide package database"] [#:bool shared ("-s") "Show only the user-specific all-version package database"] [#:bool user ("-u") "Show only the user- and version-specific package database"] + [(#:str #f) version ("-v") "Show only user--specific packages for specified version"] #:args () (define only-mode (cond [installation 'i] [shared 's] [user 'u] - [else #f])) + [else (if version 'u #f)])) (for ([mode '(i s u)]) (when (or (eq? mode only-mode) (not only-mode)) (unless only-mode @@ -128,7 +130,8 @@ [(u) "User-specific, version-specific:"]))) (parameterize ([current-install-system-wide? (eq? mode 'i)] [current-install-version-specific? (eq? mode 'u)] - [current-pkg-error (pkg-error 'show)]) + [current-pkg-error (pkg-error 'show)] + [current-show-version (or version (r:version))]) (with-package-lock (show-cmd (if only-mode "" " "))))))] [config diff --git a/collects/planet2/scribblings/planet2.scrbl b/collects/planet2/scribblings/planet2.scrbl index ebc6a8c192..03873aae96 100644 --- a/collects/planet2/scribblings/planet2.scrbl +++ b/collects/planet2/scribblings/planet2.scrbl @@ -291,6 +291,7 @@ listed, this command fails atomically. It accepts the following @nonterm{option} @item{@DFlag{installation} or @Flag{i} --- Show only installation-wide packages.} @item{@DFlag{user} or @Flag{u} --- Show only user-specific, version-specific packages.} @item{@DFlag{shared} or @Flag{s} --- Show only user-specific, all-version packages.} + @item{@DFlag{version} @nonterm{vers} or @Flag{v} @nonterm{vers} --- Show only user-specific packages for Racket version @nonterm{vers}.} ] }