|
170 | 170 | (update-system-file-index) |
171 | 171 | (let ((wins (find-more-winning-systems source))) |
172 | 172 | (list :fails (missing-components source) |
173 | | - :wins wins))) |
| 173 | + :wins wins))) |
174 | 174 |
|
175 | 175 | (defun source-pathname (project-name) |
176 | 176 | (let ((directory `(:relative "quicklisp-controller" |
|
225 | 225 | :parallel parallel))) |
226 | 226 | (if file |
227 | 227 | (with-open-file (stream file :direction :output |
228 | | - :if-exists :rename-and-delete) |
| 228 | + :if-exists :rename-and-delete) |
229 | 229 | (action (make-broadcast-stream *standard-output* stream))) |
230 | 230 | (action *standard-output*)))) |
231 | 231 |
|
|
330 | 330 |
|
331 | 331 | (defparameter *project-name-guessers* |
332 | 332 | '("/.*?/([^/]*)\\.git$" |
| 333 | + "github.com/.*?/(.*?)/" |
333 | 334 | "//(.*?).googlecode.com" |
334 | 335 | "//(.*?).git.sourceforge" |
335 | 336 | "code.sf.net/p/([^/]+)/" |
|
341 | 342 | (defparameter *project-type-guessers* |
342 | 343 | '((":pserver:" . "cvs") |
343 | 344 | ("dwim\\.hu" . "darcs") |
| 345 | + ("github.com.*/tree/" . "branched-git") |
344 | 346 | ("git" . "git") |
345 | 347 | ("wcp\\.sdf-eu" . "wcpware-http") |
346 | 348 | ("bitbucket.org" . "mercurial") |
|
349 | 351 | ("hg.code.sf.net" . "mercurial") |
350 | 352 | ("(\\.tar\\.gz|\\.tgz)$" . "http"))) |
351 | 353 |
|
| 354 | +(defparameter *project-data-guessers* |
| 355 | + '("github.com/.*/tree/(.*)$")) |
| 356 | + |
352 | 357 | (defun guess-project-name (url) |
353 | 358 | (dolist (pattern *project-name-guessers*) |
354 | 359 | (ppcre:register-groups-bind (name) (pattern url) |
|
357 | 362 | (defun guess-project-type (url) |
358 | 363 | (loop for (pattern . type) in *project-type-guessers* |
359 | 364 | 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))) |
361 | 377 |
|
362 | 378 | (defun project-source-filename (project-name) |
363 | 379 | (merge-pathnames (make-pathname :directory (list :relative project-name)) |
|
366 | 382 | (defun add-project (url &key name type data) |
367 | 383 | (let ((name (or name (guess-project-name url))) |
368 | 384 | (type (or type (guess-project-type url))) |
| 385 | + (data (or data (guess-project-data url ))) |
369 | 386 | (*system-metadata-required-p* t)) |
| 387 | + (setf url (maybe-rewrite-url url type)) |
370 | 388 | (tagbody |
371 | 389 | :retry |
372 | 390 | (unless type |
373 | 391 | (error "Can't guess project type")) |
374 | 392 | (unless name |
375 | 393 | (error "Can't guess project name")) |
376 | 394 | (when (equal name "") |
377 | | - (error "Name can't be empty")) |
| 395 | + (error "Name can't be empty")) |
378 | 396 | (let ((file (project-source-filename name))) |
379 | 397 | (restart-case |
380 | 398 | (when (probe-file file) |
|
466 | 484 |
|
467 | 485 | (defun absent-dependencies-report (dist) |
468 | 486 | (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)))) |
471 | 489 | (unless (< 0.5 ratio ) |
472 | 490 | (format t "ONLY ~$% OF SYSTEMS WITH DEPENDENCIES!" |
473 | | - (* ratio 100))))) |
| 491 | + (* ratio 100))))) |
474 | 492 |
|
475 | 493 | (defparameter *sanity-check-reports* |
476 | 494 | '(unprovided-required-systems-report |
|
491 | 509 | (defun tool-versions-match () |
492 | 510 | (let ((sbcl-version (run-output-line "sbcl" :version)) |
493 | 511 | (depcheck-version (ignore-errors (run-output-line "depcheck" |
494 | | - :sbcl-version)))) |
| 512 | + :sbcl-version)))) |
495 | 513 | (string= sbcl-version depcheck-version |
496 | 514 | :start1 (1+ (position #\Space sbcl-version))))) |
497 | 515 |
|
|
0 commit comments