Rojo enables Roblox developers to use professional-grade software engineering tools https://rojo.space
Find a file
Lucien Greathouse f66860bdfe
Break apart plugin reconciler (#332)
* Start splitting apart reconciler, with tests

* Reify children in reify

* Baseline hydrate implementation

* Remove debug print

* Scaffold out diff implementation, just supporting name changes

* invariant -> error in decodeValue

* Flesh out diff and add getProperty

* Clear out top-level reconciler interface, start updating code that touches it

* Address review feedback

* Add (experimental) Selene configuration

* Add emptiness checks to PatchSet, remove unimplement invert method

* Improve descendant destruction behavior in InstanceMap

* Track instanceId on all reify errors

* Base implementation of applyPatch, returning partial patches on failure

* Change reify to accept InstanceMap and insert instances into it

* Start testing applyPatch for removals

* Add test for applyPatch adding instances successfully and not

* Add , which is just error with formatting

* Correctly use new diff and applyPatch APIs

* Improve applyPatch logging and fix field name typo

* Better debug output when reify fails

* Print out unapplied patch in debug mode

* Don't write properties if their values are not different.

This was exposed trying to sync the Rojo plugin, which
has a gigantic ModuleScript in it with the reflection
database. This workaround was present in some form in
many versions of Rojo, and I guess we still need it.

This time, I actually documented why it's here so that
I don't forget for the umpteenth time...

* Add placeholder test that needs to happen still

* Introduce easier plugin testing, write applyPatch properties test

* Delete legacy get/setCanonicalProperty files

* Fix trying to remove numbers instead of instances

* Change applyPatch to return partial patches instead of binary success

* Work towards being able to decode and apply refs

* Add helpers for PatchSet assertions

* Apply refs in reify, test all cases

* Improve diagnostics when patches fail to apply

* Stop logging when destroying untracked instances, it's ok

* Remove read before setting property in applyPatch

* Fix diff thinking all properties are changed
2020-11-11 16:30:23 -08:00
.cargo Build with static CRT on Windows, fixes #89. 2019-02-08 13:52:57 -08:00
.github/workflows Remove outdated notices 2020-09-09 17:39:24 -07:00
assets Remove outdated notices 2020-09-09 17:39:24 -07:00
benches Flatten snapshot middleware to be much simpler (#324) 2020-06-17 13:47:09 -07:00
bin Move .luacheckrc for better editor detection 2019-10-02 10:42:10 -07:00
clibrojo Stop having clibrojo as a default project, update docs 2019-11-07 18:24:16 -08:00
memofs Remove outdated notices 2020-09-09 17:39:24 -07:00
plugin Break apart plugin reconciler (#332) 2020-11-11 16:30:23 -08:00
rojo-insta-ext Write tests and ensure adding instances works 2019-10-17 13:46:59 -07:00
rojo-test Replace rojo-test with regular tests folder again (#323) 2020-05-20 15:30:05 -07:00
src Remove outdated notices 2020-09-09 17:39:24 -07:00
test-projects Remove warnings for upgrading from 0.4.x 2019-11-02 23:41:32 -07:00
tests Enable globIgnorePaths by default 2020-06-17 14:42:46 -07:00
.editorconfig Fix Insta snapshot files having their line endings truncated when edited 2019-11-25 18:10:39 -08:00
.gitignore Break apart plugin reconciler (#332) 2020-11-11 16:30:23 -08:00
.gitmodules Release 6.0.0-rc.1 2020-03-29 16:58:37 -07:00
.luacheckrc Break apart plugin reconciler (#332) 2020-11-11 16:30:23 -08:00
build.rs Release 6.0.0-rc.1 2020-03-29 16:58:37 -07:00
Cargo.lock Update CLI dependencies 2020-10-29 10:36:20 -07:00
Cargo.toml Remove outdated notices 2020-09-09 17:39:24 -07:00
CHANGELOG.md Remove outdated notices 2020-09-09 17:39:24 -07:00
CONTRIBUTING.md Remove outdated notices 2020-09-09 17:39:24 -07:00
foreman.toml Break apart plugin reconciler (#332) 2020-11-11 16:30:23 -08:00
LICENSE.txt Tweak bottom of README, move LICENSE to LICENSE.txt 2019-01-18 20:57:19 -08:00
perf-test.sh Stop building Rojo in rojo-test, since it doesn't work as intended 2020-05-02 21:39:13 -07:00
README.md Remove outdated notices 2020-09-09 17:39:24 -07:00
selene.toml Break apart plugin reconciler (#332) 2020-11-11 16:30:23 -08:00

 

Rojo is a tool designed to enable Roblox developers to use professional-grade software engineering tools.

With Rojo, it's possible to use industry-leading tools like Visual Studio Code and Git.

Rojo is designed for power users who want to use the best tools available for building games, libraries, and plugins.

Features

Rojo enables:

  • Working on scripts and models from the filesystem, in your favorite editor
  • Versioning your game, library, or plugin using Git or another VCS
  • Streaming rbxmx and rbxm models into your game in real time
  • Packaging and deploying your project to Roblox.com from the command line

In the future, Rojo will be able to:

  • Sync instances from Roblox Studio to the filesystem
  • Automatically convert your existing game to work with Rojo
  • Import custom instances like MoonScript code

Documentation

Documentation is hosted in the rojo.space repository.

Contributing

Check out our contribution guide for detailed instructions for helping work on Rojo!

Pull requests are welcome!

Rojo supports Rust 1.43.1 and newer. The minimum supported version of Rust is based on the latest versions of the dependencies that Rojo has.

License

Rojo is available under the terms of the Mozilla Public License, Version 2.0. See LICENSE.txt for details.