(defpackage gitano (:use :cl)) (in-package :gitano) (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)))