• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

devonfw / IDEasy / 42920864989

10 Nov 2026 11:08PM UTC coverage: 75.252% (+0.01%) from 75.242%
42920864989

push

github

web-flow
#2325: Add checkboxes for shortcut creation to the MSI installer (#2709)

Signed-off-by: laim2003 <luk.faber@gmx.de>
Co-authored-by: Juan Carlos Miranda Carruana <juan-carlos.miranda-carruana@capgemini.com>
Co-authored-by: Jörg Hohwiller <hohwille@users.noreply.github.com>
Co-authored-by: JoelAdbu <joel.adabunu@capgemini.com>

6367 of 9373 branches covered (67.93%)

Branch coverage included in aggregate %.

16302 of 20751 relevant lines covered (78.56%)

3.38 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

95.24
cli/src/main/java/com/devonfw/tools/ide/variable/IdeVariables.java
1
package com.devonfw.tools.ide.variable;
2

3
import java.net.http.HttpClient.Version;
4
import java.nio.file.Path;
5
import java.util.Collection;
6
import java.util.List;
7

8
import com.devonfw.tools.ide.context.IdeContext;
9
import com.devonfw.tools.ide.git.GitUrlSyntax;
10
import com.devonfw.tools.ide.tool.AbstractToolCommandlet;
11

12
/**
13
 * Interface (mis)used to define all the available variables.
14
 */
15
public interface IdeVariables {
16

17
  /** {@link VariableDefinition} for {@link com.devonfw.tools.ide.context.IdeContext#getIdeHome() IDE_HOME}. */
18
  VariableDefinitionPath IDE_HOME = new VariableDefinitionPath("IDE_HOME", "DEVON_IDE_HOME", IdeContext::getIdeHome, true);
8 ✔
19

20
  /** {@link VariableDefinition} for {@link com.devonfw.tools.ide.context.IdeContext#getIdeRoot() IDE_ROOT}. */
21
  VariableDefinitionPath IDE_ROOT = new VariableDefinitionPath("IDE_ROOT", null, IdeContext::getIdeRoot);
7 ✔
22

23
  /** {@link VariableDefinition} for {@link com.devonfw.tools.ide.context.IdeContext#getUserHome() HOME}. */
24
  VariableDefinitionPath HOME = new VariableDefinitionPath("HOME", null, IdeContext::getUserHome, true);
8 ✔
25

26
  /**
27
   * {@link VariableDefinition} for the login name of the current user. Linux and macOS provide this as environment variable while Windows provides USERNAME
28
   * instead, which is therefore used as fallback so that {@code $[USER]} works cross-platform.
29
   */
30
  VariableDefinitionString USER = new VariableDefinitionString("USER", null, c -> c.getSystem().getEnv("USERNAME"));
12 ✔
31

32
  /** {@link VariableDefinition} for {@link com.devonfw.tools.ide.context.IdeContext#getWorkspaceName() WORKSPACE}. */
33
  VariableDefinitionString WORKSPACE = new VariableDefinitionString("WORKSPACE", null, IdeContext::getWorkspaceName, true);
8 ✔
34

35
  /** {@link VariableDefinition} for {@link com.devonfw.tools.ide.context.IdeContext#getPath() PATH}. */
36
  VariableDefinitionSystemPath PATH = new VariableDefinitionSystemPath("PATH", null, IdeContext::getPath, true, true);
9 ✔
37

38
  /** {@link VariableDefinition} for {@link IdeContext#findBash()} path to bash} (fallback if not found otherwise). */
39
  VariableDefinitionPath BASH_PATH = new VariableDefinitionPath("BASH_PATH", null);
6 ✔
40

41
  /** {@link VariableDefinition} for {@link com.devonfw.tools.ide.context.IdeContext#getWorkspacePath() WORKSPACE_PATH}. */
42
  VariableDefinitionPath WORKSPACE_PATH = new VariableDefinitionPath("WORKSPACE_PATH", null, IdeContext::getWorkspacePath, true);
8 ✔
43

44
  /** {@link VariableDefinition} for default CVE_MIN_SEVERITY. */
45
  VariableDefinitionDouble CVE_MIN_SEVERITY = new VariableDefinitionDouble("CVE_MIN_SEVERITY", null, c -> 0.1);
10 ✔
46

47
  /** {@link VariableDefinition} for list of tools to install by default. */
48
  VariableDefinitionStringList IDE_TOOLS = new VariableDefinitionStringList("IDE_TOOLS", "DEVON_IDE_TOOLS", c -> List.of("mvn", "npm"));
11 ✔
49

50
  /** {@link VariableDefinition} for list of IDE tools where interactive suggestions to fix CVEs should be skipped. */
51
  VariableDefinitionStringList SKIP_CVE_FIX = new VariableDefinitionStringList("SKIP_CVE_FIX", null, c -> List.of());
9 ✔
52

53
  /** {@link VariableDefinition} for list of HTTP protocols to use by default. */
54
  VariableDefinitionEnumList<Version> HTTP_VERSIONS = new VariableDefinitionEnumList<Version>("HTTP_VERSIONS", Version.class);
6 ✔
55

56
  /** {@link VariableDefinition} for list of IDE tools to create start scripts for. */
57
  VariableDefinitionStringList CREATE_START_SCRIPTS = new VariableDefinitionStringList("CREATE_START_SCRIPTS", "DEVON_CREATE_START_SCRIPTS");
6 ✔
58

59
  /** {@link VariableDefinition} for minimum IDE product version. */
60
  VariableDefinitionVersion IDE_MIN_VERSION = new VariableDefinitionVersion("IDE_MIN_VERSION");
5 ✔
61

62
  /** {@link VariableDefinition} for version of maven (mvn). */
63
  VariableDefinitionVersion MVN_VERSION = new VariableDefinitionVersion("MVN_VERSION", "MAVEN_VERSION");
6 ✔
64

65
  /** {@link VariableDefinition} arguments for maven to locate the settings file. */
66
  VariableDefinitionString MAVEN_ARGS = new VariableDefinitionString("MAVEN_ARGS", null, IdeContext::getMavenArgs, false, true, true);
10 ✔
67

68
  /** {@link VariableDefinition} arguments for maven to set the m2 repo location. */
69
  VariableDefinitionPath M2_REPO = new VariableDefinitionPath("M2_REPO", null, IdeVariables::getMavenRepositoryPath, false, true);
9 ✔
70

71
  /**
72
   * {@link VariableDefinition} for {@link AbstractToolCommandlet#getConfiguredEdition() edition} of {@link com.devonfw.tools.ide.tool.docker.Docker docker}.
73
   */
74
  VariableDefinitionString DOCKER_EDITION = new VariableDefinitionString("DOCKER_EDITION", null, c -> "rancher");
9 ✔
75

76
  /** {@link VariableDefinition} for default build options of mvn */
77
  VariableDefinitionString MVN_BUILD_OPTS = new VariableDefinitionString("MVN_BUILD_OPTS", null, c -> "clean install");
9 ✔
78

79
  /** {@link VariableDefinition} for default build options of npm */
80
  VariableDefinitionString NPM_BUILD_OPTS = new VariableDefinitionString("NPM_BUILD_OPTS", null, c -> "run build");
9 ✔
81

82
  /** {@link VariableDefinition} for NPM_CONFIG_USERCONFIG. */
83
  VariableDefinitionPath NPM_CONFIG_USERCONFIG = new VariableDefinitionPath("NPM_CONFIG_USERCONFIG", null, IdeContext::getNpmConfigUserConfig, false, true);
9 ✔
84

85
  /** {@link VariableDefinition} for default build options of gradle */
86
  VariableDefinitionString GRADLE_BUILD_OPTS = new VariableDefinitionString("GRADLE_BUILD_OPTS", null, c -> "clean dist");
9 ✔
87
  /** {@link VariableDefinition} for default user home of gradle */
88
  VariableDefinitionPath GRADLE_USER_HOME = new VariableDefinitionPath("GRADLE_USER_HOME", null, IdeContext::getGradleUserHome, false, true);
9 ✔
89

90
  /** {@link VariableDefinition} for default build options of yarn */
91
  VariableDefinitionString YARN_BUILD_OPTS = new VariableDefinitionString("YARN_BUILD_OPTS", null, c -> "run build");
9 ✔
92

93
  /** {@link VariableDefinition} for options of jasypt */
94
  VariableDefinitionString JASYPT_OPTS = new VariableDefinitionString("JASYPT_OPTS", null,
7 ✔
95
      c -> "algorithm=PBEWITHHMACSHA512ANDAES_256 ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator");
2 ✔
96

97
  /** {@link VariableDefinition} for {@link com.devonfw.tools.ide.context.IdeContext#getProjectName() PROJECT_NAME}. */
98
  VariableDefinitionString PROJECT_NAME = new VariableDefinitionString("PROJECT_NAME", null, IdeContext::getProjectName);
7 ✔
99

100
  /** Preferred Git protocol (HTTPS/SSH) as defined by {@link GitUrlSyntax}. */
101
  VariableDefinitionEnum<GitUrlSyntax> PREFERRED_GIT_PROTOCOL = new VariableDefinitionEnum<>("PREFERRED_GIT_PROTOCOL", null, GitUrlSyntax.class,
8 ✔
102
      c -> GitUrlSyntax.DEFAULT);
2 ✔
103

104
  /**
105
   * {@link VariableDefinition} for support of legacy variable syntax when
106
   * {@link com.devonfw.tools.ide.environment.EnvironmentVariables#resolve(String, Object, boolean) resolving variables} in configuration templates.
107
   */
108
  VariableDefinitionBoolean IDE_VARIABLE_SYNTAX_LEGACY_SUPPORT_ENABLED = new VariableDefinitionBoolean("IDE_VARIABLE_SYNTAX_LEGACY_SUPPORT_ENABLED", null,
7 ✔
109
      c -> Boolean.TRUE);
2 ✔
110

111
  /**
112
   * {@link VariableDefinition} for support of legacy xml templates without XML merge namespace.
113
   */
114
  VariableDefinitionBoolean IDE_XML_MERGE_LEGACY_SUPPORT_ENABLED = new VariableDefinitionBoolean("IDE_XML_MERGE_LEGACY_SUPPORT_ENABLED", null,
7 ✔
115
      c -> Boolean.FALSE);
2 ✔
116

117
  /**
118
   * {@link VariableDefinition} to enable writing logfiles to disc.
119
   */
120
  VariableDefinitionBoolean IDE_WRITE_LOGFILE = new VariableDefinitionBoolean("IDE_WRITE_LOGFILE", null,
7 ✔
121
      c -> Boolean.TRUE);
×
122

123
  /**
124
   * {@link VariableDefinition} that controls if the GUI desktop shortcut is created when IDEasy gets installed on Windows. Set by the checkbox of the MSI
125
   * installer.
126
   */
127
  VariableDefinitionBoolean IDEASY_CREATE_DESKTOP_SHORTCUT = new VariableDefinitionBoolean("IDEASY_CREATE_DESKTOP_SHORTCUT", null,
7 ✔
128
      c -> Boolean.TRUE);
2 ✔
129

130
  /**
131
   * {@link VariableDefinition} that controls if the GUI Start Menu shortcut is created when IDEasy gets installed on Windows. Set by the checkbox of the MSI
132
   * installer.
133
   */
134
  VariableDefinitionBoolean IDEASY_CREATE_STARTMENU_SHORTCUT = new VariableDefinitionBoolean("IDEASY_CREATE_STARTMENU_SHORTCUT", null,
7 ✔
135
      c -> Boolean.TRUE);
2 ✔
136

137
  /** {@link VariableDefinition} for {@link com.devonfw.tools.ide.context.IdeContext#getProjectName() DEVON_IDE_CUSTOM_TOOLS}. */
138
  VariableDefinitionString DEVON_IDE_CUSTOM_TOOLS = new VariableDefinitionString("DEVON_IDE_CUSTOM_TOOLS");
5 ✔
139

140
  /** {@link VariableDefinition} for support of overriding the default intellij jvm options. */
141
  VariableDefinitionString INTELLIJ_VM_ARGS = new VariableDefinitionString("INTELLIJ_VM_ARGS", null);
6 ✔
142

143
  /** {@link VariableDefinition} for support of overriding the default android studio jvm options. */
144
  VariableDefinitionString ANDROID_STUDIO_VM_ARGS = new VariableDefinitionString("ANDROID_STUDIO_VM_ARGS", null);
6 ✔
145

146
  /** {@link VariableDefinition} for support of overriding the default pycharm jvm options. */
147
  VariableDefinitionString PYCHARM_VM_ARGS = new VariableDefinitionString("PYCHARM_VM_ARGS", null);
6 ✔
148

149
  /**
150
   * {@link VariableDefinition} to enable the isolation of VSCode via {@code --profile} instead of {@code --user-data-dir}. This is a feature toggle: while
151
   * disabled (default) the legacy behaviour with {@code --user-data-dir} is used. See issue #2058 for details.
152
   */
153
  VariableDefinitionBoolean VSCODE_PROFILE_ENABLED = new VariableDefinitionBoolean("VSCODE_PROFILE_ENABLED", null,
7 ✔
154
      c -> Boolean.FALSE);
2 ✔
155

156
  /** {@link VariableDefinition} for the uv redirected cache directory */
157
  VariableDefinitionPath UV_CACHE_DIR = new VariableDefinitionPath("UV_CACHE_DIR", null,
9 ✔
158
      c -> c.getIdePath() == null ? null : c.getIdePath().resolve(IdeContext.FOLDER_SOFTWARE).resolve("uv"), true, true);
12 ✔
159

160
  /** A {@link Collection} with all pre-defined {@link VariableDefinition}s. */
161
  Collection<VariableDefinition<?>> VARIABLES = List.of(PATH, HOME, USER, WORKSPACE_PATH, IDE_HOME, IDE_ROOT, WORKSPACE, IDE_TOOLS, HTTP_VERSIONS,
121 ✔
162
      CREATE_START_SCRIPTS,
163
      IDE_MIN_VERSION, MVN_VERSION, M2_REPO, DOCKER_EDITION, MVN_BUILD_OPTS, NPM_BUILD_OPTS, NPM_CONFIG_USERCONFIG, GRADLE_BUILD_OPTS,
164
      GRADLE_USER_HOME,
165
      YARN_BUILD_OPTS, JASYPT_OPTS,
166
      MAVEN_ARGS, INTELLIJ_VM_ARGS, ANDROID_STUDIO_VM_ARGS, PYCHARM_VM_ARGS,
167
      UV_CACHE_DIR,
168
      PROJECT_NAME, IDE_VARIABLE_SYNTAX_LEGACY_SUPPORT_ENABLED, PREFERRED_GIT_PROTOCOL);
169

170
  /**
171
   * @param name the name of the requested {@link VariableDefinition}.
172
   * @return the {@link VariableDefinition} for the given {@code name} or {@code null} if not defined.
173
   * @see VariableDefinition#getName()
174
   * @see VariableDefinition#getLegacyName()
175
   */
176
  static VariableDefinition<?> get(String name) {
177

178
    return IdeVariablesList.get(name);
3 ✔
179
  }
180

181
  /**
182
   * @param name the name of the variable.
183
   * @return {@code true} if a {@link VariableDefinition#getLegacyName() legacy variable}, {@code false} otherwise.
184
   */
185
  static boolean isLegacyVariable(String name) {
186
    VariableDefinition<?> variableDefinition = IdeVariablesList.get(name);
3 ✔
187
    if (variableDefinition != null) {
2 ✔
188
      return name.equals(variableDefinition.getLegacyName());
5 ✔
189
    }
190
    return false;
2 ✔
191
  }
192

193
  private static Path getMavenRepositoryPath(IdeContext context) {
194
    Path mvnConf = context.getMavenConfigurationFolder();
3 ✔
195
    if (mvnConf == null) {
2 !
196
      return null;
×
197
    }
198
    return mvnConf.resolve(IdeContext.FOLDER_REPOSITORY);
4 ✔
199
  }
200
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc