Skip to content

Commit

Permalink
Document how to share libraries manually
Browse files Browse the repository at this point in the history
  • Loading branch information
radeusgd committed Jul 3, 2021
1 parent bdef492 commit dbd1c75
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/libraries/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ Documents in this section describe Enso's library ecosystem.
organizes library versioning.
- [**Repositories:**](./repositories.md) Information on the structure of
repositories providing Enso libraries and Editions.
- [**Sharing Libraries:**](./sharing.md) Information on how to share libraries.
67 changes: 67 additions & 0 deletions docs/libraries/sharing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
layout: developer-doc
title: Sharing Libraries
category: libraries
tags: [libraries, editions, sharing]
order: 3
---

# Sharing Libraries

This document explains how users can share Enso libraries.

<!-- MarkdownTOC levels="2,3" autolink="true" -->

<!-- /MarkdownTOC -->

## 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.

> 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:

```yaml
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.

0 comments on commit dbd1c75

Please sign in to comment.