commit 3dc33b875ae9ac5d1c308f310f6dac5318217644 Author: Joseph Ferano Date: Tue Apr 1 23:19:40 2025 +0800 List projects, list commits, wip list diff diff --git a/main.lisp b/main.lisp new file mode 100644 index 0000000..231a0b4 --- /dev/null +++ b/main.lisp @@ -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 "" (get-projects))) + +(easy-routes:defroute project ("/:project" :method :get) () + (format nil "" (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))) diff --git a/www/index.html b/www/index.html new file mode 100644 index 0000000..82e0bff --- /dev/null +++ b/www/index.html @@ -0,0 +1,11 @@ + + + Hello! + + +

Hello local server!

+

+ We just served our own files. +

+ +