{"id":13593079,"url":"https://github.com/BashSupport/BashSupport","last_synced_at":"2025-04-09T02:32:26.592Z","repository":{"id":28691433,"uuid":"32211548","full_name":"BashSupport/BashSupport","owner":"BashSupport","description":"Bash and shell script language support for JetBrains IDEs. Please refer to www.bashsupport.com/news/bashsupport-pro-1.3/ for the reasons.","archived":true,"fork":false,"pushed_at":"2020-11-11T15:18:07.000Z","size":13893,"stargazers_count":588,"open_issues_count":176,"forks_count":77,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-04-01T14:48:57.988Z","etag":null,"topics":["bash","bashsupport","intellij","intellij-plugin","java","language-support","shell"],"latest_commit_sha":null,"homepage":"https://www.bashsupport.com/news/bashsupport-pro-1.3/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BashSupport.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-14T12:50:16.000Z","updated_at":"2025-02-11T09:58:55.000Z","dependencies_parsed_at":"2022-08-21T15:40:36.095Z","dependency_job_id":null,"html_url":"https://github.com/BashSupport/BashSupport","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BashSupport%2FBashSupport","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BashSupport%2FBashSupport/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BashSupport%2FBashSupport/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BashSupport%2FBashSupport/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BashSupport","download_url":"https://codeload.github.com/BashSupport/BashSupport/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247965657,"owners_count":21025413,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","bashsupport","intellij","intellij-plugin","java","language-support","shell"],"created_at":"2024-08-01T16:01:16.382Z","updated_at":"2025-04-09T02:32:21.581Z","avatar_url":"https://github.com/BashSupport.png","language":"Java","readme":"[![Build Status](https://travis-ci.org/jansorg/BashSupport.svg?branch=idea-162.x)](https://travis-ci.org/jansorg/BashSupport)\n\n**2020 project status: BashSupport has been retired. Please refer to [this page](https://plugins.jetbrains.com/plugin/4230-bashsupport) and [bashsupport.com](https://www.bashsupport.com/news/bashsupport-pro-1.3/) for the reasons. This repository has been archived.**\n\n2018 project status: The BashSupport project will only receive fixes for major problems\n\n*BashSupport is fully developed in my spare time since 2009. I'm unable to provide full support for BashSupport and will concentrate on fixes for major problems.*\n\n*Please let me know if you are interested in helping with the development. I will accept pull requests.*\n\n# About\nBashSupport adds Bash language support to IntelliJ based products.\nIt supports IntelliJ Ultimate and Community editions, PHPStorm, WebStorm, RubyMine, PyCharm and others.\n\n## License\nBashSupport is licensed under the terms of the Apache 2.0 license.\nRead the file [LICENSE.txt](LICENSE.txt) for further details.\n\nPlease see NOTICE for further details about the license and included code of other developers.\n\n## Documentation\nFor now, refer to the partially outdated [Documentation](http://www.ansorg-it.com/en/products_bashsupport.html).\n\n## Changelog\nSee the [Changelog](Changelog.md) for a list of the last changes in BashSupport.\n\n# Developer information\n## Building\nThe command line build uses Gradle. The build definition is in `build.gradle`, it uses the ant file `build.xml` to re-generate the Bash lexer.\n\nBuild it and execute the unit tests by running:\n```bash\n./gradlew clean build\n```\n\n## Contributing\nAt first, you need to setup IntelliJ to work on BashSupport.\nBashSupport's release version in in the master branch. There are many other branches like `idea-162.x` which were used for\nversions before 1.7.0.\n\nDevelopment on Mac OS X and Linux has been tested. Developing and building on Windows should work.\n\nCurrently all builds starting with 162.x are supported.\n\nThe usual way for contributors to work is this:\n- checkout the `master` branch\n- Fork a new branch\n- Do your changes and commit into the branch\n- Create a pull request\n- Before a new release all new changes and PRs will be merged into a single branch (forked from the main branch) to simplify the merging into the idea-* branches\n- This new branch is then merge into all supported idea-* and the new release builds will be packaged\n\n### Setup your IDE\nThese are the steps to setup IntelliJ to start with BashSupport development:\n- Download IntelliJ Community 2016.1.x, [Download page](https://www.jetbrains.com/idea/download/previous.html)\n- Unpack/install it on your system\n- Setup a new `IntelliJ Platform SDK` in your module settings, `File \u003e Project structure ... \u003e SDK \u003e Add new SDK`\n- Call it `IC-145.x`. This SDK name is referenced by the project's SDK configuration.\n- Setup plugin dependencies:\n    - Add the plugin `IntelliLang` to that SDK. Click the add button on the `Classpath` tab and add the files `plugins/IntelliLang/lib/*.jar`.\n    - Add the plugin `Terminal` to that SDK. Click the add button on the `Classpath` tab and add the files `plugins/terminal/lib/*.jar`.\n- Close the dialog and make sure that `Build \u003e Rebuild Project` works without errors\n\n### Contribution guidelines\n\nPull requests are highly welcome! If possible add a unit test for your change. Test cases are very important to make sure that BashSupport\nworks on all the different platforms.\n\nThere is no fixed code style, but please follow the style you see in the source files, if possible.\n\nIf you need help to get started or to find out how a certain bug or feature could be done, please open a new issue and outline\nwhat you would like to achieve and what your difficulties are.\n\n## Documentation of plugin development\nA highly recommended document is the [Plugin SDK documentation](http://www.jetbrains.org/intellij/sdk/docs/).\n\n## Bash lexer\nThe lexer is defined as a JFlex lexer, the definition is in the file bash.flex in the package com.ansorgit.plugins.bash.lang.lexer.\nThe actual lexing has to track several states, which makes the lexer definition quite difficult. There are lexer unit tests defined in the package com.ansorgit.plugins.bash.lang.lexer in the source directory \"test\". \n\n## Bash Parser\nThe parser is defined in com.ansorgit.plugins.bash.lang.parser and its subpackages. The entry point is the class \"BashParser\". The actual parsing is split into several smaller pieces. A piece usually implements the interface ParsingFunction.\n\nParsing Bash mostly is whitespace insensitive in most parts, but at some places the whitespace needs to be read by the parser, i.e. Bash is partly whitespace-sensitive. To achieve this a hack has been implemented (for further details see BashPsiBuilder.enableWhitespace).\n\nAlso, in Bash keywords are context-sensitive. The word if is a keyword if it's the first token on a line. If passed as parameter it's a normal word token. BashTokenRemapper remaps keywords to normal word tokens, depending on the context.\n\nString parsing is quite adventureous in Bash. Strings can contain subshells which can contain strings (with even more nesting). So `\"$(echo \"$a\")\"` is a string nested inside of another string. The class \"StringParsingState\" is used by the lexer to track the state of string nesting.\n\n## Bash PSI\nThe Bash PSI definition is in com.ansorgit.plugins.bash.lang.psi . The entry point is the class BashPsiCreator, which is used to map a AST node to a newly created PSI node.\n","funding_links":[],"categories":["Java"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBashSupport%2FBashSupport","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FBashSupport%2FBashSupport","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBashSupport%2FBashSupport/lists"}