git.fiddlerwoaroof.com
sbclrc
d5f3002e
 (defpackage :fwoar.repl-utils
   (:use :cl)
   (:export clone github))
 
 (in-package :cl-user)
 
 (eval-when (:compile-toplevel :load-toplevel :execute)
   (load "~/quicklisp/setup.lisp"))
 
 (eval-when (:compile-toplevel :load-toplevel :execute)
   (ql:quickload :legit)
   (shadow 'load))
 
 (defun load (pathspec &rest args)
   (restart-case (apply #'cl:load pathspec args)
     (retry () (apply #'load pathspec args))))
 
 (defun home-relative-pathname (pathname)
   (merge-pathnames pathname
                    (user-homedir-pathname)))
 
 (pushnew (list "SYS:SITE;**;*.*.*"
                (home-relative-pathname 
                  (make-pathname :directory '(:relative ".sbcl" "site" :wild-inferiors) 
                                 :name :wild 
                                 :type :wild)))
          (logical-pathname-translations "SYS")
          :test #'equal)
 
 (setf (logical-pathname-translations "QL")
       `(("QL:LOCAL-PROJECTS;**;*.*.*" ,(home-relative-pathname #p"quicklisp/local-projects/**/*.*"))
         ("QL:SOFTWARE;**;*.*.*" ,(home-relative-pathname #p"quicklisp/local-projects/**/*.*"))))
 
 (mapcar (lambda (_) 
           (load-logical-pathname-translations 
             (pathname-name _)))
         (directory #p"SYS:SITE;*.translations"))
 
 (defun fwoar.repl-utils:clone (repo name)
   (legit:clone repo
                (translate-logical-pathname (make-pathname :host "QL"
                                                           :directory  (list :absolute
                                                                             "LOCAL-PROJECTS"
                                                                             name)))))
 
 (defun fwoar.repl-utils:github (user repo)
   (fwoar.repl-utils:clone (format nil "https://github.com/~a/~a"
                                   user repo)
                           repo))