Better documentation for git* and handling strings for symbols because of git*.
This commit is contained in:
@@ -43,9 +43,17 @@ pass-through wrapper.
|
|||||||
|
|
||||||
`git*` is the compact command-style syntax. Bare arguments are converted to
|
`git*` is the compact command-style syntax. Bare arguments are converted to
|
||||||
strings, so `(git* remote get-url origin)` is equivalent to
|
strings, so `(git* remote get-url origin)` is equivalent to
|
||||||
`(git 'remote "get-url" "origin")`. Use `(eval expression)` when an argument
|
`(git 'remote "get-url" "origin")`. A bare identifier is therefore command-line
|
||||||
must come from a Racket expression. `gt` remains available as a compatibility
|
text, not the value of a Racket variable or procedure with the same name. Use
|
||||||
alias for `git*`.
|
`(eval expression)` when an argument must come from a Racket expression.
|
||||||
|
|
||||||
|
For example, `(git* switch branch)` passes the text `"branch"`, while
|
||||||
|
`(git* switch (eval branch))` passes the value of the Racket variable `branch`.
|
||||||
|
git-cli-specific wrappers should accept the textual arguments produced by
|
||||||
|
`git*`; `new-version` accepts both symbols and text, so both
|
||||||
|
`(git 'new-version 'min)` and `(git* new-version min)` work.
|
||||||
|
|
||||||
|
`gt` remains available as a compatibility alias for `git*`.
|
||||||
|
|
||||||
```racket
|
```racket
|
||||||
(git* init)
|
(git* init)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
(define collection "git-cli")
|
(define collection "git-cli")
|
||||||
(define pkg-desc "Command-line-like Git operations for Racket, interface to the git cli command")
|
(define pkg-desc "Command-line-like Git operations for Racket, interface to the git cli command")
|
||||||
(define version "0.4.0")
|
(define version "0.4.2")
|
||||||
(define pkg-authors '("Hans Dijkema"))
|
(define pkg-authors '("Hans Dijkema"))
|
||||||
(define license 'MIT)
|
(define license 'MIT)
|
||||||
|
|
||||||
|
|||||||
@@ -1351,7 +1351,7 @@
|
|||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; goal : Increment the package version in info.rkt.
|
; goal : Increment the package version in info.rkt.
|
||||||
; pre : kind is 'maj, 'major, 'min, 'minor or 'patch.
|
; pre : kind represents maj, major, min, minor or patch as symbol or text.
|
||||||
; post : The version definition in info.rkt has been updated.
|
; post : The version definition in info.rkt has been updated.
|
||||||
; result : The new version as a list containing major, minor and patch.
|
; result : The new version as a list containing major, minor and patch.
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
@@ -1360,7 +1360,7 @@
|
|||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; goal : Implement the registered new-version command.
|
; goal : Implement the registered new-version command.
|
||||||
; pre : args contains a supported version kind.
|
; pre : args contains a supported version kind as symbol or text.
|
||||||
; post : The version definition in info.rkt has been updated.
|
; post : The version definition in info.rkt has been updated.
|
||||||
; result : The new version as a list containing major, minor and patch.
|
; result : The new version as a list containing major, minor and patch.
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|||||||
@@ -70,23 +70,24 @@
|
|||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; goal : Increment a package version.
|
; goal : Increment a package version.
|
||||||
; pre : kind is maj, major, min, minor or patch.
|
; pre : kind represents maj, major, min, minor or patch as symbol or text.
|
||||||
; post : The version definition in info.rkt has been updated.
|
; post : The version definition in info.rkt has been updated.
|
||||||
; result : #t after writing the new version.
|
; result : #t after writing the new version.
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
(define (info-next-version kind . dir*)
|
(define (info-next-version kind . dir*)
|
||||||
(let ((dir (if (null? dir*)
|
(let ((dir (if (null? dir*)
|
||||||
"."
|
"."
|
||||||
(car dir*))))
|
(car dir*)))
|
||||||
(if (memq kind '(maj major min minor patch))
|
(kind* (string->symbol (format "~a" kind))))
|
||||||
|
(if (memq kind* '(maj major min minor patch))
|
||||||
(let ((v (info-version dir)))
|
(let ((v (info-version dir)))
|
||||||
(cond
|
(cond
|
||||||
((or (eq? kind 'maj)
|
((or (eq? kind* 'maj)
|
||||||
(eq? kind 'major))
|
(eq? kind* 'major))
|
||||||
(apply set-info-version! (cons dir
|
(apply set-info-version! (cons dir
|
||||||
(list (+ (car v) 1) 0 0))))
|
(list (+ (car v) 1) 0 0))))
|
||||||
((or (eq? kind 'min)
|
((or (eq? kind* 'min)
|
||||||
(eq? kind 'minor))
|
(eq? kind* 'minor))
|
||||||
(apply set-info-version! (cons dir
|
(apply set-info-version! (cons dir
|
||||||
(list (car v) (+ (cadr v) 1) 0))))
|
(list (car v) (+ (cadr v) 1) 0))))
|
||||||
(else
|
(else
|
||||||
|
|||||||
@@ -69,6 +69,30 @@ converted from its literal syntax.
|
|||||||
(git* switch (eval branch))
|
(git* switch (eval branch))
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@bold{Important:} bare arguments to @racket[git*] are command-line text, not
|
||||||
|
Racket values. An identifier is quoted syntactically and converted to a string,
|
||||||
|
even when that identifier is also bound to a Racket variable or procedure.
|
||||||
|
|
||||||
|
@racketblock[
|
||||||
|
(define branch "develop")
|
||||||
|
|
||||||
|
(git* switch branch)
|
||||||
|
; passes "branch"
|
||||||
|
|
||||||
|
(git* switch (eval branch))
|
||||||
|
; passes "develop"
|
||||||
|
]
|
||||||
|
|
||||||
|
This distinction matters most for git-cli commands whose arguments are not
|
||||||
|
ordinary Git command-line strings. Such wrappers should accept the textual
|
||||||
|
arguments produced by @racket[git*]. For example, @racket[git-new-version] now
|
||||||
|
accepts both symbols and text:
|
||||||
|
|
||||||
|
@racketblock[
|
||||||
|
(git 'new-version 'min)
|
||||||
|
(git* new-version min)
|
||||||
|
]
|
||||||
|
|
||||||
Because @racket[git] falls back to direct Git execution for commands without a
|
Because @racket[git] falls back to direct Git execution for commands without a
|
||||||
registered wrapper, @racket[git*] can also be used with those commands.
|
registered wrapper, @racket[git*] can also be used with those commands.
|
||||||
|
|
||||||
@@ -639,6 +663,16 @@ Updates the version in @filepath{info.rkt}. The kind is @racket['major],
|
|||||||
abbreviations. The result is the new version as a list of three integers.
|
abbreviations. The result is the new version as a list of three integers.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@racketblock[
|
||||||
|
(git-new-version 'min)
|
||||||
|
(git 'new-version 'min)
|
||||||
|
(git* new-version min)
|
||||||
|
]
|
||||||
|
|
||||||
|
The version kind may be supplied as a symbol or string. This makes the command
|
||||||
|
compatible with @racket[git*], whose bare arguments are converted to text.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@section{Low-level Git execution}
|
@section{Low-level Git execution}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user