This refactoring is about cleaning up the code and separating it into smaller files (think modules). We begin to change the internal API to always receive PACKAGE as a symbol, and the main change is how we deal with the dependencies. Rather than allow parallel async operations to happen, we solve the dependencies upfront by doing a topological sort of the :depends we recursively read in the recipe files. That allows us to then install only one package at a time and to avoid initializing the same package twice in case of multiple reverse depends in the selection. That in turns allows to simplify the autoload and the main install code a lot and goes a long way to fix the bug from issue #400 where a package is said installed but its autoload are not yet available. The el-get-methods are also splitted each into their own file and the new function `el-get-register-method' allows to easily add some more privately if necessary, and should ease contributing new ones too. This refactoring merge also brings in some test cases. The main reason why we can merge such a big refactoring now is that the master's branch targets el-get contributors or elisp hackers that will handle the breakage. The el-get-install.el installer file is targeting the branch "3.stable" where things still work. This all new setting of the code is intended for release 4.1, not before. Conflicts: el-get.el
There's a difference between 'package and :package even if both are symbolp.
Note that the new dependencies code ensures that we have only one package currently installing at any time, so that we don't need timer and defered autoloads updating anymore. That simplifies the code a lot, and I think it fixes issue #400, will check that next.
Manual "backport" of 1cbff4a.
This includes teaching methods that they now work with a symbolp PACKAGE, some more cleaning up, and some load-path adjustments now that a part of the code is in a subdirectory (methods). Also include some of the tests used to convince oneself that the refactoring didn't break any and all use cases for el-get, with some rough documentation about how to use them.
Fixes installation failure on cases when $HOME contains spaces. Signed-off-by: Dimitri Fontaine <firstname.lastname@example.org>
This refactoring branch will need some testing at some point…