Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/awslabs/smithy-intellij
Smithy IntelliJ provides IDE integration for the Smithy IDL.
https://github.com/awslabs/smithy-intellij
intellij-plugin smithy smithy-models
Last synced: 3 months ago
JSON representation
Smithy IntelliJ provides IDE integration for the Smithy IDL.
- Host: GitHub
- URL: https://github.com/awslabs/smithy-intellij
- Owner: awslabs
- License: apache-2.0
- Created: 2021-01-30T00:49:02.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-03-25T15:16:21.000Z (over 2 years ago)
- Last Synced: 2024-05-21T03:36:45.569Z (6 months ago)
- Topics: intellij-plugin, smithy, smithy-models
- Language: Java
- Homepage:
- Size: 217 KB
- Stars: 9
- Watchers: 5
- Forks: 2
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- awesome-smithy - Intellij plugin - favicon.png" alt="(official)" title="Smithy Official" height="16px"> 🚧 - Provides IDE integration for the Smithy IDL within IntelliJ IDEA. (IDE Support / Server Code Generators)
README
## Smithy IntelliJ
[![Build Status](https://github.com/awslabs/smithy-intellij/workflows/ci/badge.svg)](https://github.com/awslabs/smithy-intellij/actions/workflows/ci.yml)**WARNING: This repository in development. All interfaces are subject to change.**
**Smithy IntelliJ** provides IDE integration for the [Smithy IDL](https://awslabs.github.io/smithy/) within
IntelliJ IDEA. It utilizes [smithy-language-server](https://github.com/awslabs/smithy-language-server) for its
[Language Server Protocol](https://microsoft.github.io/language-server-protocol/) implementation.## Managing Smithy model dependencies while using the plugin
When using the Smithy Intellij Plugin, dependencies used by the model within the workspace must be specified, so that
the plugin can inject them when launching the Smithy Language Server. Dependencies must be specified in the workspace
at `/build/smithy-dependencies.json` or `.smithy.json`, listing all the required artifacts along with their source
repositories:
```json
{
"artifacts": [
"software.amazon.smithy:smithy-aws-traits:1.7.0",
"software.amazon.smithy:smithy-aws-iam-traits:1.7.0",
"com.example.my-traits:0.0.1"
],
"repositories": [
"file:/Users/me/.m2/repository/",
"https://repo.maven.apache.org/maven2/"
]
}
```## Running this plugin for development
Clone the [smithy-language-server](https://github.com/awslabs/smithy-language-server) repository to a separate directory:
`git clone [email protected]:awslabs/smithy-language-server.git ~/smithy-language-server`Change to that directory, and build and publish the locally:
`cd ~/smithy-language-server && ./gradlew build publishToMavenLocal`From this plugin directory, use `ideRun` task to start a sandboxed instance of IntelliJ with the plugin loaded:
`./gradlew runIde`## Developing the Lexer and Parser classes
The classes located at `/src/main/gen` are generated. `SmithyLexer` is generated from the `Smithy.Flex` file via the
`generateSmithyLexer` Gradle task. `SmithyParser` and its PSI implementation classes are generated from the
`Smithy.bnf` file via the `generateSmithyParser` Gradle task. The `generateSmithyParser` task requires JDK11 or higher.
When using JDK11 or higher, both tasks will be run prior to compilation during a standard Gradle build.## Security
See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information.
## License
This project is licensed under the Apache-2.0 License.