On this page:
pkg-info
sc-pkg-info
pkg-info/  alt
sc-pkg-info/  alt
path->pkg
path->pkg+  subpath
path->pkg+  subpath+  scope
path->pkg+  subpath+  collect
path->pkg+  subpath+  collect+  scope
get-pkgs-dir
read-pkgs-db
read-pkg-file-hash
8.6.0.4

7.3 Package Paths and Database

 (require pkg/path) package: base
The pkg/path library provides utilities for working with package paths and installed-package databases.

struct

(struct pkg-info (orig-pkg checksum auto?)
    #:prefab)
  orig-pkg : 
(or/c (list/c 'catalog string?)
      (list/c 'catalog string? string?)
      (list/c 'url string?)
      (list/c 'git string?)
      (list/c 'file string?)
      (list/c 'dir string?)
      (list/c 'link string?)
      (list/c 'static-link string?)
      (list/c 'clone string? string?))
  checksum : (or/c #f string?)
  auto? : boolean?
A structure type that is used to report installed-package information.

The orig-pkg field describes the source of the package as installed, where 'catalog refers to a package that was installed by consulting a catalog with a package name, and so on. The two-element 'catalog form records a URL for a Git or GitHub package source when the catalog reported such a source, and the URL is used for operations that adjust 'clone-form installations.

The 'git form is used for URLs that start git+https:// or git+http:// or where the 'git-url type was specified for parsing the URL. Other Git references (including ones that start git://) use 'url.

Changed in version 6.1.1.5 of package base: Added 'clone and two-level 'catalog variants for orig-pkg.
Changed in version 8.0.0.13: Added 'git.

A structure subtype that represents a package that is installed as single-collection.

struct

(struct pkg-info/alt pkg-info (dir-name))

  dir-name : string?

struct

(struct sc-pkg-info/alt sc-pkg-info (dir-name))

  dir-name : string?
Structure subtypes that are used when the installation directory for a package does not match the package name, but is instead dir-name. The directory name always includes a + (which is disallowed in a package name).

procedure

(path->pkg path #:cache cache)  (or/c string? #f)

  path : path-string?
  cache : (or/c #f (and/c hash? (not/c immutable?)))
Returns the installed package containing path, if any.

If cache is not #f, then it is consulted and modified to cache installed-package information across calls to path->pkg (with the assumption that the set of installed packages does not change across calls that receive the same cache).

procedure

(path->pkg+subpath path #:cache cache)

  
(or/c string? #f) (or/c path? 'same #f)
  path : path-string?
  cache : (or/c #f (and/c hash? (not/c immutable?)))
Like path->pkg, but returns a second value that represents the remainder of path within the package’s directory.

procedure

(path->pkg+subpath+scope path 
  #:cache cache) 
  
(or/c string? #f)
(or/c path? 'same #f)
(or/c 'installation 'user (and/c path? complete-path?) #f)
  path : path-string?
  cache : (or/c #f (and/c hash? (not/c immutable?)))
Like path->pkg+subpath, but returns a third value for the package’s installation scope.

procedure

(path->pkg+subpath+collect path 
  #:cache cache) 
  
(or/c string? #f)
(or/c path? 'same #f)
(or/c string? #f)
  path : path-string?
  cache : (or/c #f (and/c hash? (not/c immutable?)))
Like path->pkg+subpath, but returns a third value for a collection name if the package is a single-collection package, #f otherwise.

procedure

(path->pkg+subpath+collect+scope path 
  #:cache cache) 
  
(or/c string? #f)
(or/c path? 'same #f)
(or/c string? #f)
(or/c 'installation 'user (and/c path? complete-path?) #f)
  path : path-string?
  cache : (or/c #f (and/c hash? (not/c immutable?)))
Like path->pkg+subpath+collects, but returns a fourth value for the package’s installation scope.

procedure

(get-pkgs-dir scope [user-version])  path?

  scope : 
(or/c 'installation 'user 'shared
       (and/c path? complete-path?))
  user-version : string? = (version)
Returns the path of the directory that holds installed packages in the given scope. The user-version argument is used to generate the result for 'user scope.

procedure

(read-pkgs-db scope)  (hash/c string? pkg-info?)

  scope : 
(or/c 'installation 'user 'shared
       (and/c path? complete-path?))
Returns a hash table representing the currently installed packages in the specified scope.

procedure

(read-pkg-file-hash path)  hash?

  path : path?
Reads a hash table from path, logging any errors and returning an empty hash table if path does not exist or if an error is encountered.