{"id":13908051,"url":"https://github.com/ahwayakchih/roku-dev-container","last_synced_at":"2026-01-21T07:33:38.069Z","repository":{"id":66587521,"uuid":"501373408","full_name":"ahwayakchih/roku-dev-container","owner":"ahwayakchih","description":"Roku dev tools packed into a single, easy to use container.","archived":false,"fork":false,"pushed_at":"2022-06-10T16:21:41.000Z","size":27,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T13:40:53.564Z","etag":null,"topics":["brightscript","container","roku"],"latest_commit_sha":null,"homepage":"","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ahwayakchih.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-08T18:49:53.000Z","updated_at":"2024-07-05T02:15:27.000Z","dependencies_parsed_at":"2023-03-06T09:00:23.375Z","dependency_job_id":null,"html_url":"https://github.com/ahwayakchih/roku-dev-container","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ahwayakchih/roku-dev-container","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahwayakchih%2Froku-dev-container","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahwayakchih%2Froku-dev-container/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahwayakchih%2Froku-dev-container/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahwayakchih%2Froku-dev-container/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ahwayakchih","download_url":"https://codeload.github.com/ahwayakchih/roku-dev-container/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahwayakchih%2Froku-dev-container/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28629915,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["brightscript","container","roku"],"created_at":"2024-08-06T23:02:26.196Z","updated_at":"2026-01-21T07:33:38.042Z","avatar_url":"https://github.com/ahwayakchih.png","language":"Makefile","funding_links":[],"categories":["HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"# Roku Developer Tools Container\n\nThis is a container of basic tools for developers writing applications for [Roku](https://www.roku.com/) devices.\n\nThe idea is to have tools in a single place, separated from host system for safety.\n\n\n## Requirements\n\nAll you need to use this container is a Linux operating system, [podman](https://podman.io/), and at least 500 MB of free space.\nIt probably works on other systems and with other container runners too, but i did not test that (you're welcome to try and let me know :).\n\nTo actually run tests or application, you need a Roku device, of course.\nContainer does include [`brs`](https://github.com/sjbarag/brs) BrightScript interpreter, but it is very limited and does not support most of the SceneGraph components. It's mainly for running tests of pure BrightScript parts of your application.\n\nRoku device has to have Developer Settings enabled, as per described in documentation at https://developer.roku.com/en-gb/docs/developer-program/getting-started/developer-setup.md#step-1-set-up-your-roku-device-to-enable-developer-settings.\n\n\n## Installation\n\nYou can either download prebuilt container image, or build it locally.\n\n\n### Using prebuilt image\n\nYou can download signature and container image files, verify them and then load image for podman to use:\n\n```sh\ncurl -o rokudev.tar.zstd.sig https://c8s.neoni.net/downloads/rokudev.tar.zstd.sig \\\n  \u0026\u0026 curl -o rokudev.tar.zstd https://c8s.neoni.net/downloads/rokudev.tar.zstd \\\n  \u0026\u0026 curl https://github.com/ahwayakchih.keys | while read key; do echo \"ahwayakchih ${key}\" \u003e\u003e ahwayakchih.keys; done \\\n  \u0026\u0026 cat rokudev.tar.zstd | ssh-keygen -Y verify -n file -f ahwayakchih.keys -I ahwayakchih -s rokudev.tar.zstd.sig \\\n  \u0026\u0026 cat rokudev.tar.zstd | podman load \\\n  \u0026\u0026 rm -f rokudev.tar.zstd rokudev.tar.zstd.sig ahwayakchih.keys\n```\n\nIf everything goes well, you should be able to see container image available locally:\n\n```sh\npodman images | grep rokudev\n```\n\nIt should output something like this:\n\n```txt\nlocalhost/ahwayakchih/rokudev  latest      74ccba5bd523  3 days ago    426 MB\n```\n\n\n### Using locally built image\n\nTo build container image locally, simply clone this project:\n\n```sh\ngit clone https://github.com/ahwayakchih/roku-dev-container.git\n```\n\nEnter cloned directory:\n\n```sh\ncd roku-dev-container\n```\n\nand use `make` command:\n\n```sh\nmake\n```\n\nIf you already have the image, but want to rebuild it, use `make build` command instead:\n\n```sh\nmake build\n```\n\nIf you want to host your own build of container, you can create `make.env` file that containes something like this:\n\n```txt\nSSH_SIGN_KEY_PATH=/home/$$(id -un)/.ssh/github-sk.pub\nIMAGE_UPLOAD_PATH=yourSSHName:path/to/uploaded/images/\n```\n\nAfter that, you can use following command (which will archive image, create signature file and `scp` them both) to upload local image to specified host:\n\n```sh\nmake deploy\n```\n\n\n## Configuration\n\nAfter container image is ready to use by podman, there's nothing else required to be done.\nThat said, it is simpler to use this container through an alias command. Add this command alias to your shell configuration:\n\n```sh\nalias rokudev='test \"$(pwd)\" = \"$HOME\" \u0026\u0026 echo \"ERROR: It is not safe to use HOME directory for a project\" \u003e\u00262 || podman run --rm -it -v $(pwd):/app -e PROJECT_NAME=$(basename $(pwd)) ahwayakchih/rokudev'\n```\n\n\n## Usage (CLI)\n\n**WARNING**: For clarity, following intructions and command line examples assume that `rokudev` command alias is configured.\n\nCreate an empty directory for your project:\n\n```sh\nmkdir myrokuapp\n```\n\nNow enter the new directory and run initialization command:\n\n```sh\ncd myrokuapp\nrokudev init\n```\n\nThis should populate directory with a default project template that includes Makefile and has tests pre-configured:\n\n```sh\nls\n```\n\nshould output something like this:\n\n```txt\ncomponents/  config/  dev.env  fonts/  images/  Makefile  manifest  source/  tests/\n```\n\nNow, before continuing, edit `dev.env` file to let scripts know the IP address of your Roku device and developer password for it.\nFor example, if your Roku device is using \"192.168.100.100\" IP number, then something like this should be in the file:\n\n```txt\nDEPLOY_HOST=192.168.100.100\nDEPLOY_PASS=s3cre7\n```\n\nAfter you save the changes, you can build the project and run tests:\n\n```sh\nmake test\n```\n\nIf you just want to sideload your app, use following command:\n\n```sh\nmake deploy\n```\n\nTo just switch shell to the one inside container, use following command:\n\n```sh\nmake shell\n```\n\n\n## Acknowledgments\n\nThis container depends and builds on-top of following projects:\n\n 1. Alpine Linux: https://alpinelinux.org\n 2. node.js: https://nodejs.org\n 3. n: https://github.com/tj/n\n 4. node-ssdp: https://github.com/diversario/node-ssdp\n 5. cheerio: https://github.com/cheeriojs/cheerio\n 6. mri: https://github.com/lukeed/mri\n 7. minimatch: https://github.com/isaacs/minimatch\n 8. brighterscript: https://github.com/rokucommunity/brighterscript\n 9. bslint: https://github.com/rokucommunity/bslint\n10. rooibos: https://github.com/georgejecook/rooibos\n11. roku-deploy: https://github.com/rokucommunity/roku-deploy\n12. @hulu/roca: https://github.com/hulu/roca/\n13. brs: https://github.com/sjbarag/brs\n14. @dlenroc/roku: https://github.com/dlenroc/node-roku\n\nListed projects are used directly by the scripts/tools in the container.\nThey have their own dependencies which are also installed in the container, but not listed here.\n\n\n## License\n\nEvery project this container depends on has its own license. All are open-source.\n\n[Scripts and tools](./container/bin), and makefiles written specifically for this container are under BSD 3-clause license.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahwayakchih%2Froku-dev-container","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahwayakchih%2Froku-dev-container","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahwayakchih%2Froku-dev-container/lists"}