From 68c27a0da693e615d3b3971b6a4705b48e1b7398 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Hohwiller?= Date: Thu, 14 Nov 2024 12:00:56 +0100 Subject: [PATCH 01/11] Update sandbox.adoc: fixed typo --- documentation/sandbox.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/sandbox.adoc b/documentation/sandbox.adoc index c263ca642..f2e49ec55 100644 --- a/documentation/sandbox.adoc +++ b/documentation/sandbox.adoc @@ -6,7 +6,7 @@ With IDEasy we follow the sandbox principle for the projects managed by our tool That is each project may peacefully coexist with other projects on the same computer. Changes and work in one project do not have side-effects to other projects so the projects are isolated from each other. -This principle is not very easy to archive on the same computer since you have to consider the following requirements. +This principle is not very easy to achieve on the same computer since you have to consider the following requirements. Different projects on the same computer... * ... may want to use the same tool (`java`, `mvn`, `node`, `python`, you name it). @@ -17,7 +17,7 @@ You do not want to accidentally deploy something for the wrong account because y == Concept -There are differnet concepts and implementations how to archive this sandbox principle. +There are differnet concepts and implementations how to achieve this sandbox principle. An obvious one is virtualization (using VMs) or para-virtualization (using "docker" containers). Microsoft is using the latter with https://containers.dev/[development containers]. However, from the start we belived that developers want the following things: From a264a4aa2e680a577bfd0960882cb3f782109311 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Hohwiller?= Date: Thu, 14 Nov 2024 12:04:25 +0100 Subject: [PATCH 02/11] Update release.yml: fixed changelog link --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 83ddd07f5..0d2d0b597 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -135,7 +135,7 @@ jobs: * Mac(x64): https://repo1.maven.org/maven2/com/devonfw/tools/IDEasy/ide-cli/${current_version}/ide-cli-${current_version}-mac-x64.tar.gz * Linux: https://repo1.maven.org/maven2/com/devonfw/tools/IDEasy/ide-cli/${current_version}/ide-cli-${current_version}-linux-x64.tar.gz # Changes - https://github.com/devonfw/IDEasy/blob/main/CHANGELOG.asciidoc#${noDotVersion}" + https://github.com/devonfw/IDEasy/blob/main/CHANGELOG.adoc#${noDotVersion/-beta/}" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} BUILD_USER: ${{ secrets.BUILD_USER }} From b3ed815ee230eb017c963682e501ac4167a6de8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Hohwiller?= Date: Thu, 14 Nov 2024 12:09:30 +0100 Subject: [PATCH 03/11] Update usage.adoc: fixed broken links --- documentation/usage.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/usage.adoc b/documentation/usage.adoc index 5626cabe2..836ed7b81 100644 --- a/documentation/usage.adoc +++ b/documentation/usage.adoc @@ -39,7 +39,7 @@ If you are working on different branches in parallel you typically want to use m . Go to the link:workspaces.adoc[workspaces] folder in your link:variables.adoc[${IDE_HOME}] and create a new folder with the name of your choice (e.g. `release2.1`). . Check out (`git clone ...`) the according projects and branch into that workspace folder. -. Open a shell in that new workspace folder (`cd` to it) and according to your IDE run e.g. link:eclipse.adoc[eclipse], link:vscode.adoc[vscode], or link:intellij.adoc[intellij] to create your workspace and launch the IDE. +. Open a shell in that new workspace folder (`cd` to it) and according to your IDE run e.g. `eclipse`, `vscode`, or `intellij` to create your workspace and launch the IDE. You can also add the parameter `create-script` to the IDE link:cli.adoc#commandlets[commandlet] in order to create a launch-script for your IDE. You can have multiple instances of eclipse running for each workspace in parallel. @@ -86,7 +86,7 @@ This way you will take over control of the tools and their versions for every de . In case you need a proprietary or unsupported tool, you can study link:software.adoc#custom[how to include custom tools]. . In case you have very restrictive policies about downloading tools from the internet, you can create and configure a link:software.adoc#repository[software repository] for your project or company. . Some of the tools (especially the actual IDEs) allow extensions via plugins. -You can customize them to your needs for link:eclipse.adoc#plugins[eclipse], link:vscode.adoc#plugins[VS code], or link:intellij.adoc#plugins[intelliJ]. +You can customize them to your needs for https://github.com/devonfw/ide-settings/tree/main/eclipse/plugins[eclipse], https://github.com/devonfw/ide-settings/tree/main/vscode/plugins[VS code], or https://github.com/devonfw/ide-settings/tree/main/intellij/plugins[intelliJ]. . In your `settings` git repository you will find a `projects` folder. Here you will find configurations files for every git project relevant for your actual project. Feel free to create new projects for your needs and delete the `devonfw` specific default projects. From fdf2ba79da28a463a301bf821ae293726103ddd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Hohwiller?= Date: Thu, 14 Nov 2024 12:10:48 +0100 Subject: [PATCH 04/11] Update configuration.adoc: fixed link --- documentation/configuration.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/configuration.adoc b/documentation/configuration.adoc index 406cd5e76..3b48167f2 100644 --- a/documentation/configuration.adoc +++ b/documentation/configuration.adoc @@ -11,7 +11,7 @@ The following list shows these configuration files in the order they are loaded 2. `~/.ide/ide.properties` - user specific global defaults (on Windows in `%USERPROFILE%/.ide/ide.properties`) 3. `https://github.com/devonfw/ide-settings/blob/main/ide.properties[settings/ide.properties]` (`settings/ide.properties`) - project specific configurations from link:settings.adoc[settings]. 4. `workspaces/${WORKSPACE}/ide.properties` - optional workspace specific configurations (especially helpful in projects using docker). -5. `https://github.com/devonfw/ide-settings/blob/main/template/conf/ide.properties[conf/ide.properties]` - user specific configurations (e.g. `M2_REPO=~/.m2/repository`). +5. `https://github.com/devonfw/ide-settings/blob/main/templates/conf/ide.properties[conf/ide.properties]` - user specific configurations (e.g. `M2_REPO=~/.m2/repository`). During setup this file is created by copying a template from `settings/template/conf/ide.properties`. == ide.properties From 64a73e49e30865d3fc04a4a647d17b49bab71d8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Hohwiller?= Date: Thu, 14 Nov 2024 15:48:56 +0100 Subject: [PATCH 05/11] Update usage.adoc: fixed links and outdated doc --- documentation/usage.adoc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/documentation/usage.adoc b/documentation/usage.adoc index 836ed7b81..61cbdcff7 100644 --- a/documentation/usage.adoc +++ b/documentation/usage.adoc @@ -87,10 +87,10 @@ This way you will take over control of the tools and their versions for every de . In case you have very restrictive policies about downloading tools from the internet, you can create and configure a link:software.adoc#repository[software repository] for your project or company. . Some of the tools (especially the actual IDEs) allow extensions via plugins. You can customize them to your needs for https://github.com/devonfw/ide-settings/tree/main/eclipse/plugins[eclipse], https://github.com/devonfw/ide-settings/tree/main/vscode/plugins[VS code], or https://github.com/devonfw/ide-settings/tree/main/intellij/plugins[intelliJ]. -. In your `settings` git repository you will find a `projects` folder. -Here you will find configurations files for every git project relevant for your actual project. -Feel free to create new projects for your needs and delete the `devonfw` specific default projects. -The link:projects.adoc[projects] documentation will explain you how to do this. +. In your `settings` git repository you will find a `repositories` folder. +Here you will find configurations files for every git repository relevant for your actual development project (with your source-code). +Feel free to create new repositories for your needs and delete the included default repositories. +The link:repository.adoc[repository] documentation will explain you how to do this. . For every IDE you will also find an according folder in your `settings` git repository. Here are the individual configuration settings for that IDE. You can change them by directly editing the according configuration files directly with a text-editor in your `settings` git repository. From 88fa73fda7d6bcf28707b93e75b5ebec3549d05c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Hohwiller?= Date: Fri, 15 Nov 2024 01:06:39 +0100 Subject: [PATCH 06/11] #754: quickfix via lazy init (#755) --- .../devonfw/tools/ide/context/AbstractIdeContext.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/context/AbstractIdeContext.java b/cli/src/main/java/com/devonfw/tools/ide/context/AbstractIdeContext.java index 056bd3945..42c24ecb2 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/context/AbstractIdeContext.java +++ b/cli/src/main/java/com/devonfw/tools/ide/context/AbstractIdeContext.java @@ -247,10 +247,8 @@ public void setCwd(Path userDir, String workspace, Path ideHome) { this.userHomeIde = this.userHome.resolve(".ide"); this.downloadPath = this.userHome.resolve("Downloads/ide"); - this.variables = createVariables(); this.path = computeSystemPath(); this.customToolRepository = CustomToolRepositoryImpl.of(this); - this.workspaceMerger = new DirectoryMerger(this); } private String getMessageIdeHomeFound() { @@ -498,6 +496,9 @@ public SystemPath getPath() { @Override public EnvironmentVariables getVariables() { + if (this.variables == null) { + this.variables = createVariables(); + } return this.variables; } @@ -571,6 +572,9 @@ public Locale getLocale() { @Override public DirectoryMerger getWorkspaceMerger() { + if (this.workspaceMerger == null) { + this.workspaceMerger = new DirectoryMerger(this); + } return this.workspaceMerger; } @@ -1054,6 +1058,6 @@ public IdeStartContextImpl getStartContext() { * Reloads this context and re-initializes the {@link #getVariables() variables}. */ public void reload() { - this.variables = createVariables(); + this.variables = null; } } From 0e901206372c9a0d1382bd75e05571a2f06a042c Mon Sep 17 00:00:00 2001 From: devonfw-core Date: Fri, 15 Nov 2024 00:20:36 +0000 Subject: [PATCH 07/11] set release version to 2024.11.001-beta --- .mvn/maven.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.mvn/maven.config b/.mvn/maven.config index 9245cbb8e..2d3885c79 100644 --- a/.mvn/maven.config +++ b/.mvn/maven.config @@ -1 +1 @@ --Drevision=2024.11.001-beta-SNAPSHOT +-Drevision=2024.11.001-beta From 73c1efcb20e441201e80356fb261b2ded122548f Mon Sep 17 00:00:00 2001 From: devonfw-core Date: Fri, 15 Nov 2024 00:24:52 +0000 Subject: [PATCH 08/11] set next version to 2024.11.002-beta-SNAPSHOT --- .mvn/maven.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.mvn/maven.config b/.mvn/maven.config index 2d3885c79..acab649f2 100644 --- a/.mvn/maven.config +++ b/.mvn/maven.config @@ -1 +1 @@ --Drevision=2024.11.001-beta +-Drevision=2024.11.002-beta-SNAPSHOT From 0245e6a1a2c41621117b0790e6ba13f3a76f824c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Hohwiller?= Date: Fri, 15 Nov 2024 09:45:30 +0100 Subject: [PATCH 09/11] Update maven.config: prepare 2024.12.001 --- .mvn/maven.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.mvn/maven.config b/.mvn/maven.config index acab649f2..5bb4c98c8 100644 --- a/.mvn/maven.config +++ b/.mvn/maven.config @@ -1 +1 @@ --Drevision=2024.11.002-beta-SNAPSHOT +-Drevision=2024.12.001-beta-SNAPSHOT From 2966a61ee492d58798b7bc82bb790e0c3b311114 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Hohwiller?= Date: Fri, 15 Nov 2024 09:46:13 +0100 Subject: [PATCH 10/11] Update CHANGELOG.adoc: prepared 2024.12.001 --- CHANGELOG.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 23d414538..b35d458d6 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -2,6 +2,13 @@ This file documents all notable changes to https://github.com/devonfw/IDEasy[IDEasy]. +== 2024.12.001 + +Release with new features and bugfixes: + + +The full list of changes for this release can be found in https://github.com/devonfw/IDEasy/milestone/16?closed=1[milestone 2024.12.001]. + == 2024.11.001 Release with new features and bugfixes: From d2a37608db9c70740d2e32332bdf3a8690180c0c Mon Sep 17 00:00:00 2001 From: leonrohne27 Date: Tue, 19 Nov 2024 10:50:04 +0100 Subject: [PATCH 11/11] #751: Moved postInstall() and changed tool installation message (#763) --- .../tools/ide/tool/GlobalToolCommandlet.java | 3 +-- .../tools/ide/tool/LocalToolCommandlet.java | 21 +++++++++++++++++++ .../tools/ide/tool/ToolCommandlet.java | 21 ------------------- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/GlobalToolCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/tool/GlobalToolCommandlet.java index 8bcd676e5..bd5716a55 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/GlobalToolCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/GlobalToolCommandlet.java @@ -147,12 +147,11 @@ public boolean install(boolean silent, EnvironmentContext environmentContext) { fileAccess.delete(tmpDir); } if (exitCode == 0) { - this.context.success("Successfully installed {} in version {}", this.tool, resolvedVersion); + this.context.success("Installation process for {} in version {} has started", this.tool, resolvedVersion); } else { this.context.warning("{} in version {} was not successfully installed", this.tool, resolvedVersion); return false; } - postInstall(); return true; } diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/LocalToolCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/tool/LocalToolCommandlet.java index 009ef5187..08614fc7b 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/LocalToolCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/LocalToolCommandlet.java @@ -116,6 +116,27 @@ public final boolean install(boolean silent, EnvironmentContext environmentConte } + /** + * This method is called after a tool was requested to be installed or updated. + * + * @param newlyInstalled {@code true} if the tool was installed or updated (at least link to software folder was created/updated), {@code false} otherwise + * (configured version was already installed and nothing changed). + */ + protected void postInstall(boolean newlyInstalled) { + + if (newlyInstalled) { + postInstall(); + } + } + + /** + * This method is called after the tool has been newly installed or updated to a new version. + */ + protected void postInstall() { + + // nothing to do by default + } + private boolean toolAlreadyInstalled(boolean silent, VersionIdentifier installedVersion, Step step) { if (!silent) { this.context.info("Version {} of tool {} is already installed", installedVersion, getToolWithEdition()); diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/ToolCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/tool/ToolCommandlet.java index 9485bd027..a20bc0eb9 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/ToolCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/ToolCommandlet.java @@ -233,27 +233,6 @@ public boolean install(boolean silent) { */ public abstract boolean install(boolean silent, EnvironmentContext environmentContext); - /** - * This method is called after a tool was requested to be installed or updated. - * - * @param newlyInstalled {@code true} if the tool was installed or updated (at least link to software folder was created/updated), {@code false} otherwise - * (configured version was already installed and nothing changed). - */ - protected void postInstall(boolean newlyInstalled) { - - if (newlyInstalled) { - postInstall(); - } - } - - /** - * This method is called after the tool has been newly installed or updated to a new version. - */ - protected void postInstall() { - - // nothing to do by default - } - /** * @return {@code true} to extract (unpack) the downloaded binary file, {@code false} otherwise. */