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))
|