elba 0.3.0

elba is a package manager for Idris
Documentation
Resolutions
-----------

A core tenet in elba’s functionality is the idea of **resolutions**. A
resolution is a generic location from which some resource (a package or
a :doc:`package index <./indices>`) can be retrieved. Internally, elba
distinguishes between two types of resolutions:

-  A **direct resolution** refers to a direct location from which a
   resource (either a package or a package index) can be downloaded.
   Direct resolutions themselves can include references to tarballs
   (either on a network somewhere or located on disk), local directories
   on disk, or git repositories.
-  An **index resolution** refers to an index from which information
   about a package’s location can be obtained. The location of the index
   itself must be a direct resolution.

A package can have (and is identified by) either a direct resolution or
an index resolution. A package index is identified by its index
resolution.

Syntax
~~~~~~

In order to refer to these types of direct resolutions, elba has its own
simple syntax for “resolution strings”:

-  Each of the types of direct resolutions has its own syntax:

   -  For a direct resolution which points to a tarball, the resolution
      string must start with the identifier ``tar+`` and include a
      properly-formed URL with either the ``http://``/``https://``
      (referring to a tarball on the network somewhere) or ``file://``
      (referring to a local tarball) schemas:

      ::

         These are all valid:
         tar+http://example.com/asdf.tar.gz
         tar+https://example.com/asdf
         tar+file://../asdf.tar.gz

   -  For a direct resolution which points to a directory on disk, the
      resolution string must start with the identifier ``dir+`` and
      include a properly-formed path to a directory on disk:

      ::

         These are all valid:
         dir+asdf
         dir+./asdf
         dir+../asdf/whatever/subfolder

         On Windows, these would be valid too:
         dir+C:\Users\John\etc

   -  For a direct resolution which points to a git repository, the
      resolution string must start with the identifier ``git+`` and
      provide the URL of the repository in question. Additionally, a git
      ref can be specified as part of the fragment of the URL:

      ::

         These are all valid:
         git+https://github.com/example/doesnt-exist
         git+https://github.com/example/doesnt-exist#master <- use the master branch
         git+https://github.com/example/doesnt-exist#v1.0.0 <- use the "v1.0.0" tag
         git+https://github.com/example/doesnt-exist#a4e13343 <- use the commit "a4e13343"
         git+ssh://git@github.com/example/doesnt-exist <- using ssh instead of https

-  For an index resolution, the resolution string must start with the
   identifier ``index+`` and include the direct resolution of the origin
   of the index:

   ::

      These are all valid
      index+tar+http://example.com/asdf.tar.gz
      index+dir+../asdf/whatever/subfolder
      index+git+ssh://git@github.com/example/doesnt-exist#a4e13343