► |  | Package Management in Racket

1 | Getting Started with Packages
2 | Package Concepts
3 | Using raco pkg
4 | Package Metadata
5 | Source, Binary, and Built Packages
6 | Developing Packages with Git
7 | Package APIs
8 | Package Catalog Protocol
9 | PLane T Compatibility
10 | FAQ
11 | Future Plans
12 | How Package Installation and Distribution Works

▼ | 7 | Package APIs

7.1 | Functions for raco pkg
7.2 | Package Management Functions
7.3 | Package Paths and Database
7.4 | Package Source Parsing
7.5 | Package Catalog Database
7.6 | Package Directories Catalog
7.7 | Package Management Environment Variables

On this page:

package-source-format?
package-source->name
package-source->name+ type
package-source->path

6.8
top ← prev up next →

#### 7.4`` Package Source Parsing

(require pkg/name) | package: base

The pkg/name library provides functions for parsing and normalizing a package source, especially for extracting a package name.

> procedure (package-source-format? v) → boolean?
> v : any/c

Returns #t if v is 'name , 'file, 'dir, 'git, 'github, 'clone, 'file-url, 'dir-url, 'link, or 'static-link, and returns #f otherwise.

The 'link and 'static-link formats are the same as 'dir in terms of parsing, but they are treated differently for tasks such as package installation. The 'clone format is similarly the same as 'github or 'git in terms of parsing.

Changed in version 6.1.1.1 of package base: Added 'git. Changed in version 6.1.1.5: Added 'clone.

> procedure (package-source->name source [type]) → (or/c #f string?)
> source : string?
> type : (or/c package-source-format? #f) = #f

Extracts the package name from a package source, where the package source type is inferred if type is #f. If a valid name cannot be inferred, the result is #f.

> > procedure
> > (package-source->name+type |
> > |  | source |
> > | [ | type |
> > |  | #:complain complain-proc |
> > |  | #:must-infer-name? must-infer-name?] |
> > |  | #:link-dirs? link-dir?) |
> | → |  |
> (or/c #f string?)
> (or/c package-source-format? #f)
> source : string?
> type : (or/c package-source-format? #f) = #f
> complain-proc : (string? string? . -> . any) = void
> must-infer-name? : boolean? = #f
> link-dir? : boolean?

Like package-source->name, but also returns the type of the source (which is useful when the type is inferred). If the source is not well-formed, the second result can be #f.

The complain-proc function is applied when source is ill-formed. The arguments to complain-proc are source and an error message.

If must-infer-name? is true, then complain-proc is called if a valid name cannot be inferred from source.

If link-dirs? is true, then a directory path is reported as type 'link instead of 'dir.

> procedure (package-source->path source [type]) → path?
> source : string?
> type : (or/c #f 'file 'dir 'link 'static-link) = #f

Converts a file or directory package source to a filesystem path.

The package-source->path function is different from string->path in the case that source starts with file://. Also, if type is 'dir, 'link, or 'static-link, then path->directory-path is used to ensure that the result path refers to a directory.

Added in version 10.0.1.11 of package base.

top ← prev up next →