This change adds a set of true diagnostics constructs, underneath the new `diag` module. This includes projecting Mu-specific errors as real diagnostics in a way that is unified with TypeScript errors. The only difference, of course, is that Mu errors tend to happen in later passes. But this is not necessarily always the case. As part of this, I've rearranged the compiler passes to present a simpler interface to users of the compiler API (currently just the CLI and test harness, but it's just a library, so anybody can use it). Namely, there are three phases: 1. Compilation is the overall process of taking an input path and driving the entire compilation process, yielding a set of diagnostics and, ideally, a final MuPackage at the end of it. 2. Script compilation is the process of driving the front-end compiler -- in this case TypeScript -- yielding a set of Mu diagnostics and, if that went well, the script's AST. 3. Transformation is the process of taking the script output and lowering it into the final MuPackage form. Most people will deal with 1, blissfully unaware of the presence of independent 2 and 3 phases. We choose to keep them distinct for white box testing and for future scenarios we have yet to envision. |
||
---|---|---|
cmd | ||
docs | ||
examples | ||
lib | ||
pkg | ||
sdk/javascript | ||
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.