forked from quickdocs/quickdocs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshlyfile.lisp
90 lines (73 loc) · 3.67 KB
/
shlyfile.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
;; -*- mode: common-lisp -*-
(defparameter *shlyfile-pathname* (or *load-pathname* *compile-file-pathname*))
(let ((ql-home (probe-file
(merge-pathnames #P"quicklisp/"
(directory-namestring *shlyfile-pathname*)))))
(unless ql-home
(error "Local quicklisp home directory is not found."))
(setf ql:*quicklisp-home* ql-home))
(ql:quickload '(:quickdocs-server :quickdocs-updater :split-sequence :dbi :dbd-mysql :osicat :caveman2-db))
(import 'split-sequence:split-sequence)
(import 'quickdocs.server.config:config)
(import 'caveman.middleware.dbimanager:connect-db)
(use-package :caveman2.db)
(unless (osicat:environment-variable "APP_ENV")
(setf (osicat:environment-variable "APP_ENV") "default"))
(setf (osicat:environment-variable "SHELLY_FILE_PATH") (princ-to-string *shlyfile-pathname*))
#+sbcl(setf sb-impl::*default-external-format* :utf-8)
#+sbcl(setf sb-alien::*default-c-string-external-format* :utf-8)
;; XXX
(setf caveman.middleware.dbimanager::*dbi-manager*
(make-instance 'caveman.middleware.dbimanager::dbi-manager
:database-settings (config :databases)))
(defun start (&key (port 8080)
(server :fcgi)
(debug nil))
(flet ((start (&rest args)
(apply #'quickdocs.server:start
:debug debug :server server args)))
(let ((server-starter-port (asdf::getenv "SERVER_STARTER_PORT")))
(if server-starter-port
(destructuring-bind (port fd)
(split-sequence #\=
(car (split-sequence #\; server-starter-port :count 1)))
(start :port (parse-integer port)
:fd (parse-integer fd)))
(start :port port)))))
(defun insert-release (release-name &optional (dist-version
(ql-dist:version (ql-dist:dist "quicklisp"))))
(quickdocs.updater.util:use-dist-version dist-version)
(quickdocs.updater.project:insert-release
(connect-db)
(ql-dist:find-release release-name)))
(defun update-project-database (&optional (dist-version
(ql-dist:version (ql-dist:dist "quicklisp"))))
(quickdocs.updater.project:update-dist-database (connect-db) dist-version))
(defun update-dependencies (&optional (dist-version
(ql-dist:version (ql-dist:dist "quicklisp"))))
(quickdocs.updater.project:update-dependencies (connect-db) dist-version))
(defun update-cliki-informations (&optional (dist-version
(ql-dist:version (ql-dist:dist "quicklisp"))))
(quickdocs.updater.cliki:update-cliki-informations (connect-db) dist-version))
(defun update-database (&optional (dist-version
(ql-dist:version (ql-dist:dist "quicklisp"))))
(format t "~3&Updating projects.~%")
(update-project-database dist-version)
(format t "~3&Updating dependencies.~%")
(update-dependencies dist-version)
(format t "~3&Updating informations.~%")
(update-cliki-informations dist-version))
(defun parse-dist (&optional (dist-version
(ql-dist:version (ql-dist:dist "quicklisp"))))
(format t "~3&Parsing releases.~%")
(quickdocs.updater.project:parse-dist-releases
(merge-pathnames #P"data/"
(fad:pathname-directory-pathname *shlyfile-pathname*))
dist-version))
(defun update-dist (&optional (dist-version
(ql-dist:version (ql-dist:dist "quicklisp"))))
(update-database dist-version)
(parse-dist dist-version)
(update (connect-db) :preference
(set= :value dist-version)
(where (:= :name "ql-dist-version"))))