Skip to content

Commit

Permalink
Ensure we create a storage first.
Browse files Browse the repository at this point in the history
  • Loading branch information
Shinmera committed Jan 24, 2025
1 parent 3f1dea9 commit 5ca49a6
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 5 deletions.
20 changes: 15 additions & 5 deletions main.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -261,29 +261,36 @@ Dists:"
(loop for project in (list-projects)
do (format *error-output* "~12t~a ~a~%" (version project) (name project))))))

(defun main/add (url &key type name dist)
(defun main/add (url &key type name dist verbose)
(ensure-storage)
(let* ((name (or name (url-extract-name url)))
(type (intern (string-upcase (or type "git")) "KEYWORD"))
(project (or (project name)
(make-instance 'project :name name :sources `((,type ,url))))))
(progn (when verbose (verbose "Creating new project ~a" name))
(make-instance 'project :name name :sources `((,type ,url)))))))
(dolist (dist (or (enlist dist) (list-dists)) (setf (project name) project))
(when verbose (verbose "Adding project to dist ~a" (name dist)))
(add-project project dist))))

(defun main/add-dist (name &key url)
(defun main/add-dist (name &key url verbose)
(ensure-storage)
(let ((name (intern (string-upcase name) #.*package*)))
(when (dist name)
(error "A dist with this name already exists."))
(when (or (null url) (string= "" url))
(error "A canonical dist URL is required."))
(when verbose (verbose "Creating new dist ~a" name))
(setf (dist name) (make-instance 'dist :name name :url url))))

(defun main/remove (name &key dist)
(defun main/remove (name &key dist verbose)
(let ((project (or (project name)
(error "No project named ~s" name))))
(dolist (dist (or (enlist dist) (list-dists)))
(when verbose (verbose "Removing project from dist ~a" (name dist)))
(remove-project project dist))))

(defun main/replicate (url &key name verbose latest-only skip-archives)
(ensure-storage)
(replicate-dist url :name name
:verbose verbose
:current-version-only latest-only
Expand All @@ -305,6 +312,7 @@ Dists:"
(error "No dist named ~s" dist)))))))

(defun main/install (&key enable (interval "monthly"))
(ensure-storage)
(create-systemd-service :enable enable :interval interval))

(defun main/test (dist &key update verbose jobs)
Expand Down Expand Up @@ -390,7 +398,9 @@ Dists:"
#\j :jobs #\l :latest-only
#\s :skip-archives
#\i :interval #\e :enable)))
(when *storage* (store T T T)))))
(when *storage*
(verbose "Offloading to ~a" *storage*)
(store T T T)))))
(uiop:quit)))

;; Sigh.
Expand Down
5 changes: 5 additions & 0 deletions storage.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@
(when truename
(setf *storage* (open-storage truename T)))))

(defun ensure-storage (&key (file (storage-file)))
(or *storage*
(progn (verbose "Creating storage in ~a" file)
(setf *storage* (open-storage file T)))))

(defmacro without-storing (&body body)
`(let ((*retrieving* T)) ,@body))

Expand Down

0 comments on commit 5ca49a6

Please sign in to comment.