smacker / go-tree-sitter

Golang bindings for tree-sitter https://github.com/tree-sitter/tree-sitter
MIT License
447 stars 124 forks source link

Updated grammar updater, wrote a README, added Swift grammar, updated Kotlin grammar to v0.3.1 #145

Closed micksmix closed 8 months ago

micksmix commented 9 months ago
  1. updated _automation/main.go script to prefer commits tied to a latest release, if it exists. If a grammar repository includes a Release, this updater now prioritizes updating to the latest release rather than the most recent commit. In cases where the repository lacks releases, it defaults to using the latest commit.
  2. Added a README.md for the updater
  3. Added a subcommand called run-tests which will run go test against every grammar's binding_test.go file
  4. Updated Kotlin grammar to latest release (v0.3.1)
  5. Updated .gitignore file to ignore VSCode and macOS related files that shouldn't be committed
micksmix commented 9 months ago

updated _automation/main.go script to prefer commits tied to a latest release, if it exists. If a grammar repository includes a Release, this updater now prioritizes updating to the latest release rather than the most recent commit. In cases where the repository lacks releases, it defaults to using the latest commit.

For background, the reason I added this is because the kotlin grammar's most recent commit actually is a failing build. However, that project cuts releases and by grabbing the commit for the latest release, it builds correctly.

micksmix commented 9 months ago

I added more to this PR.

I also added the Swift grammar for Apple's Swift programming language. I had to add a downloadSwift function to the automation updater to support retrieving this grammar...which doesn't include parser.c in the repo, but instead in zip file in a release.

micksmix commented 9 months ago

@smacker - Please let me know if you'd like me to make any changes, or split into separate PR's.

micksmix commented 9 months ago

@smacker Based on your feedback, I have greatly simplified my PR. I've added the optional updateBasedOn property. If it's not provided, it is presumed to be commit. If a user does provide "updatedBasedOn": "tag", then it will call fetchLastTag.

With these changes, I no longer need a custom downloadSwift function or any other additional functions.

This is a much simpler PR now with fewer changes. Thanks for your review.

micksmix commented 8 months ago

@smacker - Do you want changes to this to this PR or would you like me to re-architect this?

smacker commented 8 months ago

@micksmix Weird. I remember leaving comments here but I don't see them now... Anyway, PR looks great! Thank you.

I just added 2 small comments to ensure the behavior of the updater is consistent and straightforward.

micksmix commented 8 months ago

Changes that @smacker suggested have been made. Ran go test -v ./... and all tests passed. Kotlin grammar is at v0.3.5

smacker commented 8 months ago

Thank you so much!