-
-
Notifications
You must be signed in to change notification settings - Fork 156
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add a simple package manager for lisp/lem libraries #1249
base: main
Are you sure you want to change the base?
Conversation
- It can define a git source - Download it from master - Load it with ql
src/ext/simple-package.lisp
Outdated
|
||
(defun packages-list () | ||
(remove-duplicates | ||
(mapcar #'(lambda (d) (pathname (directory-namestring d))) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm pretty sure #'
in front of lambda
is old style and not necessary.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Indeed, I think this was some GNU Emacs flashback 😆
and my feedback:
|
Ummm, I think simple-package is good enough, I'm not that creative when it comes to names 😅
I wanted the error to just rise to the interface (which Lem can handle and show to the user), maybe I can catch some and improve
Indeed I don't think it's necessary the
spackage = simple-package They are kind of inferred from the context, but indeed this style of naming is not usual.
Indeed, I'll move the flet to a separate, about the call-with-pattern, I'll add it for the configuration of the downloaded
Indeed! I'm planning to document everything, I just wanted the feedback of Sasaki-san first maybe he wish to make some changes or have other requests. |
then a simple variable not instantiated, to check with |
I'm using it as a constant basically (not really a constant, but is not meant to change), it should get populated when compiling, which given the rate of update of quicklisp should be enough I think. I'll add a command to update the packages list in the future. |
so there can be a difference between the compile-time list and the user's Quicklisp dist. It's maybe less an issue than I think, specially with a command to update it. no more questions and remarks, thanks. Great addition. |
There is an interesting problem that I would have to address. When calling the So, my idea is to do a macro-reader to load the package at |
So, to not add more complexity, I just added a function to load the initial files (instead of doing it using a custom asd system). This will allow to load the file at read time with the built-in read macro
(in this example, the file has to be loaded, otherwise the reader may fail if it load the file from the cache) |
I changed the name of the commands to use the prefix |
So I think the functionality of this PR is finish and ready for testing. I'll document everything in the webpage after merge-time :) |
This is the initial proposal of a simple package manager, this implementations contains the following features:
lem-declarative.mp4
command-installation.mp4
I chose to use a folder in "~/.lem/packages" to save the packages, the dependencies of the packages will be managed by quicklisp. This approach helps developing external packages while using Lem (I can load packages from git, modify them and push the changes to the package repository).
I'm planning to extend the
lem-use-package
options in the future to add more useful features.(The idea of this simple approach is to just have something to manage packages until https://github.com/lem-project/lem-extension-manager is finished)