36 lines
1.0 KiB
Racket
36 lines
1.0 KiB
Racket
#lang racket
|
|
(require racket/system
|
|
"dirstruct.rkt"
|
|
"status.rkt"
|
|
(except-in "diff.rkt"
|
|
log-different?)
|
|
"path-utils.rkt"
|
|
"cache.rkt"
|
|
"config.rkt")
|
|
|
|
(define event-print
|
|
(match-lambda
|
|
[(struct stdout (bs))
|
|
(display bs) (newline)]
|
|
[(struct stdout (bs))
|
|
(display bs (current-error-port)) (newline)]))
|
|
|
|
(define (render-output-diff r1 r2 f)
|
|
(define l1 (status-output-log (read-cache (build-path (revision-log-dir r1) f))))
|
|
(define l2 (status-output-log (read-cache (build-path (revision-log-dir r2) f))))
|
|
|
|
(for ([d (in-list (render-log-difference l1 l2))])
|
|
(match d
|
|
[(struct difference (e1 e2))
|
|
(printf "! ")
|
|
(event-print e1)]
|
|
[(struct same-itude (e))
|
|
(printf " ")
|
|
(event-print e)])))
|
|
|
|
(command-line #:program "diffcmd"
|
|
#:args (rev1 rev2 filename)
|
|
(render-output-diff (string->number rev1)
|
|
(string->number rev2)
|
|
filename))
|