enso/tools/simple-library-server
Pavel Marek 96082c3bae
Remove akka from runtime (#8953)
There are two projects transitively required by `runtime`, that have akka dependencies:
- `downloader`
- `connected-lock-manager`

This PR replaces the `akka-http` dependency in `downloader` by HttpClient from JDK, and splits `connected-lock-manager` into two projects such that there are no akka classes in `runtime.jar`.

# Important Notes
- Simplify the `downloader` project - remove akka.
- Add HTTP tests to the `downloader` project that uses our `http-test-helper` that is normally used for stdlib tests.
- It required few tweaks so that we can embed that server in a unit test.
- Split `connected-lock-manager` project into two projects - remove akka from `runtime`.
- **Native image build fixes and quality of life improvements:**
- Output of `native-image` is captured 743e167aa4
- The output will no longer be intertwined with the output from other commands on the CI.
- Arguments to the `native-image` are passed via an argument file, not via command line - ba0a69de6e
- This resolves an issue on Windows with "Command line too long", for example in https://github.com/enso-org/enso/actions/runs/7934447148/job/21665456738?pr=8953#step:8:2269
2024-02-19 16:39:05 +00:00
..
main.js Remove akka from runtime (#8953) 2024-02-19 16:39:05 +00:00
package-lock.json Enable log-to-file configuration (#7918) 2023-10-02 14:25:09 +02:00
package.json Bump semver from 7.3.7 to 7.5.2 in /tools/simple-library-server (#7113) 2023-07-19 16:16:42 +03:00
README.md Libraries Repository (#1804) 2021-06-22 13:35:15 +02:00

Simple Enso Library Server

A simple server for hosting custom Enso library repositories.

Usage

You need Node.JS to use this version of the server.

To install the dependencies, run npm install in the root directory of the application. Then you can run the main.js file to start the server. See ./main.js --help for available commandline options.

Repository structure

When launching the server, you need to provide it with a directory that is the root of the server. This directory should contain a libraries directory or editions directory (or both). Each of them should have the directory structure as described in the Enso documentation.

For example, the root directory may look like this:

root
├── libraries
│   ├── Foo
│   │   └── Bar
│   │       ├── 1.2.3
│   │       │   ├── meta
│   │       │   │   ├── preview.png
│   │       │   │   └── icon.png
│   │       │   ├── main.tgz
│   │       │   ├── tests.tgz
│   │       │   ├── LICENSE.md
│   │       │   ├── package.yaml
│   │       │   └── manifest.yaml
│   │       └── 1.2.4-SNAPSHOT.2021-06-24
│   │           └── ... # Truncated for clarity
│   └── Standard
│       ├── Base
│       │   └── 1.0.0
│       │       └── ...
│       └── Table
│           └── 1.0.0
│               └── ...
└── editions
    ├── manifest.yaml
    ├── 2021.1.yaml
    ├── foo.yaml
    └── bar.yaml

Then to add this repository as an edition provider you can append http://hostname:port/editions to the edition-providers field in global-config.yaml.

To use libraries from this repository, the editions should define the repository with URL http://hostname:port/libraries.