After a couple of weeks now of pretty intense hacking things are finally starting to come together.
I think everything I have been working on is operational and I just need to update the sbt plugin and release it, which I should be able to do by tomorrow unless something comes up.
Sorry for all the delays, but it is only me working on this right now, which means that if I have a bad/unproductive day or if I have a client that needs me I will get slowed down.
What you should be able to do in sbt is:
ah install akka-actor
which searches your local repositories and AdeptHub for a unique module called 'akka-actor' , resolves the new graph and creates a lockfile. The lockfile contains the requirements (dependencies) you have, the context (the state at the time you resolved, aka the commit of the repositories, locations of the repositories, the hashes of the metadata you ended up with) and a list of artifact hashes (SHA 256) as well as their download locations. Although that sounds complex, it is designed to be give you maximum speed, because there is no resolution required when you load up you project unless you change something and it makes it possible to do parallell download of artifacts (from multiple locations). It is also designed for maximum reliability because even if you resolve again or with a new set of requirements, Adept will base it on EXACTLY what you had before.compile
which now will download the artifacts if the hashes do not exists locally.ah ivy-install "foo" %% "bar" % "1.0"
which imports from Ivy and puts the metadata in a local (unversioned) directory. If a module with the same coordinates is available it will ignore the import and use get the metadata from AdeptHub (unless you force it to import or if you are using a SNAPSHOT).ah contribute-imports
which uploads the imports to AdeptHub and downloads the versioned metadata from AdeptHub and deletes you local imports. By doing this you do not need the imported metadata if you push you code and it will be more reliable and faster (because reading from Git is faster than the file system and easily cachable) in addition to helping out others so they will not need to do this anymore. On AdeptHub I will make it possible to manage imports smoothly, but for now everything is accepted.Once this is out the next step for me is to start cleaning up the code a bit, and make it possible to manage repositories/modules on AdeptHub so that you can set binary versions of things. Since metadata is versioned, users will be able to choose when you are ready to update (I will add a notification mechanism as well, so you will see when something new is available).
On the sbt plugin I will add an upgrade command, which will take you to the latest binary compatible version of modules that have binary versions. The upgrade command will also replace any snapshot you have with a newer one.
I will try to be better at keeping you posted so as soon as the release is out I will ping this mailing list again.