List projects, list commits, wip list diff
This commit is contained in:
commit
3dc33b875a
67
main.lisp
Normal file
67
main.lisp
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
(ql:quickload '("hunchentoot" "caveman2" "spinneret"
|
||||||
|
"djula" "easy-routes" "cl-git"))
|
||||||
|
|
||||||
|
|
||||||
|
(defvar *acceptor* (make-instance 'easy-routes:easy-routes-acceptor
|
||||||
|
:port 1337
|
||||||
|
:document-root #p"www/"))
|
||||||
|
(hunchentoot:start *acceptor*)
|
||||||
|
|
||||||
|
(easy-routes:defroute home ("/" :method :get) ()
|
||||||
|
(format nil "<ul>~{<li><a href=\"/~a\">~:*~a</a></li>~}</ul>" (get-projects)))
|
||||||
|
|
||||||
|
(easy-routes:defroute project ("/:project" :method :get) ()
|
||||||
|
(format nil "<ul>~{<li><a href=\"/~a\">~:*~a</a></li>~}</ul>" (get-master-logs project)))
|
||||||
|
|
||||||
|
(defun get-projects ()
|
||||||
|
(loop for dir in (uiop:subdirectories "/home/joe/Development/")
|
||||||
|
when (uiop:directory-exists-p (merge-pathnames dir ".git"))
|
||||||
|
collect dir into dirs
|
||||||
|
finally (return (mapcar (lambda (d) (first (last (pathname-directory d)))) dirs))))
|
||||||
|
|
||||||
|
(defun get-master-logs (proj-name)
|
||||||
|
(git:with-repository (repository (merge-pathnames "/home/joe/Development/" proj-name))
|
||||||
|
(loop
|
||||||
|
:with walker = (git:revision-walk
|
||||||
|
(git:get-object 'git:reference "refs/heads/master"
|
||||||
|
repository))
|
||||||
|
:for revision = (git:next-revision walker)
|
||||||
|
:until (null revision)
|
||||||
|
:collect (git:message revision))))
|
||||||
|
|
||||||
|
(defun get-diff (proj-name)
|
||||||
|
(git:with-repository (repository (merge-pathnames "/home/joe/Development/" proj-name))
|
||||||
|
(git:make-patch
|
||||||
|
(git:diff (git:get-object 'git:commit "5e43870b11166f972a1de6cc387f3c4bc381894c" repository)
|
||||||
|
(git:get-object 'git:commit "7ed1d2216cf051da937bb6fb05e911a293321876" repository)))))
|
||||||
|
|
||||||
|
(defparameter *repo* (git:open-repository
|
||||||
|
(merge-pathnames #p"Development/odin-6502/" (user-homedir-pathname))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(git:open-repository "/home/joe/Development/cubetimer/")
|
||||||
|
(uiop:directory-exists-p (merge-pathnames "/home/joe/Development/tinyswords/" ".git"))
|
||||||
|
|
||||||
|
(let* ((proj-path (merge-pathnames #p"Development/tinyswords/" (user-homedir-pathname)))
|
||||||
|
(repo (git:open-repository proj-path)))
|
||||||
|
(git:resolve (git:get-object 'git:reference "HEAD" repo)))
|
||||||
|
|
||||||
|
(loop for item in (git:repository-status *repo*)
|
||||||
|
do (when (not (equalp (cadr item) :ignored))
|
||||||
|
(print item)))
|
||||||
|
|
||||||
|
(loop for item in (git:repository-status *repo*)
|
||||||
|
do (when (not (equalp (cadr item) :ignored))
|
||||||
|
(print item)))
|
||||||
|
|
||||||
|
(git:revision-walk (git:get-object 'git:reference "refs/heads/master"
|
||||||
|
(git:open-repository "/home/joe/Development/tinyswords/")))
|
||||||
|
|
||||||
|
(loop for entry in (git:entries (git:reflog (git:get-object 'git:reference "HEAD" *repo*)))
|
||||||
|
do (print (getf (git:committer entry) :email)))
|
||||||
|
|
||||||
|
|
||||||
|
(loop for tag in (git:with-repository (repo "/home/joe/Repositories/emacs/")
|
||||||
|
(git:list-objects 'git:tag repo)))
|
11
www/index.html
Normal file
11
www/index.html
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Hello!</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Hello local server!</h1>
|
||||||
|
<p>
|
||||||
|
We just served our own files.
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
x
Reference in New Issue
Block a user