Before a pull request (PR) for devonfw-ide is ready for review, this definition of done (DoD) should be satisfied. Please note that external contributors are not strictly required to address all of these points as we love to get contributions and do not want to scare people from contributing with too much constraints. However, chances to get your change merged quickly are higher if you address all the following points.
-
❏ Your PR and the issue follows our best-practices:
-
❏ PR title is of the form
#«issue-id»: «brief summary»(e.g.#921: fixed setup.bat). -
❏ PR top-level comment summarizes what has been done and contains link to addressed issue(s).
-
❏ PR is linked with the issue(s) that it implements and resolves (see sidebar, click on
Developmentand enter issue ID) -
❏ PR and issue(s) have suitable labels (OS-specific like
windows,macOS, orlinuxas well as other aspects likecommandlet,plugins,urls, or tool specific labels such aseclipseorjava) -
❏ Issue is assigned to you (should actually be done before you start your implementation).
-
❏ Milestones are typically assigned by PO (Jörg) but have to be set before issues and PRs get closed. In case your issue is only addressed by a change in
ide-mirrors/ide-urlsor inide-settingsrepository, please already assign the according milestone (switch toclosedtab underMilestone).
-
-
❏ All checks have passed. Otherwise if a check failed (red cross) you need to click the
Detailslink, read the logs and fix the problem.-
❏ The build and all automated tests (including shellcheck) succeeded. If failed and you clicked on
Detailsscroll up and search for log lines likeError: Failed running test # -
❏ The contributors license agreement (CLA) is signed by all contributors of the PR.
-
❏ Git-Gardian did not report any security issue
-
-
❏ The feature branch of the PR is up-to-date with the
masterbranch. If you seeThis branch is out-of-date with the base branchin the PR click theUpdate branchbutton to fix (or manually merge with themasterfrom upstream locally and push your changes). In case you seeThis branch has conflicts that must be resolvedinstead, you need to resolve conflicts. Very simple conficts may be resolved in the browser on github but as a general recommendation you should resolve the conflicts locally with proper merge tool support and rerun tests before you push the merged changes. -
❏ You followed all coding conventions (indent with 2 spaces, no tabs, functions start with
doprefix, variables are enclosed with curly braces, variables in functions are declared withlocal, etc.) -
❏ You have already added the issue implemented by your PR in CHANGELOG.asciidoc to the next open release (see milestones or maven.config). If there is no issue for your PR consider creating it or directly link the PR itself. Please note that the CHANGELOG shall only reflect public changes relevant for end-users. So e.g. if we implement a story and then add another PR as bugfix or improvement to the same story, we do not need to document this in the CHANGELOG to avoid spam and confusion.
-
❏ In case your PR adds a new tool
«tool»as commandlet there are the following additional checks:-
❏ A new urlUpdater named
«tool»has been added to a a folder named«tool»in updater that receives response bodies from URLs, updates tool versions, and checks if download URLs work. -
❏ A new commandlet named
«tool»has been added to command that allows to install and launch the given software. -
❏ The tool can be installed automatically (during setup via settings) or via the commandlet call.
-
❏ During the installation process (
devon «tool» setup) reasonable progress and status information are displayed. -
❏ The tool is integrated in a way that complies with the multi-tenancy of the devonfw-ide. That is the tool will be installed locally only to the
softwarefolder inside the devonfw-ide installation (${DEVON_IDE_HOME}). There are very few tools as exception to this rule like docker (RancherDesktop). But by default every new tool should be installed locally. Otherwise already get in touch and clarify your design upfront before implementing. -
❏ The tool can even be configured in a way that complies with the multi-tenancy of the devonfw-ide. That is configuration files can be placed inside the devonfw-ide installation (
${DEVON_IDE_HOME}) - typically inside theconffolder. Note: If a tool reads configuration files from the users home directory this is not given as two installations of devonfw-ide using the same tool then would read the same config so one installation would influence the other. -
❏ The new commandlet is documented as
«tool».asciidocin the documentation folder. -
❏ The new commandlet is added and linked in cli.asciidoc.
-
❏ The new commandlet is added and linked in scripts.asciidoc.
-
❏ The new commandlet is included to devonfw-ide-usage.asciidoc.
-
❏ The links and includes (see above) have to be added in alphabetical order.
-
❏ The new tool is added to the table of tools in LICENSE.asciidoc with its according licesne. If that license is not yet included, the full license text needs to be added.
-
❏ The new commandlet is a command-wrapper for
«tool». -
❏ The new commandlet installs potential dependencies automatically (e.g.
doDevonCommand «required-other-tool» setup silent). -
❏ The new commandlet defines the variable
TOOL_VERSION_COMMANDbefore sourcing thefunctions. If no version check is supported by the tool itself set the value to-. In case your commandlet is not about a tool that can be setup, simply set the value as empty to make this explicit. -
❏ If the new commandlet is about a tool that can be setup, then test that also
devon «tool» version list,devon «tool» version get, anddevon «tool» version setare all working. -
❏ The variable
«TOOL»_VERSIONis honored by your commandlet so if present that version will be downloaded and installed. -
❏ The new commandlet is tested on all plattforms it is availible for. Assuming you are using Windows, testing for Linux can be done with the Windows Subsystem for Linux and for MacOS we have a virtual cloud instance.
-
-
❏ In case your PR adds, changes, or removes a function (in
functionsorenvironment-project) you need to updatefunctions.asciidocaccordingly. There is an automated test that will fail otherwise.