0cd848f60230

Expunge Roswell
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Sat, 04 Nov 2017 13:49:49 -0400
parents bb25eaad4d17
children 7ebe839363e8
branches/tags (none)
files Makefile build/magitek.ros magitek.asd src/build.lisp src/main.lisp vendor/make-quickutils.lisp vendor/quickutils.lisp

Changes

--- a/Makefile	Sat Nov 04 13:49:42 2017 -0400
+++ b/Makefile	Sat Nov 04 13:49:49 2017 -0400
@@ -1,4 +1,4 @@
-.PHONY: vendor binary
+.PHONY: vendor binary clean
 
 # Vendor ----------------------------------------------------------------------
 vendor/quickutils.lisp: vendor/make-quickutils.lisp
@@ -6,20 +6,27 @@
 
 vendor: vendor/quickutils.lisp
 
+# Clean -----------------------------------------------------------------------
+clean:
+	rm -rf bin
 
 # Build -----------------------------------------------------------------------
 lisps := $(shell ffind '\.(asd|lisp|ros)$$')
 
-binary: build/magitek
+binary: bin/magitek
 
-build/magitek: $(lisps)
-	ros build build/magitek.ros
+bin/magitek: $(lisps)
+	sbcl --load "src/build.lisp"
 
+# Deploy ----------------------------------------------------------------------
+
+# Server
 update-deps:
-	hg -R /home/sjl/chancery -v pull -u
-	hg -R /home/sjl/cl-losh -v pull -u
+	hg -R /home/sjl/lib/cl-losh -v pull -u
+	hg -R /home/sjl/lib/chancery -v pull -u
 
+# Local
 deploy: build/magitek
-	rsync --exclude=build/magitek --exclude=.hg --exclude=database.sqlite --exclude=corpora -avz . jam:/home/sjl/magitek
-	ssh jam make -C /home/sjl/magitek update-deps
-	ssh jam make -C /home/sjl/magitek build/magitek
+	rsync --exclude=bin --exclude=.hg --exclude=database.sqlite  -avz . jam:/home/sjl/magitek
+	ssh jam make -C /home/sjl/magitek update-deps binary
+
--- a/build/magitek.ros	Sat Nov 04 13:49:42 2017 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-#!/bin/sh
-#|-*- mode:lisp -*-|#
-#|
-exec ros -Q -- $0 "$@"
-|#
-
-
-(unless (find-package :ap)
-  (ql:quickload '(:magitek) :silent t))
-
-(declaim (optimize (debug 2) (safety 2) (speed 1)))
-
-(defun main (&rest argv)
-  (declare (ignore argv))
-  (setf *random-state* (make-random-state t))
-  (magitek:main)
-  t)
--- a/magitek.asd	Sat Nov 04 13:49:42 2017 -0400
+++ b/magitek.asd	Sat Nov 04 13:49:49 2017 -0400
@@ -22,6 +22,11 @@
 
                )
 
+  :defsystem-depends-on (:deploy)
+  :build-operation "deploy-op"
+  :build-pathname "magitek"
+  :entry-point "magitek:main"
+
   :serial t
   :components ((:module "vendor" :serial t
                 :components ((:file "quickutils-package")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/build.lisp	Sat Nov 04 13:49:49 2017 -0400
@@ -0,0 +1,6 @@
+(ql:quickload '(:deploy :magitek))
+
+;; (deploy:define-resource-directory assets "assets/")
+
+(sb-ext:gc :full t)
+(asdf:operate :build-op :magitek)
--- a/src/main.lisp	Sat Nov 04 13:49:42 2017 -0400
+++ b/src/main.lisp	Sat Nov 04 13:49:49 2017 -0400
@@ -41,7 +41,7 @@
     (finding (funcall generator) :such-that #'tt-tweetable-p)))
 
 
-(defun run-bot (bot &key (force nil))
+(defun run-bot (bot &key (force nil) (dry nil))
   (with-bot (bot)
     (format t "Running ~S~%" name)
     (when (or force
@@ -52,8 +52,9 @@
           (progn
             (format t "Tweeting as ~S: ~S~%" name tweet)
             (db-insert-tweet name tweet)
-            (tt-tweet name tweet)
-            (sleep 5.0)))))))
+            (unless dry
+              (tt-tweet name tweet)
+              (sleep 5.0))))))))
 
 
 (defun spinup ()
--- a/vendor/make-quickutils.lisp	Sat Nov 04 13:49:42 2017 -0400
+++ b/vendor/make-quickutils.lisp	Sat Nov 04 13:49:49 2017 -0400
@@ -4,18 +4,14 @@
   "quickutils.lisp"
   :utilities '(
 
-               :compose
                :curry
                :ensure-boolean
                :ensure-gethash
-               :ensure-list
                :n-grams
                :once-only
                :rcurry
-               :read-file-into-string
                :symb
                :with-gensyms
-               :write-string-into-file
 
                )
   :package "MAGITEK.QUICKUTILS")
--- a/vendor/quickutils.lisp	Sat Nov 04 13:49:42 2017 -0400
+++ b/vendor/quickutils.lisp	Sat Nov 04 13:49:49 2017 -0400
@@ -2,7 +2,7 @@
 ;;;; See http://quickutil.org for details.
 
 ;;;; To regenerate:
-;;;; (qtlc:save-utils-as "quickutils.lisp" :utilities '(:COMPOSE :CURRY :ENSURE-BOOLEAN :ENSURE-GETHASH :ENSURE-LIST :N-GRAMS :ONCE-ONLY :RCURRY :READ-FILE-INTO-STRING :SYMB :WITH-GENSYMS :WRITE-STRING-INTO-FILE) :ensure-package T :package "MAGITEK.QUICKUTILS")
+;;;; (qtlc:save-utils-as "quickutils.lisp" :utilities '(:CURRY :ENSURE-BOOLEAN :ENSURE-GETHASH :N-GRAMS :ONCE-ONLY :RCURRY :SYMB :WITH-GENSYMS) :ensure-package T :package "MAGITEK.QUICKUTILS")
 
 (eval-when (:compile-toplevel :load-toplevel :execute)
   (unless (find-package "MAGITEK.QUICKUTILS")
@@ -14,14 +14,10 @@
 
 (when (boundp '*utilities*)
   (setf *utilities* (union *utilities* '(:MAKE-GENSYM-LIST :ENSURE-FUNCTION
-                                         :COMPOSE :CURRY :ENSURE-BOOLEAN
-                                         :ENSURE-GETHASH :ENSURE-LIST :TAKE
-                                         :N-GRAMS :ONCE-ONLY :RCURRY
-                                         :WITH-OPEN-FILE* :WITH-INPUT-FROM-FILE
-                                         :READ-FILE-INTO-STRING :MKSTR :SYMB
-                                         :STRING-DESIGNATOR :WITH-GENSYMS
-                                         :WITH-OUTPUT-TO-FILE
-                                         :WRITE-STRING-INTO-FILE))))
+                                         :CURRY :ENSURE-BOOLEAN :ENSURE-GETHASH
+                                         :TAKE :N-GRAMS :ONCE-ONLY :RCURRY
+                                         :MKSTR :SYMB :STRING-DESIGNATOR
+                                         :WITH-GENSYMS))))
 (eval-when (:compile-toplevel :load-toplevel :execute)
   (defun make-gensym-list (length &optional (x "G"))
     "Returns a list of `length` gensyms, each generated as if with a call to `make-gensym`,
@@ -46,35 +42,6 @@
         (fdefinition function-designator)))
   )                                        ; eval-when
 
-  (defun compose (function &rest more-functions)
-    "Returns a function composed of `function` and `more-functions` that applies its ;
-arguments to to each in turn, starting from the rightmost of `more-functions`,
-and then calling the next one with the primary value of the last."
-    (declare (optimize (speed 3) (safety 1) (debug 1)))
-    (reduce (lambda (f g)
-              (let ((f (ensure-function f))
-                    (g (ensure-function g)))
-                (lambda (&rest arguments)
-                  (declare (dynamic-extent arguments))
-                  (funcall f (apply g arguments)))))
-            more-functions
-            :initial-value function))
-
-  (define-compiler-macro compose (function &rest more-functions)
-    (labels ((compose-1 (funs)
-               (if (cdr funs)
-                   `(funcall ,(car funs) ,(compose-1 (cdr funs)))
-                   `(apply ,(car funs) arguments))))
-      (let* ((args (cons function more-functions))
-             (funs (make-gensym-list (length args) "COMPOSE")))
-        `(let ,(loop for f in funs for arg in args
-                     collect `(,f (ensure-function ,arg)))
-           (declare (optimize (speed 3) (safety 1) (debug 1)))
-           (lambda (&rest arguments)
-             (declare (dynamic-extent arguments))
-             ,(compose-1 funs))))))
-  
-
   (defun curry (function &rest arguments)
     "Returns a function that applies `arguments` and the arguments
 it is called with to `function`."
@@ -110,13 +77,6 @@
            (values (setf (gethash ,key ,hash-table) ,default) nil))))
   
 
-  (defun ensure-list (list)
-    "If `list` is a list, it is returned. Otherwise returns the list designated by `list`."
-    (if (listp list)
-        list
-        (list list)))
-  
-
   (defun take (n sequence)
     "Take the first `n` elements from `sequence`."
     (subseq sequence 0 n))
@@ -187,58 +147,6 @@
         (multiple-value-call fn (values-list more) (values-list arguments)))))
   
 
-  (defmacro with-open-file* ((stream filespec &key direction element-type
-                                                   if-exists if-does-not-exist external-format)
-                             &body body)
-    "Just like `with-open-file`, but `nil` values in the keyword arguments mean to use
-the default value specified for `open`."
-    (once-only (direction element-type if-exists if-does-not-exist external-format)
-      `(with-open-stream
-           (,stream (apply #'open ,filespec
-                           (append
-                            (when ,direction
-                              (list :direction ,direction))
-                            (when ,element-type
-                              (list :element-type ,element-type))
-                            (when ,if-exists
-                              (list :if-exists ,if-exists))
-                            (when ,if-does-not-exist
-                              (list :if-does-not-exist ,if-does-not-exist))
-                            (when ,external-format
-                              (list :external-format ,external-format)))))
-         ,@body)))
-  
-
-  (defmacro with-input-from-file ((stream-name file-name &rest args
-                                                         &key (direction nil direction-p)
-                                                         &allow-other-keys)
-                                  &body body)
-    "Evaluate `body` with `stream-name` to an input stream on the file
-`file-name`. `args` is sent as is to the call to `open` except `external-format`,
-which is only sent to `with-open-file` when it's not `nil`."
-    (declare (ignore direction))
-    (when direction-p
-      (error "Can't specifiy :DIRECTION for WITH-INPUT-FROM-FILE."))
-    `(with-open-file* (,stream-name ,file-name :direction :input ,@args)
-       ,@body))
-  
-
-  (defun read-file-into-string (pathname &key (buffer-size 4096) external-format)
-    "Return the contents of the file denoted by `pathname` as a fresh string.
-
-The `external-format` parameter will be passed directly to `with-open-file`
-unless it's `nil`, which means the system default."
-    (with-input-from-file
-        (file-stream pathname :external-format external-format)
-      (let ((*print-pretty* nil))
-        (with-output-to-string (datum)
-          (let ((buffer (make-array buffer-size :element-type 'character)))
-            (loop
-              :for bytes-read = (read-sequence buffer file-stream)
-              :do (write-sequence buffer datum :start 0 :end bytes-read)
-              :while (= bytes-read buffer-size)))))))
-  
-
   (defun mkstr (&rest args)
     "Receives any number of objects (string, symbol, keyword, char, number), extracts all printed representations, and concatenates them all into one string.
 
@@ -299,36 +207,8 @@
 unique symbol the named variable will be bound to."
     `(with-gensyms ,names ,@forms))
   
-
-  (defmacro with-output-to-file ((stream-name file-name &rest args
-                                                        &key (direction nil direction-p)
-                                                        &allow-other-keys)
-                                 &body body)
-    "Evaluate `body` with `stream-name` to an output stream on the file
-`file-name`. `args` is sent as is to the call to `open` except `external-format`,
-which is only sent to `with-open-file` when it's not `nil`."
-    (declare (ignore direction))
-    (when direction-p
-      (error "Can't specifiy :DIRECTION for WITH-OUTPUT-TO-FILE."))
-    `(with-open-file* (,stream-name ,file-name :direction :output ,@args)
-       ,@body))
-  
-
-  (defun write-string-into-file (string pathname &key (if-exists :error)
-                                                      if-does-not-exist
-                                                      external-format)
-    "Write `string` to `pathname`.
-
-The `external-format` parameter will be passed directly to `with-open-file`
-unless it's `nil`, which means the system default."
-    (with-output-to-file (file-stream pathname :if-exists if-exists
-                                               :if-does-not-exist if-does-not-exist
-                                               :external-format external-format)
-      (write-sequence string file-stream)))
-  
 (eval-when (:compile-toplevel :load-toplevel :execute)
-  (export '(compose curry ensure-boolean ensure-gethash ensure-list n-grams
-            once-only rcurry read-file-into-string symb with-gensyms
-            with-unique-names write-string-into-file)))
+  (export '(curry ensure-boolean ensure-gethash n-grams once-only rcurry symb
+            with-gensyms with-unique-names)))
 
 ;;;; END OF quickutils.lisp ;;;;