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