{"push_id":983585486,"size":18,"distinct_size":18,"ref":"refs/heads/zim-package-manager","head":"cd9140565adfbd8060affee4ab8243ab29d5340d","before":"66c5ce1c8c01162775b00c1bc984445cf1dc4490","commits":[{"sha":"add3e5c4a9e5ae1f07e9f5cefeaf35ff337d43a6","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Implement remote source management\n\nWe are implementing a content manager, which will be able to download\nand install apps and content coming from remote sources.\n\nThis commit introduces the Catalog object, which is going to be our\nactual package manager.\n\nFor now, all it can do is list known remote sources, add new ones and\nremove known ones.","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/add3e5c4a9e5ae1f07e9f5cefeaf35ff337d43a6"},{"sha":"5313b8acacc2ba3e40ed262e84f34298cfc049ae","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Introduce the content manager cli\n\nWe are implementing a content manager, which will be able to download\nand install apps and content coming from remote sources.\n\nThis commit adds a new Django command, which lets us manage remote\nsources for the catalog.","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/5313b8acacc2ba3e40ed262e84f34298cfc049ae"},{"sha":"559d46000ff3aa3ede5785d578816a3eeeb7bfab","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Implement cache management\n\nWe are implementing a content manager, which will be able to download\nand install apps and content coming from remote sources.\n\nThis commit improves the Catalog object, so that it is capable of\ndownloading from each of its remote sources the metadata representing\nthe content they make available, and keep it as local cache.\n\nWe can also clear the local cache, at which point no content seems to be\navailable any more, until the next cache update.\n\nThis commit also brings in a (completely untested) method to print a\npretty progress bar for downloads. Eventually this needs to be\nimplemented better, maybe plugged to a more central reporting in\nideascube.","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/559d46000ff3aa3ede5785d578816a3eeeb7bfab"},{"sha":"a78dcaba0db2220cbf5683248d7d07fe6b6e51c2","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Allow managing the cache from the cli\n\nWe are implementing a content manager, which will be able to download\nand install apps and content coming from remote sources.\n\nThis commit brings cache management to the catalog command line tool.","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/a78dcaba0db2220cbf5683248d7d07fe6b6e51c2"},{"sha":"468525317ed6572eadbe4aafa4751ab4c4212ac3","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Help the user a bit\n\nWhen adding a remote, let's automatically update the cache.\n\nAnd when removing a remote, let's do it as well.\n\nUsers will be pleased.","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/468525317ed6572eadbe4aafa4751ab4c4212ac3"},{"sha":"4d90c2416f80ff2b90a32e850eb5a161027caff7","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Represent packages\n\nWe are implementing a content manager, which will be able to download\nand install apps and content coming from remote sources.\n\nThis commit finally gives us an object to represent app and content\npackages.\n\nSoon we'll be able to install them!","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/4d90c2416f80ff2b90a32e850eb5a161027caff7"},{"sha":"b6ff51d44bdb074baf6b40a40e04d498e3d5d942","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Add a package type registry\n\nWe are going to be able to handle certain types of packages, and each\ntype might need different instructions to be installed, updated, or\nremoved.\n\nThis commit adds a registry of supported package types, as well as a\nfirst type: ZippedZim packages for Kiwix.","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/b6ff51d44bdb074baf6b40a40e04d498e3d5d942"},{"sha":"b89e3cb18c8571107ff1e09b430e3f077a583eaf","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Implement zipped zim package management\n\nWe can now install and remove zipped zim packages, downloading them\nmanually from Kiwix and then using the API.\n\nEventually we'll be able to do all that automatically via the\ncommand-line, though.","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/b89e3cb18c8571107ff1e09b430e3f077a583eaf"},{"sha":"4c70715328001ef0565f013045e906ace37626e6","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Represent package handlers\n\nJust like we will have various types of packages, each with its way of\nbeing installed, we will also have various types of package handlers.\n\nFor example, we could imagine installing zipped zim packages for Kiwix,\nor for another application consuming the same file types.\n\nThis commit introduces the concept of package handlers, with a base\nHandler class and a dedicated Kiwix handler (since that's what we're\nabout to implement)\n\nThe Handler base class has a registry of known handlers, much like we\nalready do for packages.\n\nHandlers can install and remove packages, by simply asking the package\nto install or remove itself, passing it the right parameters.","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/4c70715328001ef0565f013045e906ace37626e6"},{"sha":"ccd0872fa0f1cc64d8e13d72fc694c5c0ad3dc2d","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Implement kiwix handler post transaction operations\n\nAfter installing or removing a batch of packages, a handler will often\nneed to run some post transaction operations.\n\nIn the case of our kiwix handler, it needs to rebuild the kiwix library\nof installed content, and restart the kiwix service, so that it finds\nthe new content.","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/ccd0872fa0f1cc64d8e13d72fc694c5c0ad3dc2d"},{"sha":"2253fa8288da5bb9545475b49e706a006ffc0b2a","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Implement package installation\n\nFinally, our catalog can now install packages available in a remote\nsource.\n\nThis requires a few bits to be in place, though.\n\nFirst, we add the ability to download a package, and even resume a\nprevious incomplete download, which is great for our users and their\nslow/unstable connections.\n\nDownloaded packages are stored in a local package cache on disk, where\nthey can be reused if needed, to avoid the need to download again. Disk\nspace is much cheeper than network bandwidth for our users.\n\nThe local package cache part looks a bit weird right now, as if we could\nhave more than one? That's going to make sense suddenly in a future\ncommit.\n\nThe catalog receives a list of package ids, and from that it\ninstantiates the corresponding Package objects, the proper Handler\nobject(s) for these packages, then ask the handler(s) to install the\npackages, and finally to run their post transaction tasks.","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/2253fa8288da5bb9545475b49e706a006ffc0b2a"},{"sha":"4697ef24fbff58315f9dc907b4aa04ee2cac0dc3","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Implement package removal\n\nAnd now our catalog can remove packages available that it had installed\npreviously.\n\nThe catalog receives a list of package ids, and from that it\ninstantiates the corresponding Package objects, the proper Handler\nobject(s) for these packages, then ask the handler(s) to remove the\npackages, and finally to run their post transaction tasks.","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/4697ef24fbff58315f9dc907b4aa04ee2cac0dc3"},{"sha":"722d8a9e10855f4da6341c33be0d0bfd3f1d7bad","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Implement package update\n\nAnd now our catalog can update packages available that it had installed\npreviously.\n\nThe catalog receives a list of package ids, and from that it\ninstantiates the corresponding Package objects, the proper Handler\nobject(s) for these packages, then ask the handler(s) to remove the\ninstalled packages, then install the updated one, and finally to run\ntheir post transaction tasks.","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/722d8a9e10855f4da6341c33be0d0bfd3f1d7bad"},{"sha":"4399959f340aad0e9a229fdd02856e57d697cdd3","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Implement package listing\n\nAnd now our catalog can list installed, available or upgradable\npackages.\n\nThe catalog receives a list of package ids, and from that it\ninstantiates the corresponding Package objects and returns them.\n\nThat's not super useful though, because you need to provide the ids of\nthe packages to list explicitly.\n\nIf only we supported globs...","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/4399959f340aad0e9a229fdd02856e57d697cdd3"},{"sha":"d5a99752609e6d0205bcacfa36b7c3aff03fc548","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Support globs for all package operations\n\nHaving to pass the ids of the packages we wanted to list was not very\nuseful, because you need to list packages to know their ids...\n\nThis commit introduces the possibility to use wildcard globs when\nlisting packages, so that we can, say, list all available packages with\nids like 'wikipedia.*'.\n\nThis also finally allows us to list **all** packages, simply by specify\nthe list of ids to list as ['*'].\n\nAnd because of the way the code is organized, without doing anything\nmore, we get support to install, remove and upgrade packages with globs.\n\nSo we can now install all the packages for a given locale:\n\n    catalog.install_packages(['*.tum'])\n\nOr we can even upgrade all the packages at once:\n\n    catalog.upgrade_packages(['*'])","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/d5a99752609e6d0205bcacfa36b7c3aff03fc548"},{"sha":"96fa770db346c5b239ba705998b8da4a0526a311","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Add package management to the cli\n\nThis commit lets us list, install, remove and upgrade packages right\nfrom the Django command line tool.\n\nNow we have an actually useful command line package manager.","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/96fa770db346c5b239ba705998b8da4a0526a311"},{"sha":"752d50dffd603d9f772436aca9200ce29ad4f66b","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Allow specifying additional package caches\n\nOur users often have pretty terrible networks. As such, downloading a\n40GB Wikipedia archive might be very hard for them.\n\nThis gives them an additional possibility: if they somehow managed to\nget the package (downloading it from a place with a faster connection,\ntaking it from the cache of an other Ideascube deployment, etc...), they\ncan now specify the folder containing this package as an additional\npackage cache.\n\nIf they do that, then we won't download the package at all when trying\nto install/update it, we'll just take it from this additional package\ncache.\n\nBecause sometimes, in some places, physically sending a USB disk leads\nto a higher bandwidth than actual downloads.","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/752d50dffd603d9f772436aca9200ce29ad4f66b"},{"sha":"cd9140565adfbd8060affee4ab8243ab29d5340d","author":{"email":"b873478aa5c7f490f41f7fb10dbb7f0ee789f5fc@daitauha.fr","name":"Mathieu Bridon"},"message":"catalog: Help the user a bit\n\nWhen no remote source is configured, they clearly won't see any\navailable package.","distinct":true,"url":"https://api.github.com/repos/ideascube/ideascube/commits/cd9140565adfbd8060affee4ab8243ab29d5340d"}]}