license templates

This commit is contained in:
2026-06-28 02:31:34 +03:00
parent dd1f3745de
commit 509f4a44bb
5 changed files with 163 additions and 6 deletions
+19 -5
View File
@@ -1,8 +1,8 @@
(in-package :lspack)
(defparameter *default-author* "")
(defparameter *default-license* "")
(defparameter *default-pathname* "")
(defparameter *default-license* nil)
(defparameter *default-pathname* "src")
(defparameter *default-version* "0.0.0")
(defclass <project> ()
@@ -24,7 +24,7 @@
(license :initarg :project-license
:accessor project-license
:initform *default-license*
:type string)
:type (or keyword null))
(version :initarg :project-version
:accessor project-version
:initform *default-version*
@@ -40,14 +40,14 @@
:project-name "my-project"
:project-author "name"
:project-description "a project"
:project-pathname ""))
:project-license :mit))
(defmethod project-defsystem-write ((project <project>) stream)
(with-slots (name author description license version pathname)
project
(fresh-line stream)
(write-char #\( stream)
(format stream "asdf:defsystem ~S" name)
(format stream "defsystem ~S" name)
(format stream "~& :author ~S" author)
(format stream "~& :description ~S" description)
(format stream "~& :license ~S" license)
@@ -99,9 +99,23 @@
(format out "(defpackage :~a~% (:use :cl))~%" name))
(format *error-output* "~&Created ~S" path))))
(defmethod project-license-create ((project <project>))
(let ((license (get-license (project-license project))))
(unless (null license)
(let ((writer (license-ensure-writer license))
(license-file (uiop:merge-pathnames* (license-file-name license)
(project-root project))))
(unless (null writer)
(with-open-file (out license-file :direction :output
:if-exists :supersede
:if-does-not-exist :create)
(funcall writer project out))
(format *error-output* "~&Created ~S" license-file))))))
(defmethod project-start ((project <project>))
(project-ensure-root project)
(project-defsystem-create project)
(project-license-create project)
(project-ensure-source-directory project)
(project-create-package project))