enso/docs/libraries/sharing.md
2021-07-06 00:27:14 +02:00

2.4 KiB

layout title category tags order
developer-doc Sharing Libraries libraries
libraries
editions
sharing
3

Sharing Libraries

This document explains how users can share Enso libraries.

Sharing Privately

To prepare the project for sharing, make sure that it has a proper namespace field set in package.yaml. It should be set to something unique, like your username.

Note

: The field namespace is a temporary workaround and in the near future it will be deprecated and handled mostly automatically. For now however you need to set it properly.

To share an Enso library, all you need to do is to package the project into an archive (for example ZIP) and share it (through e-mail, cloud drive services etc.) with your peers. Now to be able to use the library that was shared with you, you need to extract it to the directory ~/enso/libraries/<namespace>/<Project_Name> (where on Windows ~ should be interpreted as your user home directory). To make sure that the library is extracted correctly, make sure that under the path ~/enso/libraries/<namespace>/<Project_Name>/package.yaml and that its namespace field has the same value as the name of the <namespace> directory.

The below step is not necessary yet, but it will be needed once the editions system is fully integrated, so it is better to perform it for forwards compatibility.

Now you need to set up your project properly to be able to use this unpublished library. The simplest way to do that is to set prefer-local-libraries in your project's package.yaml to true. This will make all libraries from ~/enso/libraries take precedence over published libraries set-up in the edition. Alternatively, if you do not want to override all libraries, but only some of them, you can add a local library override, by adding a proper entry in the libraries section of the edition in your project's package.yaml, like shown below:

edition:
   (...)
   libraries:
     - name: <namespace>.<Project_Name>
       repository: local

Now, you can use your library by adding a proper import to your project:

import <namespace>.<Project_Name>

Publishing

Soon it will be possible to share the libraries through the Marketplace, but it is still a work in progress.