Prototype: Add annotations
command
#930
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Provide a way to share shims across projects:
This is feature is similar to the
sorbet-typed
command ofsrb
.Implementation
This command follows these steps:
index.json
(see below)Gemfile.lock
sorbet/rbi/annotations
that do not match the gems insideGemfile.lock
Gemfile.lock
, if the gem is listed inindex.json
, download it and store it insorbet/rbi/annotations/
The structure of the repo must be as follows:
For now, the structure of the
index.json
is the following:Where
gem1
andgem2
are the names of gems we can find in the repo under/rbi/annotations/
. The{}
hash will be used to store options later. We use a hash rather than an array to avoid duplicated entries.There are a lot of TODOs remaining:
But I think this is enough to get us started.
An example of repository can be found at https://github.com/Shopify/rbi-central.
Tests
See automated tests.
Special thanks to @KaanOzkan who has been instrumental on making all of this working internally and ready to open-source.