Skip to content

Commit de39376

Browse files
committed
More heuristics for projects, and untabify.
1 parent bca3544 commit de39376

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

misc.lisp

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@
170170
(update-system-file-index)
171171
(let ((wins (find-more-winning-systems source)))
172172
(list :fails (missing-components source)
173-
:wins wins)))
173+
:wins wins)))
174174

175175
(defun source-pathname (project-name)
176176
(let ((directory `(:relative "quicklisp-controller"
@@ -225,7 +225,7 @@
225225
:parallel parallel)))
226226
(if file
227227
(with-open-file (stream file :direction :output
228-
:if-exists :rename-and-delete)
228+
:if-exists :rename-and-delete)
229229
(action (make-broadcast-stream *standard-output* stream)))
230230
(action *standard-output*))))
231231

@@ -330,6 +330,7 @@
330330

331331
(defparameter *project-name-guessers*
332332
'("/.*?/([^/]*)\\.git$"
333+
"github.com/.*?/(.*?)/"
333334
"//(.*?).googlecode.com"
334335
"//(.*?).git.sourceforge"
335336
"code.sf.net/p/([^/]+)/"
@@ -341,6 +342,7 @@
341342
(defparameter *project-type-guessers*
342343
'((":pserver:" . "cvs")
343344
("dwim\\.hu" . "darcs")
345+
("github.com.*/tree/" . "branched-git")
344346
("git" . "git")
345347
("wcp\\.sdf-eu" . "wcpware-http")
346348
("bitbucket.org" . "mercurial")
@@ -349,6 +351,9 @@
349351
("hg.code.sf.net" . "mercurial")
350352
("(\\.tar\\.gz|\\.tgz)$" . "http")))
351353

354+
(defparameter *project-data-guessers*
355+
'("github.com/.*/tree/(.*)$"))
356+
352357
(defun guess-project-name (url)
353358
(dolist (pattern *project-name-guessers*)
354359
(ppcre:register-groups-bind (name) (pattern url)
@@ -357,7 +362,18 @@
357362
(defun guess-project-type (url)
358363
(loop for (pattern . type) in *project-type-guessers*
359364
when (ppcre:scan pattern url)
360-
return type))
365+
return type))
366+
367+
(defun guess-project-data (url)
368+
(dolist (pattern *project-data-guessers*)
369+
(ppcre:register-groups-bind (data) (pattern url)
370+
(return data))))
371+
372+
(defun maybe-rewrite-url (url type)
373+
(cond ((equal type "branched-git")
374+
(ppcre:regex-replace "/tree/.*$" url ".git"))
375+
(t
376+
url)))
361377

362378
(defun project-source-filename (project-name)
363379
(merge-pathnames (make-pathname :directory (list :relative project-name))
@@ -366,15 +382,17 @@
366382
(defun add-project (url &key name type data)
367383
(let ((name (or name (guess-project-name url)))
368384
(type (or type (guess-project-type url)))
385+
(data (or data (guess-project-data url )))
369386
(*system-metadata-required-p* t))
387+
(setf url (maybe-rewrite-url url type))
370388
(tagbody
371389
:retry
372390
(unless type
373391
(error "Can't guess project type"))
374392
(unless name
375393
(error "Can't guess project name"))
376394
(when (equal name "")
377-
(error "Name can't be empty"))
395+
(error "Name can't be empty"))
378396
(let ((file (project-source-filename name)))
379397
(restart-case
380398
(when (probe-file file)
@@ -466,11 +484,11 @@
466484

467485
(defun absent-dependencies-report (dist)
468486
(let* ((systems (provided-systems (dist dist)))
469-
(no-required-systems (remove-if-not #'required-systems systems))
470-
(ratio (/ (length no-required-systems) (length systems))))
487+
(no-required-systems (remove-if-not #'required-systems systems))
488+
(ratio (/ (length no-required-systems) (length systems))))
471489
(unless (< 0.5 ratio )
472490
(format t "ONLY ~$% OF SYSTEMS WITH DEPENDENCIES!"
473-
(* ratio 100)))))
491+
(* ratio 100)))))
474492

475493
(defparameter *sanity-check-reports*
476494
'(unprovided-required-systems-report
@@ -491,7 +509,7 @@
491509
(defun tool-versions-match ()
492510
(let ((sbcl-version (run-output-line "sbcl" :version))
493511
(depcheck-version (ignore-errors (run-output-line "depcheck"
494-
:sbcl-version))))
512+
:sbcl-version))))
495513
(string= sbcl-version depcheck-version
496514
:start1 (1+ (position #\Space sbcl-version)))))
497515

0 commit comments

Comments
 (0)