pulumi/README.md

89 lines
3.5 KiB
Markdown
Raw Normal View History

[![Build Status](https://travis-ci.com/pulumi/pulumi-fabric.svg?token=cTUUEgrxaTEGyecqJpDn&branch=master)](https://travis-ci.com/pulumi/pulumi-fabric)
2017-05-24 21:44:36 +02:00
# Lumi
2016-10-09 01:01:25 +02:00
Lumi is a framework and toolset for creating reusable cloud services.
If you are learning about Lumi for the first time, please see [the overview document](docs/overview.md).
2017-02-25 19:46:26 +01:00
## Installing
To install Lumi from source, simply run:
2017-02-25 19:46:26 +01:00
$ go get -u github.com/pulumi/pulumi-fabric/cmd/lumi
2017-02-25 19:46:26 +01:00
A `GOPATH` must be set. A good default value is `~/go`. In fact, [this is the default in Go 1.8](
https://github.com/golang/go/issues/17262).
This installs the `lumi` binary to `$GOPATH/bin`.
2017-02-25 19:46:26 +01:00
At this moment, libraries must be manually installed. See below. Eventually we will have an installer.
2017-02-25 19:52:01 +01:00
## Compilers
The Lumi compilers are independent from the core Lumi tools.
2017-02-25 19:52:01 +01:00
Please see the respective pages for details on how to install, build, and test each compiler:
* [LumiJS](cmd/lumijs/README.md)
* [LumiPy](cmd/lumipy/README.md)
2017-02-25 19:52:01 +01:00
2017-02-25 19:46:26 +01:00
## Development
This section is for Lumi developers.
2017-02-25 19:46:26 +01:00
### Prerequisites
2017-08-02 03:37:06 +02:00
Lumi is written in Go, uses Dep for dependency management, and GoMetaLinter for linting:
* [Go](https://golang.org/doc/install): https://golang.org/dl
2017-08-02 03:37:06 +02:00
* [Dep](https://github.com/golang/dep): `$ go get -u github.com/golang/dep/cmd/dep`
* [GoMetaLinter](https://github.com/alecthomas/gometalinter):
2017-08-02 03:37:06 +02:00
- `$ go get -u github.com/alecthomas/gometalinter`
- `$ gometalinter --install`
2017-02-25 19:46:26 +01:00
### Building and Testing
To build Lumi, ensure `$GOPATH` is set, and clone into a standard Go workspace:
2016-11-23 21:41:30 +01:00
$ git clone git@github.com:pulumi/pulumi-fabric $GOPATH/src/github.com/pulumi/pulumi-fabric
$ cd $GOPATH/src/github.com/pulumi/pulumi-fabric
2016-11-23 21:41:30 +01:00
2017-05-24 22:25:28 +02:00
Before building, you will need to ensure dependencies have been restored to your enlistment:
2017-08-02 03:37:06 +02:00
$ dep ensure
2017-05-24 22:25:28 +02:00
At this point you can run `make` to build and run tests:
2016-11-23 21:41:30 +01:00
$ make
This installs the `lumi` binary into `$GOPATH/bin`, which may now be run provided `make` exited successfully.
2016-11-23 21:41:30 +01:00
2017-05-24 22:25:28 +02:00
The Makefile also supports just running tests (`make test`), just running the linter (`make lint`), just running Govet
(`make vet`), and so on. Please just refer to the Makefile for the full list of targets.
2017-02-25 19:52:01 +01:00
### Installing the Runtime Libraries
By default, Lumi looks for its runtime libraries underneath `/usr/local/lumi`. `$LUMIPATH` overrides this.
2017-02-25 19:57:07 +01:00
Please refer to the [libraries README](lib/README.md) for details on additional installation requirements.
2017-02-02 20:14:10 +01:00
2017-02-25 19:52:01 +01:00
### Debugging
2017-01-26 22:50:27 +01:00
The Lumi tools have extensive logging built in. In fact, we encourage liberal logging in new code, and adding new
2017-01-26 22:50:27 +01:00
logging when debugging problems. This helps to ensure future debugging endeavors benefit from your sleuthing.
All logging is done using Google's [Glog library](https://github.com/golang/glog). It is relatively bare-bones, and
adds basic leveled logging, stack dumping, and other capabilities beyond what Go's built-in logging routines offer.
2017-01-26 22:50:27 +01:00
The Lumi command line has two flags that control this logging and that can come in handy when debugging problems. The
2017-01-26 22:50:27 +01:00
`--logtostderr` flag spews directly to stderr, rather than the default of logging to files in your temp directory. And
the `--verbose=n` flag (`-v=n` for short) sets the logging level to `n`. Anything greater than 3 is reserved for
debug-level logging, greater than 5 is going to be quite verbose, and anything beyond 7 is extremely noisy.
For example, the command
$ lumi eval --logtostderr -v=5
2017-01-26 22:50:27 +01:00
is a pretty standard starting point during debugging that will show a fairly comprehensive trace log of a compilation.