├── .github
├── dependabot.yml
└── workflows
│ └── maven.yml
├── .gitignore
├── .mvn
└── extensions.xml
├── .project
├── .settings
└── org.eclipse.core.resources.prefs
├── CONTRIBUTING.md
├── Jenkinsfile
├── LICENSE
├── README.md
├── RELEASE_NOTES.md
├── SECURITY.md
├── artwork
└── sh.svg
├── org.eclipse.shellwax.core
├── .classpath
├── .gitignore
├── .project
├── .settings
│ ├── org.eclipse.core.resources.prefs
│ ├── org.eclipse.jdt.core.prefs
│ ├── org.eclipse.jdt.ui.prefs
│ └── org.eclipse.pde.prefs
├── META-INF
│ └── MANIFEST.MF
├── build.properties
├── icons
│ ├── sh.png
│ └── sh@2x.png
├── plugin.xml
└── src
│ └── org
│ └── eclipse
│ └── shellwax
│ └── internal
│ ├── BashLanguageServer.java
│ ├── BashShebangContentDescriber.java
│ ├── ShDocumentSetupParticipant.java
│ └── run
│ ├── ShLaunchConfig.java
│ ├── ShLaunchShortcut.java
│ ├── ShMainTab.java
│ └── ShTabGroup.java
├── org.eclipse.shellwax.feature
├── .gitignore
├── .project
├── .settings
│ └── org.eclipse.core.resources.prefs
├── build.properties
├── feature.properties
└── feature.xml
├── org.eclipse.shellwax.site
├── .gitignore
├── .project
├── .settings
│ └── org.eclipse.core.resources.prefs
├── category.xml
└── pom.xml
├── org.eclipse.shellwax.target
└── target-platform.target
└── pom.xml
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: maven
4 | directory: "/"
5 | schedule:
6 | interval: daily
7 | open-pull-requests-limit: 10
8 | - package-ecosystem: github-actions
9 | directory: "/"
10 | schedule:
11 | interval: daily
--------------------------------------------------------------------------------
/.github/workflows/maven.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a Java project with Maven
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
3 |
4 | name: Build Tycho
5 |
6 | on:
7 | push:
8 | branches: [ master ]
9 | pull_request:
10 | branches: [ master ]
11 |
12 | jobs:
13 | build:
14 |
15 | runs-on: ubuntu-latest
16 |
17 | steps:
18 | - uses: actions/checkout@v4
19 | - name: Set up JDK 21
20 | uses: actions/setup-java@v4
21 | with:
22 | java-version: '21'
23 | distribution: 'temurin'
24 | - name: Set up Maven
25 | uses: stCarolas/setup-maven@v5
26 | with:
27 | maven-version: 3.9.9
28 | - name: Cache local Maven repository
29 | uses: actions/cache@v4
30 | with:
31 | path: ~/.m2/repository
32 | key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
33 | restore-keys: |
34 | ${{ runner.os }}-maven-
35 | - name: Build with Maven
36 | run: mvn -U -V -ntp -e clean install --file pom.xml
37 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /target/
2 | */.polyglot.*
3 |
--------------------------------------------------------------------------------
/.mvn/extensions.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | org.eclipse.tycho
5 | tycho-build
6 | 4.0.13
7 |
8 |
--------------------------------------------------------------------------------
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | shellwax
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.m2e.core.maven2Builder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.m2e.core.maven2Nature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.core.resources.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | encoding/=UTF-8
3 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing to Eclipse ShellWax
2 |
3 | Thanks for your interest in this project.
4 |
5 | ## Project description
6 |
7 | The Eclipse ShellWax provides smart editing support for shell script files.
8 |
9 | * https://projects.eclipse.org/projects/tools.shellwax
10 |
11 | ## Developer resources
12 |
13 | Information regarding source code management, builds, coding standards, and
14 | more.
15 |
16 | * https://projects.eclipse.org/projects/tools.shellwax/developer
17 |
18 | This project uses [GitHub issues](https://github.com/eclipse/shellwax/issues) on the respective repositories to track ongoing development and issues.
19 |
20 | Be sure to search for existing bugs before you create another one. Remember that
21 | contributions are always welcome!
22 |
23 | ## Eclipse Development Process
24 |
25 | This Eclipse Foundation open project is governed by the Eclipse Foundation
26 | Development Process and operates under the terms of the Eclipse IP Policy.
27 |
28 | ## Eclipse Contributor Agreement
29 |
30 | Before your contribution can be accepted by the project team contributors must
31 | electronically sign the Eclipse Contributor Agreement (ECA).
32 |
33 | * http://www.eclipse.org/legal/ECA.php
34 |
35 | Commits that are provided by non-committers must have a **Signed-off-by** field in
36 | the footer indicating that the author is aware of the terms by which the
37 | contribution has been provided to the project. The non-committer must
38 | additionally have an Eclipse Foundation account and must have a signed Eclipse
39 | Contributor Agreement (ECA) on file.
40 |
41 | For more information, please see the Eclipse Committer Handbook:
42 | https://www.eclipse.org/projects/handbook/#resources-commit
43 |
44 | ## Contact
45 |
46 | Contact the project developers via the project's *dev* list.
47 |
48 | * mailto:shellwax-dev@eclipse.org
49 |
--------------------------------------------------------------------------------
/Jenkinsfile:
--------------------------------------------------------------------------------
1 | pipeline {
2 | options {
3 | timeout(time: 60, unit: 'MINUTES')
4 | buildDiscarder(logRotator(numToKeepStr:'10'))
5 | }
6 | agent {
7 | label 'ubuntu-latest'
8 | }
9 | tools {
10 | maven 'apache-maven-latest'
11 | jdk 'temurin-jdk21-latest'
12 | }
13 | stages {
14 | stage('Build') {
15 | steps {
16 | withCredentials([file(credentialsId: 'secret-subkeys.asc', variable: 'KEYRING'),string(credentialsId: 'gpg-passphrase', variable: 'MAVEN_GPG_PASSPHRASE')]) {
17 | wrap([$class: 'Xvnc', useXauthority: true]) {
18 | sh 'mvn clean verify -B -Dmaven.test.error.ignore=true -Dmaven.test.failure.ignore=true -Psign -Dmaven.repo.local=$WORKSPACE/.m2/repository -Dtycho.pgp.signer.bc.secretKeys="${KEYRING}"'
19 | }
20 | }
21 | }
22 | post {
23 | always {
24 | archiveArtifacts artifacts: 'org.eclipse.shellwax.site/target/,*/target/work/configuration/*.log,*/target/work/data/.metadata/.log,*/target/work/data/languageServers-log/**'
25 | }
26 | }
27 | }
28 | stage('Deploy') {
29 | when {
30 | branch 'master'
31 | }
32 | steps {
33 | sshagent ( ['projects-storage.eclipse.org-bot-ssh']) {
34 | sh 'ssh genie.shellwax@projects-storage.eclipse.org rm -rf /home/data/httpd/download.eclipse.org/shellwax/snapshots'
35 | sh 'ssh genie.shellwax@projects-storage.eclipse.org mkdir -p /home/data/httpd/download.eclipse.org/shellwax/snapshots'
36 | sh 'scp -r org.eclipse.shellwax.site/target/repository/* genie.shellwax@projects-storage.eclipse.org:/home/data/httpd/download.eclipse.org/shellwax/snapshots'
37 | }
38 | }
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Eclipse Public License - v 2.0
2 |
3 | THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
4 | PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION
5 | OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
6 |
7 | 1. DEFINITIONS
8 |
9 | "Contribution" means:
10 |
11 | a) in the case of the initial Contributor, the initial content
12 | Distributed under this Agreement, and
13 |
14 | b) in the case of each subsequent Contributor:
15 | i) changes to the Program, and
16 | ii) additions to the Program;
17 | where such changes and/or additions to the Program originate from
18 | and are Distributed by that particular Contributor. A Contribution
19 | "originates" from a Contributor if it was added to the Program by
20 | such Contributor itself or anyone acting on such Contributor's behalf.
21 | Contributions do not include changes or additions to the Program that
22 | are not Modified Works.
23 |
24 | "Contributor" means any person or entity that Distributes the Program.
25 |
26 | "Licensed Patents" mean patent claims licensable by a Contributor which
27 | are necessarily infringed by the use or sale of its Contribution alone
28 | or when combined with the Program.
29 |
30 | "Program" means the Contributions Distributed in accordance with this
31 | Agreement.
32 |
33 | "Recipient" means anyone who receives the Program under this Agreement
34 | or any Secondary License (as applicable), including Contributors.
35 |
36 | "Derivative Works" shall mean any work, whether in Source Code or other
37 | form, that is based on (or derived from) the Program and for which the
38 | editorial revisions, annotations, elaborations, or other modifications
39 | represent, as a whole, an original work of authorship.
40 |
41 | "Modified Works" shall mean any work in Source Code or other form that
42 | results from an addition to, deletion from, or modification of the
43 | contents of the Program, including, for purposes of clarity any new file
44 | in Source Code form that contains any contents of the Program. Modified
45 | Works shall not include works that contain only declarations,
46 | interfaces, types, classes, structures, or files of the Program solely
47 | in each case in order to link to, bind by name, or subclass the Program
48 | or Modified Works thereof.
49 |
50 | "Distribute" means the acts of a) distributing or b) making available
51 | in any manner that enables the transfer of a copy.
52 |
53 | "Source Code" means the form of a Program preferred for making
54 | modifications, including but not limited to software source code,
55 | documentation source, and configuration files.
56 |
57 | "Secondary License" means either the GNU General Public License,
58 | Version 2.0, or any later versions of that license, including any
59 | exceptions or additional permissions as identified by the initial
60 | Contributor.
61 |
62 | 2. GRANT OF RIGHTS
63 |
64 | a) Subject to the terms of this Agreement, each Contributor hereby
65 | grants Recipient a non-exclusive, worldwide, royalty-free copyright
66 | license to reproduce, prepare Derivative Works of, publicly display,
67 | publicly perform, Distribute and sublicense the Contribution of such
68 | Contributor, if any, and such Derivative Works.
69 |
70 | b) Subject to the terms of this Agreement, each Contributor hereby
71 | grants Recipient a non-exclusive, worldwide, royalty-free patent
72 | license under Licensed Patents to make, use, sell, offer to sell,
73 | import and otherwise transfer the Contribution of such Contributor,
74 | if any, in Source Code or other form. This patent license shall
75 | apply to the combination of the Contribution and the Program if, at
76 | the time the Contribution is added by the Contributor, such addition
77 | of the Contribution causes such combination to be covered by the
78 | Licensed Patents. The patent license shall not apply to any other
79 | combinations which include the Contribution. No hardware per se is
80 | licensed hereunder.
81 |
82 | c) Recipient understands that although each Contributor grants the
83 | licenses to its Contributions set forth herein, no assurances are
84 | provided by any Contributor that the Program does not infringe the
85 | patent or other intellectual property rights of any other entity.
86 | Each Contributor disclaims any liability to Recipient for claims
87 | brought by any other entity based on infringement of intellectual
88 | property rights or otherwise. As a condition to exercising the
89 | rights and licenses granted hereunder, each Recipient hereby
90 | assumes sole responsibility to secure any other intellectual
91 | property rights needed, if any. For example, if a third party
92 | patent license is required to allow Recipient to Distribute the
93 | Program, it is Recipient's responsibility to acquire that license
94 | before distributing the Program.
95 |
96 | d) Each Contributor represents that to its knowledge it has
97 | sufficient copyright rights in its Contribution, if any, to grant
98 | the copyright license set forth in this Agreement.
99 |
100 | e) Notwithstanding the terms of any Secondary License, no
101 | Contributor makes additional grants to any Recipient (other than
102 | those set forth in this Agreement) as a result of such Recipient's
103 | receipt of the Program under the terms of a Secondary License
104 | (if permitted under the terms of Section 3).
105 |
106 | 3. REQUIREMENTS
107 |
108 | 3.1 If a Contributor Distributes the Program in any form, then:
109 |
110 | a) the Program must also be made available as Source Code, in
111 | accordance with section 3.2, and the Contributor must accompany
112 | the Program with a statement that the Source Code for the Program
113 | is available under this Agreement, and informs Recipients how to
114 | obtain it in a reasonable manner on or through a medium customarily
115 | used for software exchange; and
116 |
117 | b) the Contributor may Distribute the Program under a license
118 | different than this Agreement, provided that such license:
119 | i) effectively disclaims on behalf of all other Contributors all
120 | warranties and conditions, express and implied, including
121 | warranties or conditions of title and non-infringement, and
122 | implied warranties or conditions of merchantability and fitness
123 | for a particular purpose;
124 |
125 | ii) effectively excludes on behalf of all other Contributors all
126 | liability for damages, including direct, indirect, special,
127 | incidental and consequential damages, such as lost profits;
128 |
129 | iii) does not attempt to limit or alter the recipients' rights
130 | in the Source Code under section 3.2; and
131 |
132 | iv) requires any subsequent distribution of the Program by any
133 | party to be under a license that satisfies the requirements
134 | of this section 3.
135 |
136 | 3.2 When the Program is Distributed as Source Code:
137 |
138 | a) it must be made available under this Agreement, or if the
139 | Program (i) is combined with other material in a separate file or
140 | files made available under a Secondary License, and (ii) the initial
141 | Contributor attached to the Source Code the notice described in
142 | Exhibit A of this Agreement, then the Program may be made available
143 | under the terms of such Secondary Licenses, and
144 |
145 | b) a copy of this Agreement must be included with each copy of
146 | the Program.
147 |
148 | 3.3 Contributors may not remove or alter any copyright, patent,
149 | trademark, attribution notices, disclaimers of warranty, or limitations
150 | of liability ("notices") contained within the Program from any copy of
151 | the Program which they Distribute, provided that Contributors may add
152 | their own appropriate notices.
153 |
154 | 4. COMMERCIAL DISTRIBUTION
155 |
156 | Commercial distributors of software may accept certain responsibilities
157 | with respect to end users, business partners and the like. While this
158 | license is intended to facilitate the commercial use of the Program,
159 | the Contributor who includes the Program in a commercial product
160 | offering should do so in a manner which does not create potential
161 | liability for other Contributors. Therefore, if a Contributor includes
162 | the Program in a commercial product offering, such Contributor
163 | ("Commercial Contributor") hereby agrees to defend and indemnify every
164 | other Contributor ("Indemnified Contributor") against any losses,
165 | damages and costs (collectively "Losses") arising from claims, lawsuits
166 | and other legal actions brought by a third party against the Indemnified
167 | Contributor to the extent caused by the acts or omissions of such
168 | Commercial Contributor in connection with its distribution of the Program
169 | in a commercial product offering. The obligations in this section do not
170 | apply to any claims or Losses relating to any actual or alleged
171 | intellectual property infringement. In order to qualify, an Indemnified
172 | Contributor must: a) promptly notify the Commercial Contributor in
173 | writing of such claim, and b) allow the Commercial Contributor to control,
174 | and cooperate with the Commercial Contributor in, the defense and any
175 | related settlement negotiations. The Indemnified Contributor may
176 | participate in any such claim at its own expense.
177 |
178 | For example, a Contributor might include the Program in a commercial
179 | product offering, Product X. That Contributor is then a Commercial
180 | Contributor. If that Commercial Contributor then makes performance
181 | claims, or offers warranties related to Product X, those performance
182 | claims and warranties are such Commercial Contributor's responsibility
183 | alone. Under this section, the Commercial Contributor would have to
184 | defend claims against the other Contributors related to those performance
185 | claims and warranties, and if a court requires any other Contributor to
186 | pay any damages as a result, the Commercial Contributor must pay
187 | those damages.
188 |
189 | 5. NO WARRANTY
190 |
191 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
192 | PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS"
193 | BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
194 | IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
195 | TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
196 | PURPOSE. Each Recipient is solely responsible for determining the
197 | appropriateness of using and distributing the Program and assumes all
198 | risks associated with its exercise of rights under this Agreement,
199 | including but not limited to the risks and costs of program errors,
200 | compliance with applicable laws, damage to or loss of data, programs
201 | or equipment, and unavailability or interruption of operations.
202 |
203 | 6. DISCLAIMER OF LIABILITY
204 |
205 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
206 | PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS
207 | SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
208 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
209 | PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
210 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
211 | ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
212 | EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
213 | POSSIBILITY OF SUCH DAMAGES.
214 |
215 | 7. GENERAL
216 |
217 | If any provision of this Agreement is invalid or unenforceable under
218 | applicable law, it shall not affect the validity or enforceability of
219 | the remainder of the terms of this Agreement, and without further
220 | action by the parties hereto, such provision shall be reformed to the
221 | minimum extent necessary to make such provision valid and enforceable.
222 |
223 | If Recipient institutes patent litigation against any entity
224 | (including a cross-claim or counterclaim in a lawsuit) alleging that the
225 | Program itself (excluding combinations of the Program with other software
226 | or hardware) infringes such Recipient's patent(s), then such Recipient's
227 | rights granted under Section 2(b) shall terminate as of the date such
228 | litigation is filed.
229 |
230 | All Recipient's rights under this Agreement shall terminate if it
231 | fails to comply with any of the material terms or conditions of this
232 | Agreement and does not cure such failure in a reasonable period of
233 | time after becoming aware of such noncompliance. If all Recipient's
234 | rights under this Agreement terminate, Recipient agrees to cease use
235 | and distribution of the Program as soon as reasonably practicable.
236 | However, Recipient's obligations under this Agreement and any licenses
237 | granted by Recipient relating to the Program shall continue and survive.
238 |
239 | Everyone is permitted to copy and distribute copies of this Agreement,
240 | but in order to avoid inconsistency the Agreement is copyrighted and
241 | may only be modified in the following manner. The Agreement Steward
242 | reserves the right to publish new versions (including revisions) of
243 | this Agreement from time to time. No one other than the Agreement
244 | Steward has the right to modify this Agreement. The Eclipse Foundation
245 | is the initial Agreement Steward. The Eclipse Foundation may assign the
246 | responsibility to serve as the Agreement Steward to a suitable separate
247 | entity. Each new version of the Agreement will be given a distinguishing
248 | version number. The Program (including Contributions) may always be
249 | Distributed subject to the version of the Agreement under which it was
250 | received. In addition, after a new version of the Agreement is published,
251 | Contributor may elect to Distribute the Program (including its
252 | Contributions) under the new version.
253 |
254 | Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
255 | receives no rights or licenses to the intellectual property of any
256 | Contributor under this Agreement, whether expressly, by implication,
257 | estoppel or otherwise. All rights in the Program not expressly granted
258 | under this Agreement are reserved. Nothing in this Agreement is intended
259 | to be enforceable by any entity that is not a Contributor or Recipient.
260 | No third-party beneficiary rights are created under this Agreement.
261 |
262 | Exhibit A - Form of Secondary Licenses Notice
263 |
264 | "This Source Code may also be made available under the following
265 | Secondary Licenses when the conditions for such availability set forth
266 | in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
267 | version(s), and exceptions or additional permissions here}."
268 |
269 | Simply including a copy of this Agreement, including this Exhibit A
270 | is not sufficient to license the Source Code under Secondary Licenses.
271 |
272 | If it is not possible or desirable to put the notice in a particular
273 | file, then You may include the notice in a location (such as a LICENSE
274 | file in a relevant directory) where a recipient would be likely to
275 | look for such a notice.
276 |
277 | You may add additional accurate notices of copyright ownership.
278 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Eclipse ShellWax
2 |
3 |
4 |
5 | ### Shell script edition in Eclipse IDE
6 |
7 | ShellWax is a shell script development plugin for the Eclipse IDE, providing a rich edition experience through integration with the [Bash Language Server](https://github.com/bash-lsp/bash-language-server).
8 |
9 | ## Download/Install
10 |
11 | With Eclipse IDE properly installed on your machine, just click [HERE](eclipse+mpc://marketplace.eclipse.org/install/4528322)
12 |
13 | _OR_
14 |
15 | Browse to https://marketplace.eclipse.org/content/shellwax and follow installation instructions
16 |
17 | _OR_
18 |
19 | From a working Eclipse IDE, install from the Update Site at [https://download.eclipse.org/shellwax/snapshots/](https://download.eclipse.org/shellwax/snapshots/).
20 |
21 | ### Prerequisites
22 | In order to use ShellWax on the user machine it's mandatory to have the following installed and available on PATH environment variable:
23 | - Bash (bash). Note: Windows users should have bash installed via [Windows Subsystem For Linux and their distro of choice](https://docs.microsoft.com/en-us/windows/wsl/install-win10).
24 |
25 |
26 | ## Features
27 |
28 | ShellWax brings together multiple different sources of features to make an enjoyable developing environment. Here are just a few of the most common features. Download today to discover all Corrosion has to offer.
29 |
30 | ### Theming
31 |
32 | The syntax highlighting is "externalized" to TM4E plugins. You can configure a theme (in the TextMate meaning of a theme) for specific file type in Preferences > TextMate > Grammar, select a language and then click the "Theme" tab on that same page.
33 |
34 | ### Bash Language Server
35 | The Bash Language Server supplies ShellWax with the majority of the edition abilities. More information can be found at the [Bash Language Server GitHub Repository](https://github.com/bash-lsp/bash-language-server).
36 | - Jump to declaration
37 | - Find references
38 | - Code Outline & Show Symbols
39 | - Highlight occurrences
40 | - Code completion
41 | - Simple diagnostics reporting
42 | - Documentation for flags on hover
43 |
44 | ### License
45 |
46 | ShellWax is an Open Source project licensed under [The Eclipse Public License - v 2.0](https://www.eclipse.org/legal/epl-2.0/)
47 |
48 | [More Licensing Information](LICENSE)
49 |
--------------------------------------------------------------------------------
/RELEASE_NOTES.md:
--------------------------------------------------------------------------------
1 | # Eclipse ShellWax: Release notes
2 |
3 | This page describes the noteworthy improvements provided by each release of Eclipse ShellWax.
4 |
5 |
6 | ### Next release...
7 |
8 | ## 1.3.0
9 |
10 | * 📅 Release Date: TBD
11 | * All changes: https://github.com/eclipse/shellwax/compare/1.2.3...1.3.0
12 |
13 | ### Require Java 21 as runtime JVM ###
14 |
15 | * Starting with these ShellWax release it requires Java 21 JVM to be used to run Eclipse for the plugin to work.
16 |
17 | ### Support Format
18 |
19 | * Format command is functional when `shfmt` is installed locally.
20 |
21 | ### Bash LS update ###
22 | * Bash LSP dependency has been updated to version 5.4.0 . See [changelog](https://github.com/bash-lsp/bash-language-server/blob/main/server/CHANGELOG.md#5.4.0 ) for details.
23 |
24 |
25 | ## 1.2.3
26 |
27 | * 📅 Release Date: Jun 6th, 2023
28 | * Bash LSP dependency has been updated to version 4.9.2 . See [changelog](https://github.com/bash-lsp/bash-language-server/blob/main/server/CHANGELOG.md#492 ) for details.
29 | * All changes: https://github.com/eclipse/shellwax/compare/1.2.2...1.2.3
30 |
31 | ## 1.2.2
32 |
33 | * 📅 Release Date: Dec 9th, 2022
34 | * Bash LSP dependency has been updated to version 4.1.0 . See [changelog](https://github.com/bash-lsp/bash-language-server/blob/main/server/CHANGELOG.md) for details.
35 | * All changes: https://github.com/eclipse/shellwax/compare/1.2.1...1.2.2
36 |
37 | ## 1.2.1
38 |
39 | * 📅 Release Date: Aug 25th, 2022
40 | * All changes: https://github.com/eclipse/shellwax/compare/1.2.0...1.2.1
41 |
42 | ## 1.2.0
43 |
44 | * 📅 Release Date: July 12th, 2022
45 | * All changes: https://github.com/eclipse/shellwax/compare/1.1.6...1.2.0
46 |
47 | ### Require Java 17 as runtime JVM ###
48 |
49 | Starting with these ShellWax release it requires Java 17 JVM to be used to run Eclipse for the plugin to work.
50 |
51 | ### Update to Bash LSP 3.0.4 ###
52 |
53 | Bash LSP dependency has been updated to version 3.0.4. See [changelog](https://github.com/bash-lsp/bash-language-server/blob/main/server/CHANGELOG.md) for details.
54 |
55 | ## 1.1.6
56 |
57 | * 📅 Release Date: January 14th, 2022
58 | * All changes: https://github.com/eclipse/shellwax/compare/1.1.5...1.1.6
59 |
60 | ### Add MacOS AArch64 support ###
61 |
62 | Node embedder from latest Wild Web Developer plugin has support for it thus allows installation on MacOS Arm with bundled Node.js so users don't have to manually install it.
63 |
64 | ## 1.1.5
65 |
66 | * 📅 Release Date: November 15th, 2021
67 | * All changes: https://github.com/eclipse/shellwax/compare/1.1.4...1.1.5
68 |
69 | #### Fix content-type detection
70 |
71 | Recent changes made that all files could be interpreted as ShellWax files and thus undesired operations from ShellWax could be shown on unrelated files. This is now fixed.
72 |
73 | ## 1.1.4
74 |
75 | * 📅 Release Date: November 12th, 2021
76 | * All changes: https://github.com/eclipse/shellwax/compare/1.1.3...1.1.4
77 |
78 | #### Support shell script files without extensions
79 |
80 | Files with the following shebang are supported:
81 | - #!/bin/sh
82 | - #!*bash
83 |
84 | ## 1.1.3
85 |
86 | * 📅 Release Date: October 27th, 2021
87 | * All changes: https://github.com/eclipse/shellwax/compare/1.1.2...1.1.3
88 |
89 | #### Mac x86_64 and Linux AArch 64 Node.js embedder to the update site
90 |
91 | #### Update to use Bash Language Server 2.0.0
92 |
93 | Changes in it:
94 | - BREAKING: Drop node 10 support
95 | - Upgrade dependencies
96 | - Adds support for completing command line arguments (https://github.com/bash-lsp/bash-language-server/pull/294)
97 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 |
2 | _ISO 27005 defines vulnerability as:
3 | "A weakness of an asset or group of assets that can be exploited by one or more threats."_
4 |
5 | ## The Eclipse Security Team
6 |
7 | The Eclipse Security Team provides help and advice to Eclipse projects
8 | on vulnerability issues and is the first point of contact
9 | for handling security vulnerabilities.
10 | Members of the Security Team are committers on Eclipse Projects
11 | and members of the Eclipse Architecture Council.
12 |
13 | Contact the [Eclipse Security Team](mailto:security@eclipse.org).
14 |
15 | **Note that, as a matter of policy, the security team does not open attachments.**
16 |
17 | ## Reporting a Security Vulnerability
18 |
19 | Vulnerabilities can be reported either via email to the Eclipse Security Team
20 | or directly with a project via the Eclipse Foundation's Bugzilla instance.
21 |
22 | The general security mailing list address is security@eclipse.org.
23 | Members of the Eclipse Security Team will receive messages sent to this address.
24 | This address should be used only for reporting undisclosed vulnerabilities;
25 | regular issue reports and questions unrelated to vulnerabilities in Eclipse software
26 | will be ignored.
27 | Note that this email address is not encrypted.
28 |
29 | The community is also encouraged to report vulnerabilities using the
30 | [Eclipse Foundation's Bugzilla instance](https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Community&component=Vulnerability%20Reports&keywords=security&groups=Security_Advisories).
31 | Note that you will require an Eclipse Foundation account to create an issue report,
32 | but by doing so you will be able to participate directly in the resolution of the issue.
33 |
34 | Issue reports related to vulnerabilities must be marked as "committers-only",
35 | either automatically by clicking the provided link, by the reporter,
36 | or by a committer during the triage process.
37 | Note that issues marked "committers-only" are visible to all Eclipse committers.
38 | By default, a "committers-only" issue is also accessible to the reporter
39 | and individuals explicitly indicated in the "cc" list.
40 |
41 | ## Disclosure
42 |
43 | Disclosure is initially limited to the reporter and all Eclipse Committers,
44 | but is expanded to include other individuals, and the general public.
45 | The timing and manner of disclosure is governed by the
46 | [Eclipse Security Policy](https://www.eclipse.org/security/policy.php).
47 |
48 | Publicly disclosed issues are listed on the
49 | [Disclosed Vulnerabilities Page](https://www.eclipse.org/security/known.php).
50 |
--------------------------------------------------------------------------------
/artwork/sh.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
166 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/.gitignore:
--------------------------------------------------------------------------------
1 | /target/
2 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | org.eclipse.shellwax.core
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 | org.eclipse.pde.ManifestBuilder
15 |
16 |
17 |
18 |
19 | org.eclipse.pde.SchemaBuilder
20 |
21 |
22 |
23 |
24 | org.eclipse.m2e.core.maven2Builder
25 |
26 |
27 |
28 |
29 |
30 | org.eclipse.m2e.core.maven2Nature
31 | org.eclipse.pde.PluginNature
32 | org.eclipse.jdt.core.javanature
33 |
34 |
35 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/.settings/org.eclipse.core.resources.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | encoding/=UTF-8
3 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
4 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
5 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
6 | org.eclipse.jdt.core.compiler.compliance=21
7 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
8 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
9 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
10 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
11 | org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
12 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
13 | org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
14 | org.eclipse.jdt.core.compiler.release=enabled
15 | org.eclipse.jdt.core.compiler.source=21
16 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/.settings/org.eclipse.jdt.ui.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
3 | sp_cleanup.add_all=false
4 | sp_cleanup.add_default_serial_version_id=true
5 | sp_cleanup.add_generated_serial_version_id=false
6 | sp_cleanup.add_missing_annotations=true
7 | sp_cleanup.add_missing_deprecated_annotations=true
8 | sp_cleanup.add_missing_methods=false
9 | sp_cleanup.add_missing_nls_tags=false
10 | sp_cleanup.add_missing_override_annotations=true
11 | sp_cleanup.add_missing_override_annotations_interface_methods=true
12 | sp_cleanup.add_serial_version_id=false
13 | sp_cleanup.also_simplify_lambda=true
14 | sp_cleanup.always_use_blocks=true
15 | sp_cleanup.always_use_parentheses_in_expressions=false
16 | sp_cleanup.always_use_this_for_non_static_field_access=false
17 | sp_cleanup.always_use_this_for_non_static_method_access=false
18 | sp_cleanup.array_with_curly=false
19 | sp_cleanup.arrays_fill=false
20 | sp_cleanup.bitwise_conditional_expression=false
21 | sp_cleanup.boolean_literal=false
22 | sp_cleanup.boolean_value_rather_than_comparison=false
23 | sp_cleanup.break_loop=false
24 | sp_cleanup.collection_cloning=false
25 | sp_cleanup.comparing_on_criteria=false
26 | sp_cleanup.comparison_statement=false
27 | sp_cleanup.controlflow_merge=false
28 | sp_cleanup.convert_functional_interfaces=false
29 | sp_cleanup.convert_to_enhanced_for_loop=false
30 | sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false
31 | sp_cleanup.convert_to_switch_expressions=false
32 | sp_cleanup.correct_indentation=false
33 | sp_cleanup.do_while_rather_than_while=false
34 | sp_cleanup.double_negation=false
35 | sp_cleanup.else_if=false
36 | sp_cleanup.embedded_if=false
37 | sp_cleanup.evaluate_nullable=false
38 | sp_cleanup.extract_increment=false
39 | sp_cleanup.format_source_code=false
40 | sp_cleanup.format_source_code_changes_only=false
41 | sp_cleanup.hash=false
42 | sp_cleanup.if_condition=false
43 | sp_cleanup.insert_inferred_type_arguments=false
44 | sp_cleanup.instanceof=false
45 | sp_cleanup.instanceof_keyword=false
46 | sp_cleanup.invert_equals=false
47 | sp_cleanup.join=false
48 | sp_cleanup.lazy_logical_operator=false
49 | sp_cleanup.make_local_variable_final=true
50 | sp_cleanup.make_parameters_final=false
51 | sp_cleanup.make_private_fields_final=true
52 | sp_cleanup.make_type_abstract_if_missing_method=false
53 | sp_cleanup.make_variable_declarations_final=false
54 | sp_cleanup.map_cloning=false
55 | sp_cleanup.merge_conditional_blocks=false
56 | sp_cleanup.multi_catch=false
57 | sp_cleanup.never_use_blocks=false
58 | sp_cleanup.never_use_parentheses_in_expressions=true
59 | sp_cleanup.no_string_creation=false
60 | sp_cleanup.no_super=false
61 | sp_cleanup.number_suffix=false
62 | sp_cleanup.objects_equals=false
63 | sp_cleanup.on_save_use_additional_actions=false
64 | sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false
65 | sp_cleanup.operand_factorization=false
66 | sp_cleanup.organize_imports=true
67 | sp_cleanup.overridden_assignment=false
68 | sp_cleanup.overridden_assignment_move_decl=true
69 | sp_cleanup.plain_replacement=false
70 | sp_cleanup.precompile_regex=false
71 | sp_cleanup.primitive_comparison=false
72 | sp_cleanup.primitive_parsing=false
73 | sp_cleanup.primitive_rather_than_wrapper=false
74 | sp_cleanup.primitive_serialization=false
75 | sp_cleanup.pull_out_if_from_if_else=false
76 | sp_cleanup.pull_up_assignment=false
77 | sp_cleanup.push_down_negation=false
78 | sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
79 | sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
80 | sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
81 | sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
82 | sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
83 | sp_cleanup.reduce_indentation=false
84 | sp_cleanup.redundant_comparator=false
85 | sp_cleanup.redundant_falling_through_block_end=false
86 | sp_cleanup.remove_private_constructors=true
87 | sp_cleanup.remove_redundant_modifiers=false
88 | sp_cleanup.remove_redundant_semicolons=false
89 | sp_cleanup.remove_redundant_type_arguments=false
90 | sp_cleanup.remove_trailing_whitespaces=false
91 | sp_cleanup.remove_trailing_whitespaces_all=true
92 | sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
93 | sp_cleanup.remove_unnecessary_array_creation=false
94 | sp_cleanup.remove_unnecessary_casts=true
95 | sp_cleanup.remove_unnecessary_nls_tags=false
96 | sp_cleanup.remove_unnecessary_suppress_warnings=false
97 | sp_cleanup.remove_unused_imports=false
98 | sp_cleanup.remove_unused_local_variables=false
99 | sp_cleanup.remove_unused_method_parameters=false
100 | sp_cleanup.remove_unused_private_fields=true
101 | sp_cleanup.remove_unused_private_members=false
102 | sp_cleanup.remove_unused_private_methods=true
103 | sp_cleanup.remove_unused_private_types=true
104 | sp_cleanup.replace_deprecated_calls=false
105 | sp_cleanup.return_expression=false
106 | sp_cleanup.simplify_boolean_if_else=false
107 | sp_cleanup.simplify_lambda_expression_and_method_ref=false
108 | sp_cleanup.single_used_field=false
109 | sp_cleanup.sort_members=false
110 | sp_cleanup.sort_members_all=false
111 | sp_cleanup.standard_comparison=false
112 | sp_cleanup.static_inner_class=false
113 | sp_cleanup.strictly_equal_or_different=false
114 | sp_cleanup.stringbuffer_to_stringbuilder=false
115 | sp_cleanup.stringbuilder=false
116 | sp_cleanup.stringbuilder_for_local_vars=true
117 | sp_cleanup.stringconcat_stringbuffer_stringbuilder=false
118 | sp_cleanup.stringconcat_to_textblock=false
119 | sp_cleanup.substring=false
120 | sp_cleanup.switch=false
121 | sp_cleanup.switch_for_instanceof_pattern=false
122 | sp_cleanup.system_property=false
123 | sp_cleanup.system_property_boolean=false
124 | sp_cleanup.system_property_file_encoding=false
125 | sp_cleanup.system_property_file_separator=false
126 | sp_cleanup.system_property_javaspecversion=false
127 | sp_cleanup.system_property_javaversion=false
128 | sp_cleanup.system_property_line_separator=false
129 | sp_cleanup.system_property_path_separator=false
130 | sp_cleanup.ternary_operator=false
131 | sp_cleanup.try_with_resource=false
132 | sp_cleanup.unlooped_while=false
133 | sp_cleanup.unreachable_block=false
134 | sp_cleanup.use_anonymous_class_creation=false
135 | sp_cleanup.use_autoboxing=false
136 | sp_cleanup.use_blocks=true
137 | sp_cleanup.use_blocks_only_for_return_and_throw=false
138 | sp_cleanup.use_directly_map_method=false
139 | sp_cleanup.use_lambda=true
140 | sp_cleanup.use_parentheses_in_expressions=false
141 | sp_cleanup.use_string_is_blank=false
142 | sp_cleanup.use_this_for_non_static_field_access=false
143 | sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
144 | sp_cleanup.use_this_for_non_static_method_access=false
145 | sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
146 | sp_cleanup.use_unboxing=false
147 | sp_cleanup.use_var=false
148 | sp_cleanup.useless_continue=false
149 | sp_cleanup.useless_return=false
150 | sp_cleanup.valueof_rather_than_instantiation=false
151 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/.settings/org.eclipse.pde.prefs:
--------------------------------------------------------------------------------
1 | compilers.f.unresolved-features=1
2 | compilers.f.unresolved-plugins=1
3 | compilers.incompatible-environment=1
4 | compilers.p.build=1
5 | compilers.p.build.bin.includes=1
6 | compilers.p.build.encodings=2
7 | compilers.p.build.java.compiler=2
8 | compilers.p.build.java.compliance=1
9 | compilers.p.build.missing.output=2
10 | compilers.p.build.output.library=1
11 | compilers.p.build.source.library=1
12 | compilers.p.build.src.includes=1
13 | compilers.p.deprecated=1
14 | compilers.p.discouraged-class=1
15 | compilers.p.internal=1
16 | compilers.p.missing-packages=2
17 | compilers.p.missing-version-export-package=2
18 | compilers.p.missing-version-import-package=2
19 | compilers.p.missing-version-require-bundle=2
20 | compilers.p.no-required-att=0
21 | compilers.p.no.automatic.module=1
22 | compilers.p.not-externalized-att=2
23 | compilers.p.service.component.without.lazyactivation=1
24 | compilers.p.unknown-attribute=1
25 | compilers.p.unknown-class=1
26 | compilers.p.unknown-element=1
27 | compilers.p.unknown-identifier=1
28 | compilers.p.unknown-resource=1
29 | compilers.p.unresolved-ex-points=0
30 | compilers.p.unresolved-import=0
31 | compilers.s.create-docs=false
32 | compilers.s.doc-folder=doc
33 | compilers.s.open-tags=1
34 | eclipse.preferences.version=1
35 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | Bundle-ManifestVersion: 2
3 | Bundle-Name: ShellWax
4 | Bundle-SymbolicName: org.eclipse.shellwax.core;singleton:=true
5 | Bundle-Version: 1.3.0.qualifier
6 | Bundle-Vendor: Eclipse.org - ShellWax
7 | Automatic-Module-Name: org.eclipse.shellwax.core
8 | Bundle-RequiredExecutionEnvironment: JavaSE-21
9 | Eclipse-BundleShape: dir
10 | Require-Bundle: org.eclipse.ui.genericeditor,
11 | org.eclipse.tm4e.ui;bundle-version="0.12.0",
12 | org.eclipse.lsp4e;bundle-version="0.18.6",
13 | org.eclipse.core.runtime;bundle-version="3.31.0",
14 | org.eclipse.debug.core,
15 | org.eclipse.debug.ui,
16 | org.eclipse.jface,
17 | org.eclipse.ui.workbench,
18 | org.eclipse.ui.ide,
19 | org.eclipse.core.resources,
20 | org.eclipse.ui.console,
21 | org.eclipse.core.filebuffers,
22 | org.eclipse.text,
23 | org.eclipse.core.jobs,
24 | org.eclipse.wildwebdeveloper.embedder.node;bundle-version="1.0.7",
25 | org.eclipse.tm4e.language_pack;bundle-version="0.12.0"
26 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/build.properties:
--------------------------------------------------------------------------------
1 | source.. = src/
2 | output.. = target/classes/
3 | bin.includes = META-INF/,\
4 | .,\
5 | plugin.xml,\
6 | icons/\
7 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/icons/sh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eclipse-shellwax/shellwax/ef36739e0e226482f5a6f641327d1ab5f24e10a8/org.eclipse.shellwax.core/icons/sh.png
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/icons/sh@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eclipse-shellwax/shellwax/ef36739e0e226482f5a6f641327d1ab5f24e10a8/org.eclipse.shellwax.core/icons/sh@2x.png
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/plugin.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
12 |
13 |
20 |
21 |
22 |
24 |
27 |
28 |
29 |
31 |
34 |
35 |
38 |
39 |
40 |
42 |
45 |
46 |
47 |
49 |
53 |
54 |
57 |
58 |
61 |
62 |
63 |
64 |
65 |
66 |
71 |
72 |
73 |
74 |
76 |
82 |
83 |
84 |
86 |
88 |
89 |
90 |
91 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
105 |
109 |
110 |
111 |
113 |
117 |
118 |
119 |
123 |
126 |
127 |
128 |
129 |
132 |
135 |
136 |
137 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/src/org/eclipse/shellwax/internal/BashLanguageServer.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2019, 2025 Red Hat Inc. and others.
3 | *
4 | * This program and the accompanying materials are made
5 | * available under the terms of the Eclipse Public License 2.0
6 | * which is available at https://www.eclipse.org/legal/epl-2.0/
7 | *
8 | * SPDX-License-Identifier: EPL-2.0
9 | *
10 | * Contributors:
11 | * Alexander Kurtakov (Red Hat Inc.)- initial implementation
12 | *******************************************************************************/
13 | package org.eclipse.shellwax.internal;
14 |
15 | import java.io.File;
16 | import java.io.IOException;
17 | import java.util.ArrayList;
18 | import java.util.List;
19 | import java.util.concurrent.CompletableFuture;
20 |
21 | import org.eclipse.core.runtime.Platform;
22 | import org.eclipse.lsp4e.server.ProcessStreamConnectionProvider;
23 | import org.eclipse.wildwebdeveloper.embedder.node.NodeJSManager;
24 |
25 | public class BashLanguageServer extends ProcessStreamConnectionProvider {
26 | private static final String LS_VERSION = "5.6.0";
27 | private static final String LOCAL_PATH = "/.local/share/shellwax/"+LS_VERSION;
28 | private static final String LS_MAIN = "/node_modules/.bin/bash-language-server";
29 |
30 | private static CompletableFuture initializeFuture;
31 |
32 | private static String getLsPath() {
33 | String lsPath = System.getProperty("user.home") + LOCAL_PATH + LS_MAIN;
34 | if (Platform.OS.isWindows())
35 | lsPath = lsPath.replace('/', '\\');
36 | return lsPath;
37 | }
38 |
39 | private static boolean isInstalled() {
40 | File installLocation = new File(getLsPath());
41 | return installLocation.exists() && installLocation.canExecute();
42 | }
43 |
44 | public BashLanguageServer() {
45 | List commands = new ArrayList<>();
46 | String nodePath = NodeJSManager.getNodeJsLocation().getAbsolutePath();
47 |
48 | if (nodePath != null) {
49 | if (!isInstalled()) {
50 | installLS();
51 | }
52 | String lsPath = getLsPath();
53 | if (Platform.OS.isWindows()) {
54 | commands.add("cmd");
55 | commands.add("/c");
56 | // quoting lsPath to support spaces in username
57 | commands.add("\"\"" + lsPath + "\" start\"");
58 | } else {
59 | commands.add(nodePath);
60 | commands.add(lsPath);
61 | commands.add("start");
62 | }
63 | setCommands(commands);
64 | setWorkingDirectory(System.getProperty("user.dir"));
65 | }
66 | }
67 |
68 | @Override
69 | public void start() throws IOException {
70 | if (!isInstalled()) {
71 | installLS().join();
72 | }
73 | super.start();
74 | }
75 |
76 | /**
77 | * Creates and asynchronously runs a runnable for the Bash Language Server module
78 | * installation if it's not yet created. Returns the CompletableFuture object to follow the
79 | * installation runnable that allows at least to wait for the finishing of the installation.
80 | *
81 | * @return CompletableFuture for the installation runnable
82 | */
83 | private synchronized CompletableFuture installLS() {
84 | if (initializeFuture == null) {
85 | initializeFuture = CompletableFuture.runAsync(() -> {
86 | File installLocation = new File(System.getProperty("user.home") + LOCAL_PATH);
87 | if (!installLocation.isDirectory())
88 | installLocation.delete();
89 | if (!installLocation.exists()) {
90 | installLocation.mkdirs();
91 | File nodeModulesDir = new File(installLocation, "node_modules");
92 | nodeModulesDir.mkdir();
93 | }
94 | ProcessBuilder pb = NodeJSManager.prepareNPMProcessBuilder("install","--prefix=.","bash-language-server@"+LS_VERSION);
95 | pb.directory(installLocation);
96 | pb.inheritIO(); // Redirects stdout and stderr to System.out
97 | try {
98 | Process ps = pb.start();
99 | ps.waitFor();
100 | } catch (IOException | InterruptedException e) {
101 | e.printStackTrace();
102 | }
103 | });
104 | }
105 | return initializeFuture;
106 | }
107 | }
108 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/src/org/eclipse/shellwax/internal/BashShebangContentDescriber.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2021 Red Hat Inc. and others.
3 | *
4 | * This program and the accompanying materials are made
5 | * available under the terms of the Eclipse Public License 2.0
6 | * which is available at https://www.eclipse.org/legal/epl-2.0/
7 | *
8 | * SPDX-License-Identifier: EPL-2.0
9 | *******************************************************************************/
10 | package org.eclipse.shellwax.internal;
11 |
12 | import java.io.BufferedReader;
13 | import java.io.IOException;
14 | import java.io.InputStream;
15 | import java.io.InputStreamReader;
16 | import java.io.Reader;
17 |
18 | import org.eclipse.core.runtime.QualifiedName;
19 | import org.eclipse.core.runtime.content.IContentDescription;
20 | import org.eclipse.core.runtime.content.ITextContentDescriber;
21 |
22 | public class BashShebangContentDescriber implements ITextContentDescriber {
23 |
24 | @Override
25 | public int describe(InputStream contents, IContentDescription description) throws IOException {
26 | return describe(new InputStreamReader(contents), description);
27 | }
28 |
29 | @Override
30 | public QualifiedName[] getSupportedOptions() {
31 | return null;
32 | }
33 |
34 | @Override
35 | public int describe(Reader contents, IContentDescription description) throws IOException {
36 | if (description == null || description.getContentType() == null || !"org.eclipse.shellwax.shebang".equals(description.getContentType().getId())) {
37 | return INVALID;
38 | }
39 | BufferedReader reader = new BufferedReader(contents);
40 | String line = reader.readLine();
41 | if (line == null) {
42 | return INVALID;
43 | }
44 | if (line.startsWith("#!") && (line.contains("bash")|| line.contains("bin/sh"))) {
45 | return VALID;
46 | }
47 | return INVALID;
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/src/org/eclipse/shellwax/internal/ShDocumentSetupParticipant.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2019 Red Hat Inc. and others.
3 | *
4 | * This program and the accompanying materials are made
5 | * available under the terms of the Eclipse Public License 2.0
6 | * which is available at https://www.eclipse.org/legal/epl-2.0/
7 | *
8 | * SPDX-License-Identifier: EPL-2.0
9 | *
10 | * Contributors:
11 | * Alexander Kurtakov (Red Hat Inc.)- initial implementation
12 | *******************************************************************************/
13 | package org.eclipse.shellwax.internal;
14 |
15 | import org.eclipse.core.filebuffers.IDocumentSetupParticipant;
16 | import org.eclipse.jface.text.IDocument;
17 | import org.eclipse.jface.text.IDocumentExtension4;
18 |
19 | /**
20 | * Files of type sh should always have unix line delimiter. This ensures it for newly created files even on windows.
21 | *
22 | */
23 | public class ShDocumentSetupParticipant implements IDocumentSetupParticipant {
24 |
25 | @Override
26 | public void setup(IDocument document) {
27 | if (document instanceof IDocumentExtension4 doc) {
28 | doc.setInitialLineDelimiter("\n");
29 | }
30 |
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/src/org/eclipse/shellwax/internal/run/ShLaunchConfig.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2019, 2024 Red Hat Inc. and others.
3 | *
4 | * This program and the accompanying materials are made
5 | * available under the terms of the Eclipse Public License 2.0
6 | * which is available at https://www.eclipse.org/legal/epl-2.0/
7 | *
8 | * SPDX-License-Identifier: EPL-2.0
9 | *
10 | * Contributors:
11 | * Alexander Kurtakov (Red Hat Inc.)- initial implementation
12 | *******************************************************************************/
13 | package org.eclipse.shellwax.internal.run;
14 |
15 | import java.io.File;
16 | import java.io.IOException;
17 | import java.util.ArrayList;
18 | import java.util.List;
19 |
20 | import org.eclipse.core.runtime.CoreException;
21 | import org.eclipse.core.runtime.IPath;
22 | import org.eclipse.core.runtime.IProgressMonitor;
23 | import org.eclipse.core.runtime.Path;
24 | import org.eclipse.core.runtime.Platform;
25 | import org.eclipse.debug.core.DebugPlugin;
26 | import org.eclipse.debug.core.ILaunch;
27 | import org.eclipse.debug.core.ILaunchConfiguration;
28 | import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
29 | import org.eclipse.debug.core.model.LaunchConfigurationDelegate;
30 |
31 | public class ShLaunchConfig extends LaunchConfigurationDelegate {
32 |
33 | public static final String ID = "org.eclipse.shellwax.shlaunchonfigtype";
34 | public static final String PROGRAM = "org.eclipse.shellwax.launch.program";
35 | public static final String ARGUMENTS = "org.eclipse.shellwax.launch.arguments";
36 |
37 | @Override
38 | public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor)
39 | throws CoreException {
40 | ILaunchConfigurationWorkingCopy wc = configuration.getWorkingCopy();
41 | List command = new ArrayList<>();
42 | String shellPath = wc.getAttribute(PROGRAM, "");
43 | String[] shellParams = wc.getAttribute(ARGUMENTS, "").split(" ");
44 | String workDir = wc.getAttribute(DebugPlugin.ATTR_WORKING_DIRECTORY, "");
45 | if (workDir.isEmpty()) {
46 | IPath path = new Path(shellPath);
47 | path = path.removeLastSegments(1);
48 | workDir = path.toPortableString();
49 | }
50 | String executable = "sh";
51 | if (Platform.OS.isWindows()) {
52 | executable = "bash.exe";
53 | String drive = Character.toString(shellPath.charAt(0));
54 | shellPath = "/mnt/"+drive.toLowerCase()+"/"+shellPath.substring(2);
55 | }
56 | command.add(executable);
57 | command.add(shellPath);
58 | command.addAll(List.of(shellParams));
59 | try {
60 | ProcessBuilder pb = new ProcessBuilder(command.toArray(String[]::new));
61 | pb.directory(new File(workDir));
62 | final Process p = pb.start();
63 | DebugPlugin.newProcess(launch, p, shellPath);
64 | } catch (IOException ex) {
65 | ex.printStackTrace();
66 | }
67 | }
68 |
69 | }
70 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/src/org/eclipse/shellwax/internal/run/ShLaunchShortcut.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2019, 2022 Red Hat Inc. and others.
3 | *
4 | * This program and the accompanying materials are made
5 | * available under the terms of the Eclipse Public License 2.0
6 | * which is available at https://www.eclipse.org/legal/epl-2.0/
7 | *
8 | * SPDX-License-Identifier: EPL-2.0
9 | *
10 | * Contributors:
11 | * Alexander Kurtakov (Red Hat Inc.)- initial implementation
12 | *******************************************************************************/
13 | package org.eclipse.shellwax.internal.run;
14 |
15 | import java.util.Arrays;
16 | import java.util.concurrent.CompletableFuture;
17 |
18 | import org.eclipse.core.resources.IResource;
19 | import org.eclipse.core.runtime.Adapters;
20 | import org.eclipse.core.runtime.CoreException;
21 | import org.eclipse.core.runtime.NullProgressMonitor;
22 | import org.eclipse.debug.core.DebugPlugin;
23 | import org.eclipse.debug.core.ILaunchConfiguration;
24 | import org.eclipse.debug.core.ILaunchConfigurationType;
25 | import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
26 | import org.eclipse.debug.core.ILaunchManager;
27 | import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationSelectionDialog;
28 | import org.eclipse.debug.ui.ILaunchShortcut2;
29 | import org.eclipse.jface.dialogs.ErrorDialog;
30 | import org.eclipse.jface.dialogs.IDialogConstants;
31 | import org.eclipse.jface.viewers.ISelection;
32 | import org.eclipse.jface.viewers.IStructuredSelection;
33 | import org.eclipse.swt.widgets.Display;
34 | import org.eclipse.ui.IEditorInput;
35 | import org.eclipse.ui.IEditorPart;
36 | import org.eclipse.ui.part.FileEditorInput;
37 |
38 | public class ShLaunchShortcut implements ILaunchShortcut2 {
39 |
40 | @Override
41 | public void launch(ISelection selection, String mode) {
42 | launch(mode, getLaunchConfigurations(selection));
43 | }
44 |
45 | @Override
46 | public void launch(IEditorPart editor, String mode) {
47 | launch(mode, getLaunchConfigurations(editor));
48 | }
49 |
50 | @Override
51 | public ILaunchConfiguration[] getLaunchConfigurations(ISelection selection) {
52 | return getLaunchConfigurations(getLaunchableResource(selection));
53 | }
54 |
55 | @Override
56 | public ILaunchConfiguration[] getLaunchConfigurations(IEditorPart editor) {
57 | return getLaunchConfigurations(getLaunchableResource(editor));
58 | }
59 |
60 | @Override
61 | public IResource getLaunchableResource(ISelection selection) {
62 | if (selection instanceof IStructuredSelection structuredSelection) {
63 | if (structuredSelection.size() != 1) {
64 | return null;
65 | }
66 | Object firstObject = structuredSelection.getFirstElement();
67 | return Adapters.adapt(firstObject, IResource.class);
68 | }
69 | return null;
70 | }
71 |
72 | @Override
73 | public IResource getLaunchableResource(IEditorPart editor) {
74 | IEditorInput input = editor.getEditorInput();
75 | if (input instanceof FileEditorInput file) {
76 | return file.getFile();
77 | }
78 | return null;
79 | }
80 |
81 | private ILaunchConfiguration[] getLaunchConfigurations(IResource resource) {
82 | if (resource == null || !resource.isAccessible()) {
83 | return new ILaunchConfiguration[0];
84 | }
85 | ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
86 | ILaunchConfigurationType configType = launchManager.getLaunchConfigurationType(ShLaunchConfig.ID);
87 | try {
88 | ILaunchConfiguration[] existing = Arrays.stream(launchManager.getLaunchConfigurations(configType))
89 | .filter(launchConfig -> {
90 | try {
91 | return launchConfig.getAttribute(ShLaunchConfig.PROGRAM, "") //$NON-NLS-1$
92 | .equals(resource.getLocation().toFile().toString());
93 | } catch (CoreException e) {
94 | ErrorDialog.openError(Display.getDefault().getActiveShell(), "error", e.getMessage(), e.getStatus()); //$NON-NLS-1$
95 | return false;
96 | }
97 | }).toArray(ILaunchConfiguration[]::new);
98 | if (existing.length != 0) {
99 | return existing;
100 | }
101 | String configName = launchManager.generateLaunchConfigurationName(resource.toString());
102 | ILaunchConfigurationWorkingCopy wc = configType.newInstance(null, configName);
103 | wc.setAttribute(ShLaunchConfig.PROGRAM, resource.getLocation().toString());
104 | wc.setAttribute(DebugPlugin.ATTR_WORKING_DIRECTORY,
105 | resource.getLocation().removeLastSegments(1).toString());
106 | wc.doSave();
107 | return new ILaunchConfiguration[] { wc };
108 | } catch (CoreException e) {
109 | ErrorDialog.openError(Display.getDefault().getActiveShell(), "error", e.getMessage(), e.getStatus()); //$NON-NLS-1$
110 | }
111 | return null;
112 | }
113 |
114 | private void launch(String mode, ILaunchConfiguration[] configurations) {
115 | if (configurations.length == 1) {
116 | CompletableFuture.runAsync(() -> {
117 | try {
118 | configurations[0].launch(mode, new NullProgressMonitor());
119 | } catch (CoreException e) {
120 | ErrorDialog.openError(Display.getDefault().getActiveShell(), "error", e.getMessage(), //$NON-NLS-1$
121 | e.getStatus());
122 | }
123 | });
124 | } else if (configurations.length > 1) {
125 | LaunchConfigurationSelectionDialog dialog = new LaunchConfigurationSelectionDialog(
126 | Display.getDefault().getActiveShell(), configurations);
127 | if (dialog.open() == IDialogConstants.OK_ID) {
128 | launch(mode, Arrays.asList(dialog.getResult()).toArray(ILaunchConfiguration[]::new));
129 | }
130 | }
131 | }
132 |
133 | }
134 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/src/org/eclipse/shellwax/internal/run/ShMainTab.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2019, 2024 Red Hat Inc. and others.
3 | *
4 | * This program and the accompanying materials are made
5 | * available under the terms of the Eclipse Public License 2.0
6 | * which is available at https://www.eclipse.org/legal/epl-2.0/
7 | *
8 | * SPDX-License-Identifier: EPL-2.0
9 | *
10 | * Contributors:
11 | * Alexander Kurtakov (Red Hat Inc.)- initial implementation
12 | *******************************************************************************/
13 | package org.eclipse.shellwax.internal.run;
14 |
15 | import java.io.File;
16 |
17 | import org.eclipse.core.runtime.CoreException;
18 | import org.eclipse.core.runtime.ILog;
19 | import org.eclipse.debug.core.DebugPlugin;
20 | import org.eclipse.debug.core.ILaunchConfiguration;
21 | import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
22 | import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
23 | import org.eclipse.jface.fieldassist.ControlDecoration;
24 | import org.eclipse.jface.fieldassist.FieldDecoration;
25 | import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
26 | import org.eclipse.swt.SWT;
27 | import org.eclipse.swt.layout.GridData;
28 | import org.eclipse.swt.layout.GridLayout;
29 | import org.eclipse.swt.widgets.Composite;
30 | import org.eclipse.swt.widgets.Label;
31 | import org.eclipse.swt.widgets.Text;
32 |
33 | public class ShMainTab extends AbstractLaunchConfigurationTab {
34 |
35 | private Text programPathText;
36 | private Text argumentsText;
37 | private Text workingDirectoryText;
38 |
39 | @Override
40 | public void createControl(Composite parent) {
41 | Composite resComposite = new Composite(parent, SWT.NONE);
42 | resComposite.setLayout(new GridLayout(2, false));
43 | new Label(resComposite, SWT.NONE).setText("Shell script");
44 | this.programPathText = new Text(resComposite, SWT.BORDER);
45 | this.programPathText.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true, false));
46 | ControlDecoration decoration = new ControlDecoration(programPathText, SWT.TOP | SWT.LEFT);
47 | FieldDecoration fieldDecoration = FieldDecorationRegistry.getDefault()
48 | .getFieldDecoration(FieldDecorationRegistry.DEC_ERROR);
49 | decoration.setImage(fieldDecoration.getImage());
50 | this.programPathText.addModifyListener(event -> {
51 | setDirty(true);
52 | File file = new File(programPathText.getText());
53 | if (!file.isFile()) {
54 | String errorMessage = "Given path doesn't reference a file.";
55 | setErrorMessage(errorMessage);
56 | decoration.setDescriptionText(errorMessage);
57 | decoration.show();
58 | } else if (!file.canRead()) {
59 | String errorMessage = "Not allowed to read file.";
60 | setErrorMessage(errorMessage);
61 | decoration.setDescriptionText(errorMessage);
62 | decoration.show();
63 | } else {
64 | setErrorMessage(null);
65 | decoration.hide();
66 | }
67 | updateLaunchConfigurationDialog();
68 | });
69 | new Label(resComposite, SWT.NONE).setText("Arguments");
70 | this.argumentsText = new Text(resComposite, SWT.BORDER);
71 | this.argumentsText.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true, false));
72 | this.argumentsText.addModifyListener(e -> {
73 | setDirty(true);
74 | updateLaunchConfigurationDialog();
75 | });
76 | new Label(resComposite, SWT.NONE).setText("Working directory");
77 | this.workingDirectoryText = new Text(resComposite, SWT.BORDER);
78 | this.workingDirectoryText.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true, false));
79 | this.workingDirectoryText.addModifyListener(e -> {
80 | setDirty(true);
81 | updateLaunchConfigurationDialog();
82 | });
83 | setControl(resComposite);
84 | }
85 |
86 | @Override
87 | public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
88 | // Nothing to do
89 | }
90 |
91 | @Override
92 | public void initializeFrom(ILaunchConfiguration configuration) {
93 | try {
94 | this.programPathText.setText(configuration.getAttribute(ShLaunchConfig.PROGRAM, "")); //$NON-NLS-1$
95 | this.argumentsText.setText(configuration.getAttribute(ShLaunchConfig.ARGUMENTS, "")); //$NON-NLS-1$
96 | this.workingDirectoryText.setText(configuration.getAttribute(DebugPlugin.ATTR_WORKING_DIRECTORY, "")); //$NON-NLS-1$
97 | } catch (CoreException e) {
98 | ILog.get().log(e.getStatus());
99 | }
100 | }
101 |
102 | @Override
103 | public void performApply(ILaunchConfigurationWorkingCopy configuration) {
104 | configuration.setAttribute(ShLaunchConfig.PROGRAM, this.programPathText.getText());
105 | configuration.setAttribute(ShLaunchConfig.ARGUMENTS, this.argumentsText.getText());
106 | configuration.setAttribute(DebugPlugin.ATTR_WORKING_DIRECTORY, this.workingDirectoryText.getText());
107 | }
108 |
109 | @Override
110 | public String getName() {
111 | return "Shell script";
112 | }
113 |
114 | }
115 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.core/src/org/eclipse/shellwax/internal/run/ShTabGroup.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright (c) 2019, 2022 Red Hat Inc. and others.
3 | *
4 | * This program and the accompanying materials are made
5 | * available under the terms of the Eclipse Public License 2.0
6 | * which is available at https://www.eclipse.org/legal/epl-2.0/
7 | *
8 | * SPDX-License-Identifier: EPL-2.0
9 | *
10 | * Contributors:
11 | * Alexander Kurtakov (Red Hat Inc.)- initial implementation
12 | *******************************************************************************/
13 | package org.eclipse.shellwax.internal.run;
14 |
15 | import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
16 | import org.eclipse.debug.ui.CommonTab;
17 | import org.eclipse.debug.ui.ILaunchConfigurationDialog;
18 |
19 | public class ShTabGroup extends AbstractLaunchConfigurationTabGroup {
20 |
21 | @Override
22 | public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
23 | setTabs(new ShMainTab(), new CommonTab());
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.feature/.gitignore:
--------------------------------------------------------------------------------
1 | /target/
2 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.feature/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | org.eclipse.shellwax.feature
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.pde.FeatureBuilder
10 |
11 |
12 |
13 |
14 | org.eclipse.m2e.core.maven2Builder
15 |
16 |
17 |
18 |
19 |
20 | org.eclipse.m2e.core.maven2Nature
21 | org.eclipse.pde.FeatureNature
22 |
23 |
24 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.feature/.settings/org.eclipse.core.resources.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | encoding/=UTF-8
3 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.feature/build.properties:
--------------------------------------------------------------------------------
1 | bin.includes = feature.xml,\
2 | feature.properties
3 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.feature/feature.properties:
--------------------------------------------------------------------------------
1 | name=ShellWax
2 | description=ShellWax shell script editing tool.
3 | copyright=Copyright (c) 2019 Red Hat Inc. and others.\
4 | \
5 | This program and the accompanying materials are made\
6 | available under the terms of the Eclipse Public License 2.0\
7 | which is available at https://www.eclipse.org/legal/epl-2.0/\
8 | \
9 | SPDX-License-Identifier: EPL-2.0\
--------------------------------------------------------------------------------
/org.eclipse.shellwax.feature/feature.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 | %description
11 |
12 |
13 |
14 | %copyright
15 |
16 |
17 |
18 | %license
19 |
20 |
21 |
22 |
23 |
24 |
25 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.site/.gitignore:
--------------------------------------------------------------------------------
1 | /target/
2 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.site/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | org.eclipse.shellwax.site
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.m2e.core.maven2Builder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.m2e.core.maven2Nature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.site/.settings/org.eclipse.core.resources.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | encoding/=UTF-8
3 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.site/category.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.site/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | org.eclipse.shellwax
7 | org.eclipse.shellwax
8 | 1.3.0-SNAPSHOT
9 |
10 | org.eclipse.shellwax.site.eclipse-repository
11 | eclipse-repository
12 | org.eclipse.shellwax.site.eclipse-repository
13 |
14 |
15 | sign
16 |
17 |
18 |
19 | org.eclipse.tycho
20 | tycho-gpg-plugin
21 | ${tycho.version}
22 |
23 |
24 | pgpsigner
25 |
26 | sign-p2-artifacts
27 |
28 |
29 | bc
30 | 729D9237ED2F6658
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/org.eclipse.shellwax.target/target-platform.target:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 | org.eclipse.shellwax
7 | org.eclipse.shellwax
8 | 1.3.0-SNAPSHOT
9 | pom
10 | org.eclipse.shellwax :: parent
11 | org.eclipse.shellwax parent
12 |
13 |
14 | UTF-8
15 | UTF-8
16 | 4.0.13
17 |
18 | -Xmx512m
19 |
20 |
21 |
22 |
23 |
24 |
25 | org.eclipse.tycho
26 | tycho-maven-plugin
27 | ${tycho.version}
28 | true
29 |
30 |
31 | org.eclipse.tycho
32 | target-platform-configuration
33 | ${tycho.version}
34 |
35 |
36 | ${maven.multiModuleProjectDirectory}/org.eclipse.shellwax.target/target-platform.target
37 |
38 |
39 |
40 | linux
41 | gtk
42 | x86_64
43 |
44 |
45 | linux
46 | gtk
47 | aarch64
48 |
49 |
50 | win32
51 | win32
52 | x86_64
53 |
54 |
55 | macosx
56 | cocoa
57 | x86_64
58 |
59 |
60 | macosx
61 | cocoa
62 | aarch64
63 |
64 |
65 |
66 |
67 |
68 | org.eclipse.tycho
69 | tycho-source-plugin
70 | ${tycho.version}
71 |
72 |
73 | attach-source
74 |
75 | plugin-source
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 | org.apache.maven.plugins
86 | maven-resources-plugin
87 | 3.3.1
88 |
89 |
90 | org.apache.maven.plugins
91 | maven-clean-plugin
92 | 3.4.1
93 |
94 |
95 | org.eclipse.tycho
96 | tycho-packaging-plugin
97 | ${tycho.version}
98 |
99 | yyyyMMdd-HHmm
100 |
101 |
102 |
103 | org.eclipse.tycho
104 | tycho-compiler-plugin
105 | ${tycho.version}
106 |
107 | javac
108 |
109 |
110 |
111 | org.eclipse.tycho
112 | tycho-surefire-plugin
113 | ${tycho.version}
114 |
115 | true
116 | ${tycho.test.jvmArgs}
117 |
119 | 60
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 | macosx
128 |
129 |
130 | mac
131 |
132 |
133 |
134 | -XstartOnFirstThread
135 |
136 |
137 |
138 | source-feature
139 |
140 |
141 | feature.xml
142 |
143 |
144 |
145 |
146 |
147 | org.eclipse.tycho
148 | tycho-source-plugin
149 | ${tycho.version}
150 |
151 |
152 | feature-source
153 | package
154 |
155 | feature-source
156 |
157 |
158 |
159 |
160 |
161 | org.eclipse.tycho
162 | tycho-p2-plugin
163 | ${tycho.version}
164 |
165 |
166 | attach-p2-metadata
167 | package
168 |
169 | p2-metadata
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 | org.eclipse.shellwax.core
180 | org.eclipse.shellwax.feature
181 | org.eclipse.shellwax.site
182 |
183 |
--------------------------------------------------------------------------------