gore Documentation

Yet another Go REPL that works nicely. Featured with line editing, code completion, and more.

5,517 stars Go Go 1 file ยท ~988 tokens
RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy gore on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name gore --restart always x-motemen/gore:latest

Technical Documentation: x-motemen/gore

โ„น๏ธ Provenance: Multi-Tier Ingestion ยท CodeWiki Reference

Overview (`README.md`)

gore



(Screencast taken with 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 gopls)
  • Showing documents
  • Auto-importing (gore -autoimport)

REPL Commands

Some functionalities are provided as commands in the REPL:

text
:import [<alias>] <package>  Import package
:type <expr>                 Print the type of expression
:print                       Show current source
:write [<filename>]          Write out current source to file
:clear                       Clear the codes
:doc <expr or pkg>           Show document
:verbose [on|off]            Toggle printing of assigned or declared values
:help                        List commands
:quit                        Quit the session

Environment Variables

  • GORE_HOME: directory for the command history file.
    Defaults to $XDG_DATA_HOME/gore, or ~/.gore if XDG_DATA_HOME is unset.
  • GORE_PAGER: pager command used to display :doc output (e.g. less).
    If unset, documents are printed directly.
  • GORE_VERBOSE: set to a boolean false value (0 or false) to suppress
    automatic printing of assigned or declared values at startup.
    Defaults to on; toggle during a session with :verbose command.

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

Also recommended:

sh
go install golang.org/x/tools/gopls@latest   # for code completion

Or you can use Docker:

sh
docker run -it --rm ghcr.io/x-motemen/gore

FAQ/Caveats

  • gore runs code using go run for each input. Every line entered is evaluated
    repeatedly (#67),
    so you can't bind the evaluated time by time.Now(), for example.
    This implementation also makes the execution fairly slow
    (#182).
    This project started from a simple idea to use go run for all REPL input.
    I think this project has provided some value for Go users, but these days
    there are other REPL implementations that are more actively maintained
    and run faster. I recommend using gomacro
    or 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.

Author


--- METRICS ---