diff --git a/repo.lisp b/repo.lisp
index 8a7f105..c1efd97 100644
--- a/repo.lisp
+++ b/repo.lisp
@@ -11,6 +11,8 @@
(:export #:boot
#:clear-repos
#:find-repo
+ #:git
+ #:github
#:install
#:manifest
#:*manifest*
@@ -282,6 +284,9 @@
:uri ,uri
:url ,uri))))))
+(defun git (url &rest initargs)
+ (apply #'make-instance (append (git-repo-uri-handler url) initargs)))
+
;; github repository class
(defclass github-repo (git-repo) ())
@@ -317,6 +322,13 @@
:uri ,(github-uri user name)
:url ,(github-url user name)))))))
+(defun github (user name &rest initargs)
+ (apply #'make-instance 'github-repo
+ :dir user :name name
+ :uri (github-uri user name)
+ :url (github-url user name)
+ initargs))
+
;; repo uri handler
(defparameter *repo-uri-handlers*
@@ -376,18 +388,6 @@
;; repos list
-(defun repos-from-stream (stream)
- (loop for line = (read-line stream nil)
- while line
- for spec = (string-trim *spaces* line)
- unless (string-starts-with "#" spec)
- collect (repo-or-die spec)))
-
-(defun repos-from-file (pathname)
- (with-open-file (in pathname :element-type 'character
- :external-format :utf-8)
- (values (repos-from-stream in) (file-write-date in))))
-
(defmethod install ((repos cons))
(map nil 'install repos))
@@ -423,18 +423,21 @@
(str (manifest-dir manifest) "/repo.manifest"))
(defun manifest-from-file (pathname)
- (multiple-value-bind (repos write-date)
- (repos-from-file pathname)
+ (let ((*repos* nil)
+ (write-date (file-write-date pathname)))
+ (load pathname)
(make-instance 'manifest
:write-date write-date
:dir (dirname pathname)
- :repos repos)))
+ :repos *repos*)))
(defmethod reload-manifest ((manifest manifest))
- (multiple-value-bind (repos write-date)
- (repos-from-file (manifest-file manifest))
+ (let* ((pathname (manifest-file manifest))
+ (*repos* nil)
+ (write-date (file-write-date pathname)))
+ (load pathname)
(setf (manifest-write-date manifest) write-date
- (manifest-repos manifest) repos))
+ (manifest-repos manifest) *repos*))
manifest)
(defmethod maybe-reload-manifest ((manifest manifest))
diff --git a/repo.manifest b/repo.manifest
index 4bbb615..d450ad1 100644
--- a/repo.manifest
+++ b/repo.manifest
@@ -1,66 +1,68 @@
-github:3b/3bmd
-github:AccelerationNet/cl-inflector
-github:KDr2/sb-fastcgi
-github:KDr2/cl-fastcgi
-github:RailsOnLisp/bootstrap
-github:RailsOnLisp/can
-github:RailsOnLisp/font-awesome
-github:RailsOnLisp/gravatar
-github:RailsOnLisp/re
-github:RailsOnLisp/rol-assets
-github:RailsOnLisp/rol-files
-github:RailsOnLisp/rol-server
-github:RailsOnLisp/rol-template
-github:RailsOnLisp/rol-uri
-github:adamczykm/iterate
-github:cffi/cffi
-github:cl-babel/babel
-github:cl-plus-ssl/cl-plus-ssl cl+ssl
-github:dlowe-net/local-time
-github:edicl/chunga
-github:edicl/cl-fad
-github:edicl/cl-ppcre
-github:edicl/cl-unicode
-github:edicl/drakma
-github:edicl/flexi-streams
-github:edicl/hunchentoot
-github:filonenko-mikhail/cl-portaudio
-github:froydnj/chipz
-github:froydnj/ironclad
-github:froydnj/nibbles
-github:gwkkwg/trivial-backtrace
-github:hankhero/cl-json
-github:keithj/deoxybyte-unix
-github:lowh/cl-debug
-github:lowh/exec-js
-github:lowh/lessp
-github:marijnh/parse-js
-github:mishoo/cl-uglify-js
-github:nallen05/rw-ut
-github:nikodemus/esrap
-github:pcostanza/closer-mop
-github:pmai/md5
-github:rpav/c2ffi
-github:rpav/cl-autowrap
-github:sellout/external-program
-github:sharplispers/parse-number
-github:sharplispers/split-sequence
-github:sionescu/bordeaux-threads
-github:slime/slime
-github:thodg/cfg
-github:thodg/cl-bcrypt
-github:thodg/fb
-github:thodg/parse-css
-github:thodg/repo
-github:thodg/str
-github:tpapp/ffa
-github:trivial-features/trivial-features
-github:trivial-garbage/trivial-garbage
-github:trivial-gray-streams/trivial-gray-streams
-github:usocket/usocket
-http://git.kpe.io/cl-base64.git
-http://git.kpe.io/puri.git
-https://gitlab.common-lisp.net/alexandria/alexandria.git
-https://gitlab.common-lisp.net/cl-utilities/cl-utilities.git
-https://gitlab.common-lisp.net/metabang-bind/metabang-bind.git
-https://gitlab.common-lisp.net/rfc2388/rfc2388.git
+;; -*- Lisp -*-
+(in-package :repo-user)
+(github "3b" "3bmd")
+(github "AccelerationNet" "cl-inflector")
+(github "KDr2" "sb-fastcgi")
+(github "KDr2" "cl-fastcgi")
+(github "RailsOnLisp" "bootstrap")
+(github "RailsOnLisp" "can")
+(github "RailsOnLisp" "font-awesome")
+(github "RailsOnLisp" "gravatar")
+(github "RailsOnLisp" "re")
+(github "RailsOnLisp" "rol-assets")
+(github "RailsOnLisp" "rol-files")
+(github "RailsOnLisp" "rol-server")
+(github "RailsOnLisp" "rol-template")
+(github "RailsOnLisp" "rol-uri")
+(github "adamczykm" "iterate")
+(github "cffi" "cffi")
+(github "cl-babel" "babel")
+(github "cl-plus-ssl" "cl-plus-ssl cl+ssl")
+(github "dlowe-net" "local-time")
+(github "edicl" "chunga")
+(github "edicl" "cl-fad")
+(github "edicl" "cl-ppcre")
+(github "edicl" "cl-unicode")
+(github "edicl" "drakma")
+(github "edicl" "flexi-streams")
+(github "edicl" "hunchentoot")
+(github "filonenko-mikhail" "cl-portaudio")
+(github "froydnj" "chipz")
+(github "froydnj" "ironclad")
+(github "froydnj" "nibbles")
+(github "gwkkwg" "trivial-backtrace")
+(github "hankhero" "cl-json")
+(github "keithj" "deoxybyte-unix")
+(github "lowh" "cl-debug")
+(github "lowh" "exec-js")
+(github "lowh" "lessp")
+(github "marijnh" "parse-js")
+(github "mishoo" "cl-uglify-js")
+(github "nallen05" "rw-ut")
+(github "nikodemus" "esrap")
+(github "pcostanza" "closer-mop")
+(github "pmai" "md5")
+(github "rpav" "c2ffi")
+(github "rpav" "cl-autowrap")
+(github "sellout" "external-program")
+(github "sharplispers" "parse-number")
+(github "sharplispers" "split-sequence")
+(github "sionescu" "bordeaux-threads")
+(github "slime" "slime")
+(github "thodg" "cfg")
+(github "thodg" "cl-bcrypt")
+(github "thodg" "fb")
+(github "thodg" "parse-css")
+(github "thodg" "repo")
+(github "thodg" "str")
+(github "tpapp" "ffa")
+(github "trivial-features" "trivial-features")
+(github "trivial-garbage" "trivial-garbage")
+(github "trivial-gray-streams" "trivial-gray-streams")
+(github "usocket" "usocket")
+(git "http://git.kpe.io/cl-base64.git")
+(git "http://git.kpe.io/puri.git")
+(git "https://gitlab.common-lisp.net/alexandria/alexandria.git")
+(git "https://gitlab.common-lisp.net/cl-utilities/cl-utilities.git")
+(git "https://gitlab.common-lisp.net/metabang-bind/metabang-bind.git")
+(git "https://gitlab.common-lisp.net/rfc2388/rfc2388.git")