2ae4ca3e | #!/usr/bin/env sbcl --script |
7fa89c89 | |
2ae4ca3e | (eval-when (:compile-toplevel :load-toplevel :execute) (require :uiop)) |
7fa89c89 | |
2ae4ca3e | (defpackage :fwoar.git-ignore (:use :cl)) |
a8d85c91 | (in-package :fwoar.git-ignore) |
7fa89c89 | |
2ae4ca3e | (defparameter *args* (uiop:command-line-arguments)) |
7fa89c89 | |
a8d85c91 | (defun trim-spaces (string) (string-trim '(#\space #\tab #\newline) string)) (defun get-to-ignore () (format *query-io* "ignore? ") (finish-output *query-io*) (read-line *query-io* nil)) (defun not-terminator (line) (and line (not (string= line "")) (not (string= line ".")))) (defmacro loop-until-done ((line) &body body) `(loop for ,line = (trim-spaces (get-to-ignore)) while (not-terminator ,line) do ,@body)) (with-open-file (s ".gitignore" :direction :output :if-exists :append :if-does-not-exist :create) |
60badcc9 | (fresh-line s) |
2ae4ca3e | (if *args* (format s "~{~a~%~}" *args*) |
a8d85c91 | (loop-until-done (line) (princ line s) (terpri s)))) |
0b19c0da | (uiop:run-program "git add .gitignore" :force-shell t :output :interactive :error-output :interactive) |