Table of Contents generated with DocToc
An interpreter for the BrightScript language that runs on non-Roku platforms.
The BRS project is published as a
node package, so use
npm install -g brs
yarn if that's your preference:
yarn global add brs
This repo provides the
brs executable, which operates in two ways.
An interactive BrightScript REPL (Read-Execute-Print Loop) is available by running
brs with no arguments, e.g.:
brs ?"Dennis Ritchie said ""Hello, World!""" Dennis Ritchie said "Hello, World!"
Quit by entering
BRS can execute an arbitrary BrightScript file as well! Simply pass the file to the
brs executable, e.g.:
$ cat hello-world.brs ?"Dennis Ritchie said ""Hello, World!""" $ brs hello-world.brs Dennis Ritchie said "Hello, World!"
The Roku series of media streaming devices are wildly popular amongst consumers, and several very popular streaming services offer Channels for the Roku platform. Unfortunately, Roku chanels must be written in a language called BrightScript, which is only executable directly on a Roku device. BRS hopes to change that by allowing Roku developers to test their code on their own machines, thus improving the quality of their channels and the end-user's experience as a whole.
Nope! The BRS project currently has no intention of emulating the Roku user interface, integrating with the Roku store, or emulating content playback. In addition to likely getting this project in legal trouble, that sort of emulation is a ton of work.
The BRS project follows pretty standard
node development patterns, with the caveat that it uses
yarn for dependency management.
BRS builds (and runs) in
node, so you'll need to install that first.
Once that's ready, install yarn. Installing it with
npm is probably the simplest:
npm install -g yarn
Clone this repo:
$ git clone https://github.com/sjbarag/brs.git
yarn install # or just `yarn`
brs onto your
This project is written in TypeScript, so it needs to be compiled before it can be executed.
yarn build compiles files in
yarn build ls lib/ index.js (and friends) ls types/ index.d.ts (and friends)
Alternatively, you can run the build step in "watch" mode. This will run
yarn build for you automatically, every time it detects source file changes:
This is often useful for testing that local changes work in your BrightScript project, without having to run
yarn build over and over.
yarn test tests start running
Note that only test files ending in
.test.js will be executed by
Compiled output in
types/ can be removed with the
yarn clean ls lib/ ls: cannot access 'lib': No such file or directory ls types/ ls: cannot access 'types': No such file or directory
Thanks to the npm-run-all package, it's trivially easy to combine these into a sequence of tasks without relying on shell semantics:
yarn run-s clean build test
For the most part,
brs attempts to emulate BrightScript as closely as possible. However, there are certain implementation gaps. Also, in the spirit of unit testing, there are a few extensions that will help with testing. All of our documentation for APIs, extensions, gaps, and more is hosted on our docs site, hulu.github.io/roca.