/pico-engine

An implementation of the pico-engine hosted on node.js

Primary LanguageJavaScriptMIT LicenseMIT

pico-engine

Build Status Windows Build Status Node version

An implementation of the pico-engine hosted on node.js

Getting Started / Installing / Configuration

See packages/pico-engine

Contributing

The pico-engine is made up of several smaller modules. Each with their own documentation and test suite.

However they live in this repository in the packages/ directory (mono-repo style using lerna)

  • pico-engine - this is the npm package people install and use
  • pico-engine-core - executes compiled KRL and manages event life-cycle
  • krl-stdlib - standard library for KRL
  • krl-compiler - compiles AST into a JavaScript module
  • krl-parser - parses KRL to produce an abstract syntax tree (String -> AST)
  • krl-generator - generates KRL from an AST (AST -> String)
  • krl-editor - in browser editor for KRL

To run the pico-engine in development mode do the following:

$ git clone https://github.com/Picolab/pico-engine.git
$ cd pico-engine
$ npm run setup
$ npm start

That will start the server and run the test. npm start is simply an alias for cd packages/pico-engine && npm start

NOTE about dependencies: generally don't use npm i, rather use npm run setup from the root. lerna will link up the packages so when you make changes in one package, it will be used in others.

Working in sub-package

Each sub-package has it's own tests. And the npm start command is wired to watch for file changes and re-run tests when you make changes. For example, to make changes to the parser:

$ cd packages/krl-parser/
$ npm start

NOTE: When running via npm start the PICO_ENGINE_HOME will default to your current directory i.e. your clone of this repository.

Making changes

Use a branch (or fork) to do your work. When you are ready, create a pull request. That way we can review it before merging it into master.

View docs/git-cheatsheet.md for more.

Changelog

To view details about versions: CHANGELOG.md

License

MIT