Skip to content

interactive shell for Golang (forked)

License

Notifications You must be signed in to change notification settings

projektorius96/gosh-tidar

 
 

Repository files navigation

Gosh: interactive shell for golang

Gosh is the interactive Golang shell. The goal is to provide an easy-to-use interactive execution environment.

https://secure.travis-ci.org/mkouhei/gosh.png https://coveralls.io/repos/mkouhei/gosh/badge.png?branch=master Documentation Status

Documentation

http://gosh.readthedocs.org/

Features

  • Interactive shell
  • Enable to omit the main function
  • Enable to omit package statement
  • Enable to omit the import statement of standard library
  • Enable to Import libraries of non-standard library
  • Enable to re-declare function, type
  • Ignoring duplicate import package
  • Ignoring unused import package

Requirements

  • Golang >= 1.2
  • goimports command
    • We recommend that you install goimports to $PATH in advance.
    • Installing automatically if the command is not found in $PATH (>= v0.3.0).
    • However, the time until the installation is complete in this case,
      you will be waiting for the launch of "Gosh" process.

for documentation

  • libpython2.7-dev
  • libjpeg9-dev

Installation

Debian

Install the following packages

  • golang
  • golang-go.tools (recommended)

Set GOPATH:

$ install -d /path/to/gopath
$ export GOPATH=/path/to/gopath

If you install goimports in advance (recommended):

$ sudo apt-get install -y golang-go.tools

Install Gosh to GOPATH:

$ go get github.com/mkouhei/gosh

OS X

Install the follow packages with Homebrew.

  • Go
  • Mercurial (with Homebrew)

Set GOPATH:

$ install -d /path/to/gopath
$ export GOPATH=/path/to/gopath

If you install goimports in advance (recommend):

$ export PATH=${GOPATH}/bin:$PATH
$ go get golang.org/x/tools/cmd/goimports

Install the Gosh:

$ go get github.com/mkouhei/gosh

Basic usage

Examples:

$ $GOPATH/bin/gosh
>>> import "fmt"
>>> func main() {
>>> fmt.Println("hello")
>>> }
hello
>>>

or:

$ $GOPATH/bin/gosh
>>> func main() {
>>> fmt.Println("hello")
>>> }
hello
>>>

Note

Enabled to omit import statement for standard packages.

Enabled to import non-standard packages

Example of using non-standard package:

>>> import "net/http"
>>> import "example.org/somepkg"
>>> func main() {
>>> r, _ := http.Get("http://example.org/some")
>>> defer r.Body.Close()
>>> p, _ := somepkg.Reader(r.Body)
>>> fmt.Println(p)
>>> }
(print some payload)

Usage when omitting main function declarations

Example:

$ $GOPATH/bin/gosh
>>> i := 1
>>> i++
>>> fmt.Println(i)
2
>>>

Terminate Gosh to reset main declarations or declare func main() without body:

$ $GOSH/bin/gosh
>>> i := i
>>> fmt.Println(i)
1
>>> func main() {}
>>> fmt.Println(i)
[error] # command-line-arguments
./gosh_tmp.go:8: undefined: i
>>>

Limitations

  • fmt.Print* are executed only once.

Known issues

Fail to evaluate when there are declared and not used valiables.:

$ $GOPATH/bin/gosh
>>> i := 1
>>> fmt.Println("hello")
>>>

Roadmap

  • Tab completion
  • Enable to omit import statement for global(system) installed packages

License

Gosh is licensed under GPLv3.

About

interactive shell for Golang (forked)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 94.2%
  • Makefile 5.8%