Browse code
feat: make REF a generic function
Ed L authored on 15/11/2020 19:03:15
Showing 1 changed files
Showing 1 changed files
... | ... |
@@ -6,21 +6,22 @@ |
6 | 6 |
((or pathname string) (namestring |
7 | 7 |
(truename repo))))) |
8 | 8 |
|
9 |
-(defun ref (repo id) |
|
10 |
- "Given a REPOsitory and a ref ID return the ref-id object." |
|
11 |
- (let ((repo-root (root-of repo))) |
|
12 |
- (or (alexandria:when-let ((object-file (loose-object repo id))) |
|
13 |
- (make-instance 'loose-ref |
|
14 |
- :repo repo-root |
|
15 |
- :hash id |
|
16 |
- :file object-file)) |
|
17 |
- (multiple-value-bind (pack offset) (find-object-in-pack-files repo-root id) |
|
18 |
- (when pack |
|
19 |
- (make-instance 'packed-ref |
|
20 |
- :hash id |
|
9 |
+(defgeneric ref (repo id) |
|
10 |
+ (:documentation "Given a REPOsitory and a ref ID return the ref-id object.") |
|
11 |
+ (:method ((repo git-repository) (id string)) |
|
12 |
+ (let ((repo-root (root-of repo))) |
|
13 |
+ (or (alexandria:when-let ((object-file (loose-object repo id))) |
|
14 |
+ (make-instance 'loose-ref |
|
21 | 15 |
:repo repo-root |
22 |
- :offset offset |
|
23 |
- :pack pack)))))) |
|
16 |
+ :hash id |
|
17 |
+ :file object-file)) |
|
18 |
+ (multiple-value-bind (pack offset) (find-object-in-pack-files repo-root id) |
|
19 |
+ (when pack |
|
20 |
+ (make-instance 'packed-ref |
|
21 |
+ :hash id |
|
22 |
+ :repo repo-root |
|
23 |
+ :offset offset |
|
24 |
+ :pack pack))))))) |
|
24 | 25 |
|
25 | 26 |
(defun ensure-ref (thing &optional (repo *git-repository*)) |
26 | 27 |
(typecase thing |