https://github.com/ponylang/corral
Pony dependency manager tool
https://github.com/ponylang/corral
dependency-manager deps pony-language ponylang
Last synced: 3 months ago
JSON representation
Pony dependency manager tool
- Host: GitHub
- URL: https://github.com/ponylang/corral
- Owner: ponylang
- License: bsd-2-clause
- Created: 2017-07-05T20:29:05.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2025-06-10T18:48:51.000Z (4 months ago)
- Last Synced: 2025-06-20T23:35:22.609Z (4 months ago)
- Topics: dependency-manager, deps, pony-language, ponylang
- Language: Pony
- Homepage: https://ponylang.io
- Size: 4.47 MB
- Stars: 197
- Watchers: 15
- Forks: 21
- Open Issues: 39
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Corral
[Pony](https://ponylang.io) dependency manager
## Status
Corral is beta level software.
## About Corral
Corral is a dependency management tool for [Pony](https://www.ponylang.io). Corral:
* Provides extensibility for VCS and Commands.
* Supports semver version constraints on dependencies.
* Supports transitive dependencies.
* Supports revision locking on dependencies using a lock.json file.
* Uses a distinct shared VCS repo pool from per-project dependency workspace tree.
* Uses the Pony process package for running external tools like Git and ponyc.### Design
See [Corral Design](doc/design.md) for more details about the design of Corral. Ongoing questions and notes for future work can be found in [Questions / Notes](doc/questions_notes.md)
### Background
Check out [Pony Package Dependency Management](doc/package_dependency_management.md) for a discussion of the research and requirements work behind Corral.
## Installation
Pre-built binaries of Corral are available for Linux x86, MacOS x86, and Windows x86. To install on any of these platforms, use [ponyup](https://github.com/ponylang/ponyup). For any other platform, you'll need to be build from source.
The following command is assuming that `ponyup`, our toolchain multiplexer, is already installed on your machine and is locatable by the name `ponyup`. If you don't have ponyup installed, please follow the [ponyup installation instructions](https://github.com/ponylang/ponyup#installing-ponyup).
```bash
ponyup update corral release
```## Building From Source
See [BUILD.md](BUILD.md)
## Getting started using Corral
After installation, add Corral's current path to $PATH environment variable if you haven't already and follow these steps to create your first project using Corral.
### Create a project
Make an empty folder and switch to this directory. This will be our example project to use Corral
```bash
mkdir myproject
cd myproject
```### Initialize Corral
It will create `corral.json` and `lock.json` files. At this moment they won't have much information since you haven't added any dependencies yet.
```bash
corral init
```### Add a dependency
This is the way to tell Corral that your project depends on this and you want to include it when building your project.
```bash
corral add github.com/ponylang/valbytes.git
```### Use a dependency
Create a file `main.pony` with following code.
```pony
use "valbytes"actor Main
new create(env: Env) =>
var buf: ByteArrays = ByteArrays
buf = buf + "!!" + "Hello," + " " + "World!"
let greetings = buf.drop(2).string()
env.out.print(greetings)
```### Get dependencies
The example Pony code is using `ByteArrays` type which is defined in the dependency which you have just added. Pony needs to have the source code of `ByteArrays` type to compile successfully. When `corral update` is run, Corral retrieves the source and makes it available when compiling the source code.
```bash
corral update
```### Build the project
Corral will now use this information to build the project. The command below act as a wrapper for `ponyc`
```bash
corral run -- ponyc
```If there are no errors generated then an executable `myproject` will be created in the same folder.
You will also notice that there are two new folders `_corral` and `_repos` in your project folder now. They were generated by the `corral update` command. Please make sure to include them in your `.gitignore` file as there is no need to keep them in a versioning system since they are maintained by Corral itself.
## Documentation
See [DOCS.md](DOCS.md)