@@ -11,11 +11,11 @@ wanted them to all behave the same: run code and drop into a REPL!
1111
1212## How it works
1313
14−Prybar, written in Golang, maintains a common command-line interface
15−that calls into a select language backend. When possible, the language
16−backends are implemented using cgo and the language's C-bindings.
17−Otherwise, they make use of a small script written in the host
18−language which starts a Prybar-compatible REPL.
14+Prybar, written in [Golang](https://golang.org/), maintains a common
15+command-line interface that calls into a select language backend. When
16+possible, the language backends are implemented using cgo and the
17+language's C-bindings. Otherwise, they make use of a small script
18+written in the host language which starts a Prybar-compatible REPL.
1919
2020## Usage
2121
@@ -50,34 +50,47 @@ language which starts a Prybar-compatible REPL.
5050
5151## Build and run
5252
53+ % make help
54+ usage:
55+ make all Build all Prybar binaries
56+ make prybar-LANG Build the Prybar binary for LANG
57+ make docker Run a shell with Prybar inside Docker
58+ make image Build a Docker image with Prybar for distribution
59+ make test Run integration tests
60+ make clean Remove build artifacts
61+ make help Show this message
62+
5363Prybar uses Docker to make it easy to get started with development.
5464First, you must [install Docker](https://docs.docker.com/install/).
5565Then, run:
5666
57− $ docker build . -t prybar
67+ $ make docker
5868
5969to create a Docker image containing the Prybar code and all of its
60−dependencies. Building the image also includes compiling the Prybar
61−binaries (there is one for each supported language).
62−
63−To run the code in a Docker container:
70+dependencies, and launch a shell inside of it. The Prybar source
71+repository will be synchronized with the working directory of the
72+container's filesystem, so you only need to re-run `make docker` if
73+you change the Dockerfile or any of its scripts.
6474
65− $ docker run --rm -it prybar
66− # ./prybar-python3 -h
75+To build Prybar (this should be done inside `make docker` unless you
76+have installed all of Prybar's dependencies on your system), run
77+`make` or `make all`. Then the `prybar-LANG` binaries will be
78+available in the working directory and on `$PATH`, one for each
79+supported language `LANG` ([see the `languages` subdirectory of this
80+repository](languages)):
6781
68−The directory contains one `./prybar-LANG` binary for each supported
69−language `LANG` ([see the `languages` subdirectory of this
70−repository](languages)).
71−
72−When you make changes to the code, you must re-run `docker build` to
73−create a new Docker image before you can run it with `docker run`.
82+ $ prybar-python3 -h
7483
7584### Distribution
7685
77−The script `./extract.sh` can be used to compile and produce a tarball
78−containing all the Prybar binaries. You can run it on its own; it will
79−automatically compile a new Docker image if necessary and extract the
80−binaries from a running container.
86+Run `make image` to create a Docker image containing not only Prybar's
87+dependencies and source code but also its compiled binaries, which can
88+be embedded inside other Docker images by means of `COPY
89+--from=basicer/prybar`.
90+
91+This image is automatically built and deployed to [Docker
92+Hub](https://hub.docker.com/) every time a commit is merged to
93+`master`.
8194
8295## License
8396