{"id":26519872,"url":"https://github.com/aspizu/goboscript","last_synced_at":"2025-03-21T11:34:11.871Z","repository":{"id":50887125,"uuid":"509565730","full_name":"aspizu/goboscript","owner":"aspizu","description":"goboscript is the Scratch compiler","archived":false,"fork":false,"pushed_at":"2024-04-23T15:17:03.000Z","size":8169,"stargazers_count":47,"open_issues_count":0,"forks_count":10,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-04-23T16:33:42.340Z","etag":null,"topics":["compiler","programming-language","rust","scratch"],"latest_commit_sha":null,"homepage":"https://aspizu.github.io/goboscript","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aspizu.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-07-01T19:18:46.000Z","updated_at":"2024-06-17T15:43:14.812Z","dependencies_parsed_at":"2023-10-27T01:31:37.048Z","dependency_job_id":"c57174c3-514e-498f-8521-1bd431543dac","html_url":"https://github.com/aspizu/goboscript","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspizu%2Fgoboscript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspizu%2Fgoboscript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspizu%2Fgoboscript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspizu%2Fgoboscript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aspizu","download_url":"https://codeload.github.com/aspizu/goboscript/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244792655,"owners_count":20511163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["compiler","programming-language","rust","scratch"],"created_at":"2025-03-21T11:34:10.618Z","updated_at":"2025-03-21T11:34:11.847Z","avatar_url":"https://github.com/aspizu.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# goboscript\n\n![image](https://shields.io/crates/l/goboscript)\n\n![](https://u.cubeupload.com/aspizu/Untitled202412111914.png)\n\n[**Installation and documentation**](https://aspizu.github.io/goboscript)\n\ngoboscript is a text-based programming language which compiles to Scratch. It allows\nyou to write Scratch projects in text, and compile it into a .sb3 file - which can be\nopened in the Scratch editor, TurboWarp or be uploaded to the Scratch website.\n\ngoboscript allows you to create advanced Scratch projects with ease, you can use any\ntext editor, use a version control system such as git. You can refactor your code\nusing search and replace. Text code can be copy pasted, which allows you to easily reuse\ncode or share it with others. goboscript syntax is concise and easy to read.\n\ngoboscript allows you to integrate external tooling and workflows, such as using a\nscript to generate costumes for a text rendering engine. Or loading in images into\nlists.\n\ngoboscript has a powerful macro system - similar to Rust's macro system. This allows\nyou to write macros to generate code.\n\ngoboscript is more than just an 1:1 mapping of Scratch blocks to text, it also has\nadditional features like local variables for procedures (custom blocks).\n\ngoboscript also performs optimizations, detects problems and unused code.\n\n# Sister Projects\n\n### [**Package Manager**](https://github.com/aspizu/backpack)\n\n### [**Decompiler**](https://github.com/aspizu/sb2gs)\n\n# Contributing\n\ngoboscript welcomes contributions in the form of Pull Requests.\n\ngoboscript is written in Rust. You'll need to install the [Rust toolchain](https://www.rust-lang.org/tools/install)\nfor development.\n\n\u003e [!NOTE]\n\u003e To install goboscript, follow instructions at [aspizu.github.io/goboscript](https://aspizu.github.io/goboscript).\n\u003e These instructions are for people who want to develop goboscript itself.\n\n```sh\ngit clone https://github.com/aspizu/goboscript\ncd goboscript\n```\n\n### Development\n\nAfter cloning the repository, run goboscript locally from the repository root with:\n\n```sh\ncargo run -- build -i your_project/\n```\n\nBut, to make development easier, and to validate the generated Scratch project - use\nthe `tools/run` script:\n\n```sh\ntools/run compile\n```\n\nThis assumes that you have set-up a testing project at `playground/`.\nIt will compile the project, validate it using the schemas from `scratch-parser`.\nIf the validation fails, Scratch will refuse to load the project. To further debug\nthe project, the generated `project.json` file is extracted from the `.sb3` file in the\n`playground/` directory.\n\nLets say that you modified the generated project in the Scratch editor or Turbowarp,\nand you want to look at the `project.json`. You can extract it with:\n\n```sh\ntools/run uncompile\n```\n\nLets say that goboscript produced a broken project, and you are able to fix it by hand -\nby modifying the `project.json`. You can add back the `project.json` to the `.sb3` file\nwith:\n\n```sh\ntools/run patch\n```\n\nIf you want to validate some `.sb3` file, use:\n\n```sh\ntools/run check path/to/project.sb3\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faspizu%2Fgoboscript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faspizu%2Fgoboscript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faspizu%2Fgoboscript/lists"}