On this page:
package-source-format?
package-source->name
package-source->name+  type
package-source->path
6.6

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.