Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/replit/prybar
Pry open those interpreters.
https://github.com/replit/prybar
Last synced: about 1 month ago
JSON representation
Pry open those interpreters.
- Host: GitHub
- URL: https://github.com/replit/prybar
- Owner: replit
- License: gpl-2.0
- Created: 2018-10-10T09:27:58.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-06-24T22:08:20.000Z (3 months ago)
- Last Synced: 2024-06-24T23:29:00.909Z (3 months ago)
- Language: Go
- Homepage:
- Size: 28.8 MB
- Stars: 248
- Watchers: 46
- Forks: 47
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
# ![Prybar](logo.svg)
Prybar is a universal interpreter front-end. Same interface, same
REPL, different languages.## Why
At [Repl.it](https://repl.it), we're in the business of running REPLs.
As it happens to be, every language implements them differently. We
wanted them to all behave the same: run code and drop into a REPL!## How it works
Prybar, written in [Go](https://golang.org/), maintains a common
command-line interface that calls into a select language backend. When
possible, the language backends are implemented using cgo and the
language's C-bindings. Otherwise, they make use of a small script
written in the host language which starts a Prybar-compatible REPL.## Usage
Usage: ./prybar-LANG [FLAGS] [FILENAME]...
-I interactive (use readline repl)
-c string
execute without printing result
-e string
evaluate and print result
-i interactive (use language repl)
-ps1 string
repl prompt (default "--> ")
-ps2 string
repl continuation prompt (default "... ")
-q don't print language version## Language Support
| language | eval | eval expression | eval file | repl | repl like eval | set prompt |
| ------------------------- | ---- | --------------- | --------- | ---- | -------------- | ---------- |
| Clojure | ✔ | ✔ | ✔ | ✔ | ✔ | - |
| Emacs Lisp | ✔ | ✔ | ✔ | ✔ | ✗ | ✔ |
| Javascript (nodejs) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| Javascript (spidermonkey) | ✔ | ✗ | ✗ | ✗ | ✗ | - |
| Julia | ✔ | ✗ | ✔ | ✔ | ✗ | ✔ |
| Lua 5.1 | ✔ | ✗ | ✔ | ✔ | ✗ | ✔ |
| OCaml | ✔ | ✔ | ✔ | ✔ | ✗ | ✔ |
| Python 2.7 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| Python 3.x | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| R | ✔ | ✗ | ✗ | ✔ | ✗ | ✗ |
| Ruby 2.5 | ✔ | ✔ | ✔ | ✔ | ✗ | ✗ |
| SQLite | ✔ | ✔ | ✔ | ✔ | ✗ | ✔ |
| Tcl | ✔ | ✔ | ✔ | ✗ | ✗ | - |## Start to Develop with Nix
Look in `packages` in `flake.nix`. For each package present, you can do
```
nix build .#
```to build it. The result will be a directory named `result`.
Example:
```
$ nix build .#prybar-python311
$ ls result/bin
prybar-python311
```Alternately, you can use the nix shell. Enter
```
nix develop
```to drop into a shell that has all dependencies installed an ready to go.
If you don't have nix yet, install that: https://nixos.org/
## Build and run
% make help
usage:
make all Build all Prybar binaries
make prybar-LANG Build the Prybar binary for LANG
make docker Run a shell with Prybar inside Docker
(don't do this in the nix shell, although this is
not needed if you use nix)
make image Build a Docker image with Prybar for distribution
make test Run integration tests
make test-image Test Docker image for distribution
make clean Remove build artifacts
make help Show this message### Distribution
Run `make image` to create a Docker image containing not only Prybar's
dependencies and source code but also its compiled binaries, which can
be embedded inside other Docker images by means of `COPY
--from=basicer/prybar`.This image is automatically built and deployed to [Docker
Hub](https://hub.docker.com/) every time a commit is merged to
`master`.## License
Copyright (C) 2004-2018 Neoreason, Inc. et al.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA
02110-1335, USA.See the COPYING file for more information regarding the GNU General
Public License.