7c8efaf8 |
#!/usr/bin/env -S 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)
|