An interpreter for the BrightScript language that runs on non-Roku platforms.
The BRS project is published as a node
package, so use npm
:
$ npm install -g brs
or 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
brs> ?"Dennis Ritchie said ""Hello, World!"""
Dennis Ritchie said "Hello, World!"
Quit by entering ^D
(Control-D).
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. BRS isn't mature enough to be able to sustain that yet.
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
-
Install dependencies:
$ yarn install # or just `yarn`
-
Get
brs
onto yourPATH
:$ yarn link
Yarn's written in TypeScript, so it needs to be compiled before it can be executed. yarn build
compiles files in src/
into JavaScript and TypeScript declarations, and puts them in lib/
and types/
respectively.
$ yarn build
$ ls lib/
index.js (and friends)
$ ls types/
index.d.ts (and friends)
Tests are written with Facebook's Jest, and can be run with the test
target:
$ yarn test
# tests start running
Compiled output in lib/
and types/
can be removed with the clean
target:
$ yarn clean
$ ls lib/
ls: cannot access 'lib': No such file or directory
$ ls types/
ls: cannot access 'types': No such file or directory