pulumi/sdk/nodejs
joeduffy a045e2fb1e Implement more of the Python runtime
This change includes a lot more functionality.  Enough to actually
run the webserver-py example through previews, updates, and destroys!

* Actually wire up the gRPC connections to the engine/monitor.

* Move the Node.js and Python generated Protobuf/gRPC files underneath
  the actual SDK directories to simplify this generally.  No more
  copying during `make` and, in fact, this was required to give a smoother
  experience with good packages/modules for the Python's SDK development.

* Build the Python egg during `make build`.

* Add support for program stacks.  Just like with the Node.js runtime,
  we will auto-parent any resources without explicit parents to a single
  top-level resource component.

* Add support for component resource output properties.

* Add get_project() and get_stack() functions for retrieving the current
  project and stack names.

* Properly use UNKNOWN sentinels.

* Add a set_outputs() function on Resource.  This is defined by the
  code-generator and allows custom logic for output property setting.
  This is cleaner than the way we do this in Node.js, and gives us a
  way to ensure that output properties are "real" properties, complete
  with member documentation.  This also gives us a hook to perform
  name demangling, which the code-generator typically controls anyway.

* Add package dependencies to setuptools.py and requirements.txt.
2018-02-24 08:58:34 -08:00
..
asset Remove 'Computed' type. (#883) 2018-02-05 18:37:10 -08:00
cmd Produce -exec without file extensions 2018-02-19 14:39:26 -08:00
dist Add custom NODE_PATH to resource cmd 2018-02-19 18:45:12 -08:00
dynamic Introduce Output<T> and update Resource construction code to properly handle it. (#834) 2018-02-05 14:44:23 -08:00
log Make root resources more general 2017-11-26 12:01:13 -08:00
proto Implement more of the Python runtime 2018-02-24 08:58:34 -08:00
runtime Code review feedback: 2018-02-22 13:33:50 -08:00
scripts Ship nativeruntime.node as part of the SDK 2018-02-16 18:12:33 -08:00
tests Code review feedback: 2018-02-22 13:33:50 -08:00
.gitignore Implement more of the Python runtime 2018-02-24 08:58:34 -08:00
config.ts Improve failure messages (#932) 2018-02-14 09:55:02 -08:00
errors.ts Improve output formatting 2017-09-23 05:20:11 -07:00
index.ts Add a manifest to checkpoint files (#630) 2017-12-01 13:50:32 -08:00
Makefile Implement more of the Python runtime 2018-02-24 08:58:34 -08:00
metadata.ts Add (back) component outputs 2017-11-20 17:38:09 -08:00
package.json Rename pulumi package to @pulumi/pulumi (#917) 2018-02-12 13:13:13 -08:00
README.md Update the README 2018-02-14 10:33:18 -08:00
resource.ts Fix spelling (#894) 2018-02-07 15:01:55 -08:00
tsconfig.json Move language host logic from Node to Go (#901) 2018-02-10 02:15:04 +00:00
tslint.json Enable tslinting of the nodejs sdk. (#433) 2017-10-18 15:03:56 -07:00
version.ts Add a manifest to checkpoint files (#630) 2017-12-01 13:50:32 -08:00
yarn.lock Run yarn upgrade and commit all resulting lockfiles 2018-01-30 14:46:44 -08:00

Pulumi Fabric Node.js SDK

The Pulumi Fabric Node.js SDK lets you write cloud programs in JavaScript.

Installing

For now, we only support developers building from source. Eventually we will have a nice installer.

Prerequisites

To build and install the SDK, you will first need a few things.

First, install Node.js 6.10.2. We recommend nvm, since it makes it easier to switch between versions of Node.js. Afterwards, run nvm install 6.10.2. As part of the build, a custom build of Node.js 6.10.2 will be downloaded and installed alongside the SDK. This Node binary is identical to Node.js 6.10.2, except that it has one extra builtin module containing code that is used by the SDK to serialize JavaScript closures. The custom binary is built from this repo.

Next, we suggest using Yarn for package management. NPM works too, but Yarn is faster and therefore preferred. Please follow the directions on Yarn's website.

Building and Testing

The first time you build, you must make configure to install and prepare native plugins for V8:

$ make configure

Make sure to run this after installing the right version of Node.js above, otherwise it may bind to the wrong version.

To build the SDK, simply run make from the root directory (sdk/nodejs/). This will build the code, run tests, and then "install" the package (by yarn linking the resulting bin/ directory).

We recommend putting bin/ on your $PATH, since the pulumi-langhost-nodejs executable will be loaded dynamically by the pulumi tool whenever it encounters a Node.js program.

The tests will verify that everything works, but feel free to try running pulumi preview and/or pulumi update from the examples/minimal/ directory. Remember to run tsc first, since pulumi expects JavaScript, not TypeScript.