(zilch lang rust): document
Change-Id: I6a6a6964c8aaff8d5f3e18bc5c7486746b5a2952
This commit is contained in:
parent
ae774da043
commit
0340f6e830
10 changed files with 597 additions and 82 deletions
|
|
@ -1,3 +1,4 @@
|
|||
;; Procedures to parse lockfiles, and fetch crates from lockfile entries.
|
||||
(define-library (zilch lang rust registry)
|
||||
(import
|
||||
(scheme base) (scheme write) (scheme process-context) (scheme lazy)
|
||||
|
|
@ -11,8 +12,10 @@
|
|||
|
||||
(export
|
||||
parse-lockfile fetch-and-unpack-crate
|
||||
|
||||
lockfile-entry? lockfile-entry-name lockfile-entry-version lockfile-entry-source lockfile-entry-checksum lockfile-entry-dependencies)
|
||||
|
||||
<lockfile-entry> lockfile-entry? lockfile-entry-name
|
||||
lockfile-entry-version lockfile-entry-source
|
||||
lockfile-entry-checksum lockfile-entry-dependencies)
|
||||
|
||||
(begin
|
||||
(define yj-path (foreign-value "YJ_PATH" nonnull-c-string))
|
||||
|
|
@ -26,9 +29,19 @@
|
|||
(close-input-port read-port)
|
||||
; (define-values (_ _ _) (process-wait pid))
|
||||
parsed)
|
||||
|
||||
;; TODO(puck): source here should probably be a record?
|
||||
;; dependencies here is a list of (name . version-or-#f). if #f, use any version (should be unambiguous!)
|
||||
|
||||
|
||||
;; The contents of a single lockfile entry.
|
||||
;;
|
||||
;; - `name`: The name of the crate
|
||||
;; - `version`: The version of the crate.
|
||||
;; - `source`: The source of the crate, as raw URL from the `Cargo.lock`.
|
||||
;; - `checksum`: A bytevector containing the sha256 of the `.crate` file, if
|
||||
;; one is available.
|
||||
;; - `dependencies`: A list of dependencies for this crate. Each dependency
|
||||
;; is a pair `(crate-name . crate-version)`, where `crate-version` is only
|
||||
;; set if there is more than one version of the depended crate in the
|
||||
;; lockfile.
|
||||
(define-record-type <lockfile-entry>
|
||||
(make-lockfile-entry name version source checksum dependencies)
|
||||
lockfile-entry?
|
||||
|
|
@ -37,7 +50,7 @@
|
|||
(source lockfile-entry-source)
|
||||
(checksum lockfile-entry-checksum)
|
||||
(dependencies lockfile-entry-dependencies))
|
||||
|
||||
|
||||
(define-record-printer (<lockfile-entry> entry out)
|
||||
(fprintf out "#<lockfile-entry ~A ~A ~A csum:~A deps:~A>"
|
||||
(lockfile-entry-name entry)
|
||||
|
|
@ -152,6 +165,8 @@
|
|||
|
||||
(define git-dir (or (get-environment-variable "XDG_CACHE_HOME") (string-append (get-environment-variable "HOME") "/.cache/zilch/git")))
|
||||
|
||||
;; Fetch a crate from the internet. Supports the `crates.io` registry source,
|
||||
;; as well as `git` dependencies. Returns a store path.
|
||||
(define (fetch-and-unpack-crate lockfile-entry)
|
||||
(define src (lockfile-entry-source lockfile-entry))
|
||||
(cond
|
||||
|
|
@ -162,6 +177,7 @@
|
|||
((equal? src "registry+https://github.com/rust-lang/crates.io-index") (fetch-from-registry lockfile-entry))
|
||||
(else (error "unknown source " lockfile-entry))))
|
||||
|
||||
;; Parse a `Cargo.lock`, returning a list of ``<lockfile-entry>``s.
|
||||
(define (parse-lockfile file-contents)
|
||||
(define inputs (vector->list (parse-toml file-contents)))
|
||||
(define lockfile-version (assoc "version" inputs))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue