This change begins to bind function bodies. This must be done as a second pass over the AST, because dependencies between modules, and even intra-module dependencies, might refer to top-level symbols like types, variables, and functions, and so must be established first. At the moment, the only node kind we handle is ast.Block, which merely pushes and pops lexical scopes; however, the next step is to implement the AST node-specific visitation logic for all statement and expression nodes. I've also rearranged how Scopes work to be a little easier to use. The Scope type now remembers the **Scope slot in which it is rooted, so that we can simply call Push and Pop on Scopes and have the right thing happen. |
||
---|---|---|
cmd | ||
docs | ||
examples | ||
lib | ||
pkg | ||
tools/mujs | ||
.gitignore | ||
.gitmodules | ||
glide.lock | ||
glide.yaml | ||
main.go | ||
Makefile | ||
README.md |
Mu
Mu is a framework and toolset for creating reusable stacks of services.
If you are learning about Mu for the first time, please see the overview document.
Building and Testing
To build Mu, first clone it into a standard Go workspace:
$ mkdir -p $GOPATH/src/github.com/marapongo
$ git clone git@github.com:marapongo/mu $GOPATH/src/github.com/marapongo/mu
A good default value for GOPATH
is ~/go
.
Mu needs to know where to look for its runtime, library, etc. By default, it will look in /usr/local/mu
, however you
can override this with the MUPATH
variable. Normally it's easiest just to create a symlink:
$ ln -s $GOPATH/src/github.com/marapongo/mu /usr/local/mu
There is one additional build-time dependency, golint
, which can be installed using:
$ go get -u github.com/golang/lint/golint
And placed on your path by:
$ export PATH=$PATH:$GOPATH/bin
At this point you should be able to build and run tests from the root directory:
$ cd $GOPATH/src/github.com/marapongo/mu
$ make
This installs the mu
binary into $GOPATH/bin
, which may now be run provided make
exited successfully.