Commit Graph

36 Commits

Author SHA1 Message Date
Lucien Greathouse
3b149cc875 Drop SnapshotError in favor of anyhow::Error 2020-12-18 12:16:05 -08:00
Lucien Greathouse
486b067567 Flatten snapshot middleware to be much simpler (#324)
* First take at flattening middleware for simpler code and better perf

* Undo debug prints

* Fix using wrong path in snapshot_from_vfs

* Disable some broken tests

* Re-enable (mistakenly?) disabled CSV test

* Fix some tests

* Update project file tests

* Fix benchmark
2020-06-17 13:47:09 -07:00
Lucien Greathouse
1cbe272e19 Fix malformed meta files causing panics.
Fixes #280.
2020-03-13 20:38:06 -07:00
Lucien Greathouse
5be4175ac3 Rename vfs -> memofs across the codebase 2020-03-10 18:05:31 -07:00
Lucien Greathouse
477e0ada32 VFS in external crate (#297)
* vroom

* Port dir middleware

* Filter rules

* Directory metadata

* Project support

* Enable Lua support

* StringValue support

* CSV

* rbxm, rbxmx, and rbxlx

* JSON models

* Clean up some warnings

* Strip out PathMap

* Unwatch paths when they're reported as removed

* Fix 'rojo upload' behavior

* Upgrade to Insta 0.13.1

* Update dependencies

* Release 0.6.0-alpha.2

* Fix bad merge

* Replace MemoryBackend with InMemoryFs

* Sledgehammer tests into passing for now

* Txt middleware

* Update easy snapshot tests

* Lua tests

* Project middleware tests

* Try to fix test failures by sorting

* Port first set of serve session tests

* Add InMemoryFs::raise_event

* Finish porting serve session tests

* Remove UI code for introspecting VFS for now

* VFS docs
2020-03-10 17:38:49 -07:00
Lucien Greathouse
4b89bb087a Attach context to instances produced by middleware (#273) 2019-12-04 11:38:28 -08:00
Lucien Greathouse
948303aac8 Remove InstanceSnapshotContext in favor of InstanceContext (#271)
* Drop plugin context on the floor

* Remove redirect from old context to new context

* Pass InstanceContext via & instead of &mut reference

* Re-use context value in ChangeProcessor from metadata
2019-12-03 16:11:51 -08:00
Lucien Greathouse
a48c238ed7 Add InstanceMetadata builder (#269)
* Add InstanceMetadata builder, with context field for globbing

* Revert snapshot changes

* Port snapshot functions to InstanceMetadata builder-ish pattern

* Remove IgnoreGlob struct

* Elide lifetime
2019-12-03 14:49:40 -08:00
Lucien Greathouse
c3f6a17bae Add builder-ish methods to InstanceSnapshot to make middleware code more readable 2019-11-19 14:02:57 -08:00
Lucien Greathouse
02f98a4053 Remove lifetime from SnapshotInstanceResult 2019-11-19 13:06:31 -08:00
Lucien Greathouse
246fd5f6c4 Add init scripts as relevant paths to all directories.
This doesn't feel ideal. Though it's true that all directories are influenced by
any init scripts they have, the directory middleware shouldn't need to know
about Lua.

I don't really want to go back into working on the middleware chain since it
mostly feels like busywork when there are other things to build on in Rojo.

also all of this feels really complicated
2019-11-18 18:28:36 -08:00
Lucien Greathouse
715022def5 Make init files copy metadata from folder.
Fixes #267.
2019-11-18 18:16:37 -08:00
Lucien Greathouse
44c94da2d8 Fix clippy warnings 2019-10-17 18:22:53 -07:00
Lucien Greathouse
82678235ab VFS Improvements (#259)
This PR refactors all of the methods on `Vfs` from accepting `&mut self` to
accepting `&self` and keeping data wrapped in a mutex. This builds on previous
changes to make reference count file contents and cleans up the last places
where we're returning borrowed data out of the VFS interface.

Once this change lands, there are two possible directions we can go that I see:
* Conservative: Refactor all remaining `&mut Vfs` handles to `&Vfs`
* Interesting: Embrace ref counting by changing `Vfs` methods to accept `self:
  Arc<Self>`, which makes the `VfsEntry` API no longer need an explicit `Vfs`
  argument for its operations.

* Change VfsFetcher to be immutable with internal locking
* Refactor Vfs::would_be_resident
* Refactor Vfs::read_if_not_exists
* Refactor Vfs::raise_file_removed
* Refactor Vfs::raise_file_changed
* Add Vfs::get_internal as bits of Vfs::get
* Switch Vfs to use internal locking
* Migrate all Vfs methods from &mut self to &self
* Make VfsEntry access Vfs immutably
* Remove outer VFS locking (#260)
* Refactor all snapshot middleware to accept &Vfs instead of &mut Vfs
* Remove outer VFS Mutex across the board
2019-10-16 15:45:23 -07:00
Lucien Greathouse
1c6c1298d5 Add init.meta.json support, untested 2019-10-12 23:45:38 -07:00
Lucien Greathouse
1967f738a8 Make all file contents be Arc<Vec<u8>> instead of &[u8] 2019-10-12 14:17:52 -07:00
Lucien Greathouse
1031600c63 Batch rename: imfs -> vfs 2019-10-12 13:58:00 -07:00
Lucien Greathouse
f3dc78b7cd Make InstanceSnapshotContext mutable through whole middleware pipeline 2019-10-10 14:07:10 -07:00
Lucien Greathouse
f0cd4333c3 Thread InstanceSnapshotContext through all SnapshotMiddleware 2019-10-10 11:44:33 -07:00
Lucien Greathouse
6d38a785ed Make SnapshotMiddleware::from_instance have a default impl 2019-10-10 10:44:46 -07:00
Lucien Greathouse
e46f9fd94f Simplify snapshot code using match_file_name utility 2019-10-09 18:27:52 -07:00
Lucien Greathouse
2957e8ad73 Make Lua snapshot middleware test sort maps 2019-10-08 16:03:15 -07:00
Lucien Greathouse
f83abe15cb Add test for ensuring that scripts can be disabled with .meta.json files 2019-10-08 15:46:51 -07:00
Lucien Greathouse
8a9a72fd50 Refactor .meta.json into AdjacentMetadata type more strongly 2019-10-08 15:42:44 -07:00
Lucien Greathouse
13cb0a27a0 Make .meta.json changes cause scripts to be updated 2019-10-08 15:30:16 -07:00
Lucien Greathouse
fa817e3cdd Add baseline support for adjacent meta files for scripts 2019-10-08 14:14:44 -07:00
Lucien Greathouse
98519da7d9 Reintroduce instigating paths for snapshot middleware 2019-10-04 18:36:04 -07:00
Lucien Greathouse
530a7aa834 Rename 'contributing paths' to 'relevant paths' 2019-10-04 17:36:26 -07:00
Lucien Greathouse
2598ea3577 Add contributing paths to SnapshotLua, switch to Insta tests 2019-10-01 14:09:05 -07:00
Lucien Greathouse
c140823bea Move Imfs snapshotting into ImfsDebug 2019-09-24 18:14:48 -07:00
Lucien Greathouse
71968fca0d Fold imfs::new back into imfs 2019-09-19 15:25:07 -07:00
Lucien Greathouse
bb6ab74c19 Clean up warnings, add RojoTree into ServeSession 2019-09-09 15:17:03 -07:00
Lucien Greathouse
5eb6754b7c Implement metadata, replacing source field and laying foundations 2019-09-06 14:21:47 -07:00
Lucien Greathouse
a914a92cea Add SnapshotSource property 2019-09-05 11:27:16 -07:00
Lucien Greathouse
2fb2342fd4 Fix Lua snapshot code to work with children.
It's also way easier to read now
2019-08-29 17:13:36 -07:00
Lucien Greathouse
6f7dbe99fe Move Rojo server into root of the repository 2019-08-27 16:56:52 -07:00