• Stars
    star
    189
  • Rank 204,649 (Top 5 %)
  • Language Pony
  • License
    BSD 2-Clause "Sim...
  • Created over 7 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🐴 Pony dependency manager tool

Corral

Pony dependency manager

Status

Corral is beta level software.

About Corral

Corral is a dependency management tool for Pony. 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 for more details about the design of Corral. Ongoing questions and notes for future work can be found in Questions / Notes

Background

Check out Pony Package Dependency Management for a discussion of the research and requirements work behind Corral.

Installation

Use ponyup to install corral.

The following command is assuming that ponyup, our toolchain multiplexer, is already installed on your machine and is available in your $PATH environment variable. If you don't have ponyup installed, please follow the ponyup installation instructions.

ponyup update corral release

Building From Source

See 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

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.

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.

corral add github.com/ponylang/valbytes.git

Use a dependency

Create a file main.pony with following code.

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.

corral update

Build the project

Corral will now use this information to build the project. The command below act as a wrapper for ponyc

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

More Repositories

1

ponyc

Pony is an open-source, actor-model, capabilities-secure, high performance programming language
C
5,665
star
2

pony-tutorial

🐴 Tutorial for the Pony programming language
Markdown
310
star
3

ponyup

The Pony toolchain multiplexer
Pony
193
star
4

pony-stable

🐴 A simple dependency manager for the Pony language.
Pony
134
star
5

pony-patterns

🐴 A cookbook style book of patterns for Pony
Markdown
61
star
6

ponylang-website

The ponylang.io website
Markdown
60
star
7

ponycheck

Property Based Testing for Ponylang 🐴 βœ”οΈ
Pony
59
star
8

rfcs

RFCs for changes to Pony
Markdown
59
star
9

http

ponylang HTTP client library
Pony
41
star
10

reactive_streams

🐴 Pony implementation of http://www.reactive-streams.org/
Pony
40
star
11

ponylang-mode

🐴 Pony syntax highlighting, Code formatting, Playground and more things for Emacs.
Emacs Lisp
34
star
12

http_server

Pony library for building HTTP server applications.
Pony
29
star
13

library-project-starter

🐴 Kickstart setting up your Pony library project. See USAGE.md for instructions.
Shell
26
star
14

pony-language-server

Language server for Pony
Pony
20
star
15

peg

🐴 A parsing expression grammar package for Pony
Pony
16
star
16

sublime-pony

🐴 Pony language plugin for Sublime Text 2/3
14
star
17

pony-for-x

Source of the "Pony for X" intro to Pony series
14
star
18

lori

Pony TCP classes reimagined
Pony
13
star
19

changelog-tool

🐴 Tool for modifying the "standard pony" changelogs
Pony
13
star
20

VS-pony

Visual Studio plugin for Pony
C#
12
star
21

crypto

Library of common cryptographic algorithms and functions for Pony
Pony
11
star
22

pony-lldb-extensions

A script with functions for using LLDB with Pony
Python
10
star
23

postgres

Pure Pony Postgres driver
Pony
10
star
24

pony-ctags

Exuberant Ctags support for the Pony programming language
8
star
25

flycheck-pony

🐴 A Flycheck syntax checker for the Pony language.
Shell
8
star
26

semver

🐴 A semantic versioning library for Ponylang.
Pony
8
star
27

library-scaffolding-generator

Scaffolding generator for starting Pony libraries
Shell
8
star
28

fork_join

🐴 Pony parallel processing library
Pony
8
star
29

appdirs

Library for getting platform-specific application directories e.g. directory for user-based config 🐴 πŸ“
Pony
8
star
30

spacemacs-ponylang-layer

🐴 A Spacemacs layer for Pony
Emacs Lisp
7
star
31

templates

A template engine for Pony
Pony
7
star
32

github_rest_api

Pony library for working with GitHub's REST API
Pony
7
star
33

main.actor.archived

JavaScript
6
star
34

regex

🐴 Perl compatible regular expression support for Pony
Pony
5
star
35

net_ssl

SSL library for Pony
Pony
5
star
36

mkdocs-theme

Ponylang official theme for mkdocs.
SCSS
5
star
37

library-documentation-action

🐴 Generates documentation for Pony libraries
Python
4
star
38

contributors

Information for Pony contributors
Markdown
4
star
39

ponydoc

🐴 Documentation generator for Pony
Shell
4
star
40

logger

A simple logging library for Pony
Pony
4
star
41

json

A JSON library for Pony
Pony
4
star
42

gsoc-2019

Ideas for the Google Summer of Code 2019
4
star
43

pony-playground

A web interface for running Pony code
JavaScript
3
star
44

valbytes

Dealing with multiple concatenated byte-arrays as if it were a single byte-array.
Pony
3
star
45

glob

🐴 Pony package provides the ability find all pathnames matching a given pattern based on Unix shell rules.
Pony
3
star
46

pony-snippets

🐴 YASnippet Pony snippets for Emacs
YASnippet
3
star
47

distributed-cycle-detection

Work product from the development a distributed cycle detection protocol for the Pony runtime
Pony
3
star
48

stdlib.ponylang.io

🐴 Generated standard library documentation
2
star
49

zulip-orb

Create custom Zulip notifications for CircleCI job statuses
2
star
50

application-scaffolding-generator

Scaffolding generator for starting Pony applications
2
star
51

rfc-tool

🐴 Tool for working with Pony RFCs
Shell
2
star
52

ponydep-ncurses

RPM packages for a tricky dependency of the Pony compiler
Shell
1
star
53

action-testing

Ignore. Nothing interesting happens here.
Pony
1
star
54

release-notes-bot-action

🐴 Bot to update release notes with new entries
Python
1
star
55

readme-version-updater-action

🐴 Bot that updates the version of an action in its README on release
Python
1
star
56

release-notes-reminder-bot-action

🐴 Bot to remind that release notes are needed when a CHANGELOG label is added to a PR
Python
1
star
57

hugo-documentation-site-theme

Hugo theme used for Pony Tutorial and Pony Patterns websites
HTML
1
star
58

changelog-bot-action

🐴 Bot to update a Pony format CHANGELOG with new entries
Python
1
star
59

release-bot-action

Bot that handles the standard release process for ponylang projects
Python
1
star
60

library-documentation-action-v2

Generates documentation for Pony libraries
Python
1
star
61

corral-test-repo

🐴 Repository for testing Corral interactions with GitHub
Pony
1
star
62

main-actor-documentation-action

🐴 Generates documentation for the release and uploads to https://main.actor
Shell
1
star
63

pony-sync-helper

Grab the recently modified open issues and display them in markdown
Pony
1
star
64

i18n

Type-safe internationalisation
1
star
65

main.actor-package-markdown

Generated markdown documentation for packages hosted on https://main.actor
Shell
1
star
66

discussions

🐴 Discussions of things that are less focused than an RFC
1
star
67

accepted-rfc-bot-action

🐴 Bot that handles creating content associated with an accepted Pony RFC
1
star
68

shared-docker

Dockerfiles that are useful across Ponylang repositories
Shell
1
star