Make it say exactly which operation(s) are required to update the
recipe.
* el-get-status.el (el-get-classify-new-properties): Return a partition
of updates for each operation instead of (dis)allowed lists for a
given operation.
(el-get-diagnosis-properties): Return the required operation(s) instead
of update-p.
(el-get-merge-properties-into-status): Make the warning only suggest to
update if that would actually succeed given the properties needing
updating.
Previously, the recipe in .status.el was only updated on init, since
only some properties are safe for change on init the unsafe ones were
never updated. Therefore, we classify addtional properties as safe fo
change on update, and update .status.el after el-get-update too.
* el-get-core.el (el-get-as-string): Handle number argument.
* el-get-status.el (el-get-status-init-whitelist): Rename from
el-get-status-recipe-update-whitelist.
(el-get-status-update-whitelist): New constant.
(el-get-classify-new-properties): Add OPERATION argument to choose white
whitelist to use. The :builtin property is safe to change if it doesn't
change the :type.
(el-get-diagnosis-properties, el-get-merge-properties-into-status): Add
OPERATION argument.
* el-get.el (el-get-do-init): Call el-get-merge-properties-into-status
with OPERATION 'init.
(el-get-post-update-build): Call el-get-merge-properties-into-status
with OPERATION 'update.
Use defun instead of defun* to interpret keyword args. This let's us be
a bit more forgiving about accepting badly formatted keyword arg
lists (e.g. calls using the signature from before package-status-alist
was removed).
In el-get-do-init and el-get-reload but mark it obsolete. This avoids
an error while updating el-get, since the code doing the updating still
uses the old calling convention.
For the el-get-with-status-sources macro, just keep the argument but
always pass nil when calling it (because the obsolete arg is followed
by &rest args, the calling convention can't be changed in a
distinguishable way).
It seems many functions have an &optional package-status-alist argument
that is never used anywhere.
* el-get-status.el (el-get-package-status-alist,
el-get-package-status-recipes, el-get-read-package-status,
el-get-read-package-status-recipe, el-get-with-status-sources,
el-get-read-cached-recipe, el-get-merge-properties-into-status):
* el-get.el (el-get-init, el-get-do-init, el-get-reload, el-get-remove,
el-get-checksum): Remove &optional package-status-alist argument.
Move more variables to el-get-custom.el, add requires or
declare-functions as needed.
There were a few places that appeared to be actual bugs: wrong or
missing variable names.
Since installation can be asynchronous, refreshing the menu at the end
of el-get-package-menu-execute doesn't help, therefore we update from
el-get-save-package-status instead.
Previously, if a package is listed as installed but it doesn't have a
recipe available, then status file migration would fail with an error
because it requires a recipe to save into the new status format. Now,
when this occurs, it just saves a "dummy" recipe that does nothing
instead. This does not result in any loss of functionality, since
without an available recipe the package in question is unusable
anyway.