git.fiddlerwoaroof.com
changelog-filter.lisp
7c37909c
 (defpackage :changelog-filter
   (:use :cl :alexandria :serapeum :fw.lu)
   (:export ))
 (in-package :changelog-filter)
 
 (defparameter *changelog-path* "/Users/elangley/WebKit/Source/WebCore/ChangeLog")
 
 (defun get-block (stream)
   (let ((header (read-line stream)))
     (loop for next = (peek-char nil stream nil)
        while (and next (whitespacep next))
        collect (read-line stream) into lines
        finally
          (return (trim-whitespace
                   (string-join (cons header lines)
                                #\newline))))))
 
 (defun main ()
   (let ((*changelog-path* (or (caddr sb-ext:*posix-argv*)
                               *changelog-path*))
         (search-string (cadr sb-ext:*posix-argv*)))
     (handler-case (with-input-from-file (s *changelog-path*)
                     (loop for next-block = (get-block s)
                        when (search search-string next-block :test #'char-equal) do
                          (format t "~&~a~%" next-block)))
       (end-of-file (c) c))))
 
 ;;; sbcl --disable-debugger --no-userinit --load $HOME/quicklisp/setup.lisp --eval '(ql:quickload (list :alexandria :serapeum :fwoar.lisputils))' --load /Users/elangley/git_repos/lisp-sandbox/changelog-filter.lisp --eval "(save-lisp-and-die "'"'"changelog-filter"'"'" :executable t :toplevel #'changelog-filter::main :compression t)"