Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/x-motemen/gore
Yet another Go REPL that works nicely. Featured with line editing, code completion, and more.
https://github.com/x-motemen/gore
Last synced: 1 day ago
JSON representation
Yet another Go REPL that works nicely. Featured with line editing, code completion, and more.
- Host: GitHub
- URL: https://github.com/x-motemen/gore
- Owner: x-motemen
- License: mit
- Created: 2015-02-11T13:45:04.000Z (almost 10 years ago)
- Default Branch: main
- Last Pushed: 2023-10-01T02:29:00.000Z (about 1 year ago)
- Last Synced: 2024-12-05T02:04:39.474Z (8 days ago)
- Language: Go
- Homepage:
- Size: 723 KB
- Stars: 5,130
- Watchers: 55
- Forks: 148
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-repositories - x-motemen/gore - Yet another Go REPL that works nicely. Featured with line editing, code completion, and more. (Go)
README
# gore [![CI Status](https://github.com/x-motemen/gore/workflows/CI/badge.svg)](https://github.com/x-motemen/gore/actions)
### Yet another Go REPL that works nicely. Featured with line editing, code completion, and more.![Screencast](doc/screencast.gif)
(Screencast taken with [cho45/KeyCast](https://github.com/cho45/KeyCast))
## Usage
```sh
gore
```
After a prompt is shown, enter any Go expressions/statements/functions or commands described below.To quit the session, type `Ctrl-D` or use `:q` command.
## Features
- Line editing with history
- Multi-line input
- Package importing with completion
- Evaluates any expressions, statements and function declarations
- No "evaluated but not used" errors
- Code completion (requires [gocode](https://github.com/mdempsky/gocode))
- Showing documents
- Auto-importing (`gore -autoimport`)## REPL Commands
Some functionalities are provided as commands in the REPL:
```
:import Import package
:type Print the type of expression
:print Show current source
:write [] Write out current source to file
:clear Clear the codes
:doc Show document
:help List commands
:quit Quit the session
```## Installation
The gore command requires Go tool-chains on runtime, so standalone binary is not distributed.```sh
go install github.com/x-motemen/gore/cmd/gore@latest
```Make sure `$GOPATH/bin` is in your `$PATH`.
Also recommended:
```sh
go install github.com/mdempsky/gocode@latest # for code completion
```Or you can use Docker:
```sh
git clone https://github.com/x-motemen/gore.git
cd gore
docker build -t gore .
docker run -it --rm gore
```## FAQ/Caveats
- gore runs code using `go run` for each input. All the inputted lines are
evaluated again and again so you can't bind the evaluated time by
`time.Now()`, for example. If you don't like this behavior, you may want to use
[yaegi](https://github.com/containous/yaegi).
- gore support Go modules. You can load local modules when you start gore at
the project directory. You don't need to `go get` to check the usage of a
remote repository, `:import github.com/...` will automatically download that
module. Also, you don't need to `go get` the pretty print module anymore. If
you want to load a local code from `$GOPATH`, you need to create the modules
file (`go mod init ...`) and then start gore at the project directory.## License
[The MIT License](./LICENSE).
## Author
motemen <>