Skip to content
/ brs Public
forked from sjbarag/brs

An interpreter for the BrightScript language that runs on non-Roku platforms.

License

Notifications You must be signed in to change notification settings

Slushy/brs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BRS: Off-Roku BrightScript

An interpreter for the BrightScript language that runs on non-Roku platforms.

Installation

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

Usage

This repo provides the brs executable, which operates in two ways.

REPL

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).

Executing a file

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!"

Sure, but why?

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.

So can I use this to watch TV without a Roku?

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.

Building from source

The BRS project follows pretty standard node development patterns, with the caveat that it uses yarn for dependency management.

Prerequisites

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

Setup

  1. Clone this repo:

    $ git clone https://github.com/sjbarag/brs.git
    
  2. Install dependencies:

    $ yarn install     # or just `yarn`
  3. Get brs onto your PATH:

    $ yarn link

The build-test-clean dance

Build

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)

Testing

Tests are written with Facebook's Jest, and can be run with the test target:

$ yarn test

# tests start running

Cleaning

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

About

An interpreter for the BrightScript language that runs on non-Roku platforms.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 57.1%
  • TypeScript 41.8%
  • Brightscript 1.1%