Skip to content
🐴 A simple dependency manager for the Pony language.
Branch: master
Clone or download
rawkode and SeanTAllen Adopt Docker Shell Pattern
This will make it a lot simpler for developers to run the tests prior to
submitting their PR. This new `make` target, `dshell`, will put developers into a
bash shell, using the same container images that are used for CI.

From there deveopers can run `make test integration`.

I've written about this pattern on my blog:

https://rawkode.com/2018/01/27/docker-shell-pattern/
Latest commit 34c739e Jul 25, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
.packaging Stop building packages for unsupported Ubuntu and Debian packages (#103) Mar 26, 2019
doc Document CLI and bundle.json (#57) Nov 19, 2018
stable Don't process already-seen paths (Closes #96) Feb 8, 2019
.appveyor.yml Only run appveyor to build Windows releases May 24, 2018
.bintray.bash
.bintray_deb.bash Stop building packages for unsupported Ubuntu and Debian packages (#103) Mar 26, 2019
.gitattributes Add .gitattributes Aug 6, 2017
.gitignore
.securefiles.tar.enc Initial version of release packaging using COPR/PPA Jun 1, 2018
.travis.yml Stop building packages for unsupported Ubuntu and Debian packages (#103) Mar 26, 2019
.travis_install.bash Add CI for OSX using travis Jul 27, 2018
.travis_script.bash
CHANGELOG.md Stop building packages for unsupported Ubuntu and Debian packages (#103) Mar 26, 2019
LICENSE Add License (#29) Aug 9, 2017
Makefile Adopt Docker Shell Pattern May 2, 2019
README.md Remove quotations to fix `apt-key` command Oct 16, 2018
RELEASE_PROCESS.md Remove references to groups.io (#105) Mar 26, 2019
STYLE_GUIDE.md format based on ponyc style guide (#31) Aug 8, 2017
VERSION Prep for 0.2.0 release Feb 9, 2019
docker-compose.yml Adopt Docker Shell Pattern May 2, 2019
make.bat Add `version` command line option (#44) Oct 11, 2017
release.bash Turn release process on for real. Sep 17, 2017

README.md

pony-stable

A simple dependency manager for the Pony language.

Too many ponies to keep track of?

Put them in a stable and make your life easier.

Installation

Ubuntu Linux using a DEB package (via Launchpad PPA)

For Ubuntu Linux (Trusty, Xenial, Artful, Bionic, Cosmic), the release builds are packaged and available on Launchpad PPA (ponylang/ponylang).

To install builds via Apt:

add-apt-repository ppa:ponylang/ponylang
apt-get update
apt-get install pony-stable

Debian Linux using a DEB package (via Bintray)

For Debian Linux, the release builds are packaged and available on Bintray (pony-language/ponyc-debian).

To install builds via Apt (and install Bintray's public key):

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys D401AB61 DBE1D0A2
echo "deb https://dl.bintray.com/pony-language/pony-stable-debian /" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get -V install pony-stable

macOS

brew install pony-stable

Linux using an RPM package (via COPR)

For Red Hat, CentOS, Oracle Linux, Fedora Linux, or OpenSuSE, the release builds are packaged and available on COPR (ponylang/ponylang).

Using yum for Red Hat, CentOS, Oracle Linux and other RHEL compatible systems:

yum copr enable ponylang/ponylang epel-7
yum install pony-stable

See https://bugzilla.redhat.com/show_bug.cgi?id=1581675 for why epel-7 is required on the command line.

Using DNF for Fedora Linux:

dnf copr enable ponylang/ponylang
dnf install pony-stable

Using Zypper for OpenSuSE Leap 15:

zypper addrepo --refresh --repo https://copr.fedorainfracloud.org/coprs/ponylang/ponylang/repo/opensuse-leap-15.0/ponylang-ponylang-opensuse-leap-15.0.repo
wget https://copr-be.cloud.fedoraproject.org/results/ponylang/ponylang/pubkey.gpg
rpm --import pubkey.gpg
zypper install pony-stable

Using Zypper for OpenSuSE Tumbleweed:

zypper addrepo --refresh --repo https://copr.fedorainfracloud.org/coprs/ponylang/ponylang/repo/opensuse-tumbleweed/ponylang-ponylang-opensuse-tumbleweed.repo
wget https://copr-be.cloud.fedoraproject.org/results/ponylang/ponylang/pubkey.gpg
rpm --import pubkey.gpg
zypper install pony-stable

Arch Linux

pacman -S pony-stable

From Source

You will need ponyc in your PATH.

From Source (Unix):

git clone https://github.com/ponylang/pony-stable
cd pony-stable
make
sudo make install

From Source (Windows):

git clone https://github.com/ponylang/pony-stable
cd pony-stable
make.bat

You will then need to add pony-stable\bin to your PATH.

Make a project with dependencies.

GitHub

mkdir myproject && cd myproject

stable add github jemc/pony-inspect

echo '
use "inspect"
actor Main
  new create(env: Env) =>
    env.out.print(Inspect("Hello, World!"))
' > main.pony

GitLab

mkdir myproject && cd myproject

stable add gitlab jemc/pony-inspect

echo '
use "inspect"
actor Main
  new create(env: Env) =>
    env.out.print(Inspect("Hello, World!"))
' > main.pony

Local git project

mkdir myproject && cd myproject

stable add local-git ../pony-inspect --tag=1.0.2

echo '
use "inspect"
actor Main
  new create(env: Env) =>
    env.out.print(Inspect("Hello, World!"))
' > main.pony

The git tag is optional.

Local (non-git) project

mkdir myproject && cd myproject

stable add local ../pony-inspect

echo '
use "inspect"
actor Main
  new create(env: Env) =>
    env.out.print(Inspect("Hello, World!"))
' > main.pony

Fetch dependencies.

stable fetch
# The dependencies listed in `bundle.json` will be fetched
# and/or updated into the local `.deps` directory.
Cloning into '.deps/jemc/pony-inspect'...
remote: Counting objects: 131, done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 131 (delta 4), reused 0 (delta 0), pack-reused 123
Receiving objects: 100% (131/131), 21.73 KiB | 0 bytes/s, done.
Resolving deltas: 100% (82/82), done.
Checking connectivity... done.

Compile in a stable environment.

stable env ponyc --debug
# The local paths to the dependencies listed in `bundle.json`
# will be included in the `PONYPATH` environment variable,
# available to `use` in the `ponyc` invocation.
# You can run any custom command here - not just `ponyc`.
Building builtin -> /usr/local/lib/pony/0.2.1-204-g87fcb40/packages/builtin
Building . -> /home/jemc/1/code/hg/myproject
Building inspect -> /home/jemc/1/code/hg/myproject/.deps/jemc/pony-inspect/inspect
Generating
Writing ./myproject.o
Linking ./myproject
You can’t perform that action at this time.