Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/benhoyt/gosnip
Run small snippets of Go code from the command line
https://github.com/benhoyt/gosnip
code-snippets command-line go tool
Last synced: 16 days ago
JSON representation
Run small snippets of Go code from the command line
- Host: GitHub
- URL: https://github.com/benhoyt/gosnip
- Owner: benhoyt
- License: mit
- Created: 2018-11-24T16:09:04.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-03-17T04:22:51.000Z (over 1 year ago)
- Last Synced: 2024-10-15T23:54:54.030Z (28 days ago)
- Topics: code-snippets, command-line, go, tool
- Language: Go
- Size: 19.5 KB
- Stars: 24
- Watchers: 5
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# gosnip: run small snippets of Go code from the command line
[![Documentation](https://pkg.go.dev/badge/github.com/benhoyt/gosnip)](https://pkg.go.dev/github.com/benhoyt/gosnip)
[![GitHub Actions Build](https://github.com/benhoyt/gosnip/workflows/Tests/badge.svg)](https://github.com/benhoyt/gosnip/actions/workflows/tests.yml)Package gosnip is a tool that allows you to run small snippets of
Go code from the command line.usage: gosnip [-d] [-i import ...] statements...
To download and install, use `go install`:
$ go install github.com/benhoyt/gosnip@latest
For simple uses, just specify one or more Go statements on the
command line, and gosnip will roll them into a full Go program and
run the result using "go run". Standard library imports and any
imports needed for packages in GOPATH are added automatically
(using the same logic as the "goimports" tool). Some examples:$ gosnip 'fmt.Println("Hello world")'
Hello world$ gosnip 'fmt.Println("Current time:")' 'fmt.Println(time.Now())'
Current time:
2018-11-24 16:18:47.101951 -0500 EST m=+0.000419239The -i flag allows you to specify an import explicitly, which may be
needed to select between ambiguous stdlib imports such as
"text/template" and "html/template" (multiple -i flags are
allowed). For example:$ gosnip -i text/template 't, _ := template.New("w").Parse("{{ . }}\n")' \
't.Execute(os.Stdout, "")'
$ gosnip -i html/template 't, _ := template.New("w").Parse("{{ . }}\n")' \
't.Execute(os.Stdout, "")'
<b>The -d flag turns on debug mode, which prints the full program on
stderr before running it. For example:$ gosnip -d 'fmt.Println(time.Now())'
package mainimport (
"fmt"
"time"
)func main() {
fmt.Println(time.Now())
}
2018-11-24 16:33:56.681024 -0500 EST m=+0.000383308The gosnip command-line tool is a thin wrapper around the
"sniplib" package. To run Go snippets in your Go programs, see the
[sniplib docs](https://godoc.org/github.com/benhoyt/gosnip/sniplib).## Why?
I made gosnip because when coding in Go I often want to try little
snippets of code to see what they do, for example, "how does format
string `%6.3f` work again?" I could use the
[Go playground](https://play.golang.org/), but it's nice to be able
to use a one-line command. Also, I often develop while offline on my
bus commute, so don't have access to the online Go playground (yes, I
know it's possible to run the Go playground locally).## License
gosnip is licensed under an open source [MIT license](https://github.com/benhoyt/gosnip/blob/master/LICENSE.txt).
## Contact me
Have fun, and please [contact me](https://benhoyt.com/) if you're using gosnip or have any feedback!