All Projects → anacrolix → Godo

anacrolix / Godo

godo is an improved `go run`

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Godo

Sandal2
SDL2 wrapper in C
Stars: ✭ 17 (-39.29%)
Mutual labels:  wrapper
Simple Bigtable
Stars: ✭ 24 (-14.29%)
Mutual labels:  wrapper
Fbbotw
Python Wrapper for Facebook Messenger Bot Platform.
Stars: ✭ 15 (-46.43%)
Mutual labels:  wrapper
Cargo Make
Rust task runner and build tool.
Stars: ✭ 895 (+3096.43%)
Mutual labels:  build-tool
Hopp
Crazy rapid build system.
Stars: ✭ 24 (-14.29%)
Mutual labels:  build-tool
Objc Uti
Objective-C wrapper for Uniform Type Identifiers (UTIs)
Stars: ✭ 7 (-75%)
Mutual labels:  wrapper
F32 For Android
Android library for temperature conversions and weather forecasts. Includes wrapper for OpenWeatherMap API
Stars: ✭ 16 (-42.86%)
Mutual labels:  wrapper
Houl
Full-contained static site workflow
Stars: ✭ 27 (-3.57%)
Mutual labels:  build-tool
Headercollapsiblelayout
A wrapper layout that can easily split your current layout into header and body, and provides smooth header collapsing action with related event callbacks.
Stars: ✭ 24 (-14.29%)
Mutual labels:  wrapper
Wonderbuild
Wonderbuild is an extremely fast, extensible build tool
Stars: ✭ 9 (-67.86%)
Mutual labels:  build-tool
Go Git Cmd Wrapper
A simple wrapper around git command in Go.
Stars: ✭ 22 (-21.43%)
Mutual labels:  wrapper
Swaddle
Automagically create API clients/wrappers in JavaScript
Stars: ✭ 23 (-17.86%)
Mutual labels:  wrapper
Gulp Boilerplate
A boilerplate for building web projects with Gulp.js.
Stars: ✭ 840 (+2900%)
Mutual labels:  build-tool
Wykop Es6
Wykop.pl API library
Stars: ✭ 17 (-39.29%)
Mutual labels:  wrapper
Mori Ext
Function bind syntax wrappers for mori
Stars: ✭ 15 (-46.43%)
Mutual labels:  wrapper
Laravel Bigbluebutton
A BigBlueButton API wrapper for Laravel 5
Stars: ✭ 17 (-39.29%)
Mutual labels:  wrapper
Gon
Sign, notarize, and package macOS CLI tools and applications written in any language. Available as both a CLI and a Go library.
Stars: ✭ 929 (+3217.86%)
Mutual labels:  build-tool
Libsathelper
SatHelper Library for use on Satellite Projects
Stars: ✭ 28 (+0%)
Mutual labels:  wrapper
Elm Kitchen
Easily bootstrap a new Elm SPA
Stars: ✭ 21 (-25%)
Mutual labels:  build-tool
Clif
Binding generator to wrap C++ for Python using LLVM.
Stars: ✭ 845 (+2917.86%)
Mutual labels:  wrapper

godo

godo is an alternative to go run. It's useful when you want to avoid the go build/go install, /path/to/somebin cycle. There's also a bash completion script, which makes it easy to quickly invoke a Go package from your GOPATH.

godo differs from go run in the following respects:

  • The package to execute is specified by import path, rather than some constituent source files.
  • godo github.com/anacrolix/missinggo/cmd/nop vs.
  • go run $GOPATH/src/github.com/anacrolix/missinggo/cmd/nop/*.go
  • The generated binary is stored at $TMPDIR/godo/$pkgname.$$. This means that:
  • It's easy to locate the binary for a process running through godo.
  • The proctitle is $pkgname.$$, e.g. torrent.123, where the package name of the binary was torrent, and its PID is 123.
  • There is a bounded history of binaries due to the OS PID reuse policy. After PIDs cap at around 32K, they'll return to lower values, gradually replacing older binaries that are no longer associated with running processes.
  • The main package isn't rebuilt unnecessarily, avoiding a link step for successive godo calls to the same package. For example a go run invocation for a large application on my system has a mandatory ~0.8s delay even if the files haven't changed. godo has this at 0.04s, because it's able to reuse the existing binary.

Usage

$ godo -h
godo is an alternative to `go run`.

Usage:
  godo [go build flags] <package spec> [binary arguments]
  godo -h | --help

Example

# first run
$ time godo github.com/anacrolix/missinggo/cmd/nop

real	0m0.244s
user	0m0.177s
sys	    0m0.071s

$ time godo github.com/anacrolix/missinggo/cmd/nop

real	0m0.046s
user	0m0.012s
sys	    0m0.022s

# historical binaries
$ ls -tr $TMPDIR/godo/ | grep nop.
nop.40586
nop.40590

Installation

go get github.com/anacrolix/godo

Bash completion:

go install github.com/anacrolix/godo/go-list-cmd
. "$GOPATH/src/github.com/anacrolix/godo/complete.sh"

Godo-ception

$ godo github.com/anacrolix/godo cmd/go run "$GOPATH/src/github.com/anacrolix/godo/"*.go cmd/go list github.com/anacrolix/...
<all my herptastic Go code>
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].