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

devonfw / IDEasy / 19651727463

24 Nov 2025 10:43PM UTC coverage: 69.156% (+0.1%) from 69.024%
19651727463

push

github

web-flow
#1144: #1145: CVE warnings and suggestions (#1593)

Co-authored-by: KianRolf <kian.loroff@capgemini.com>
Co-authored-by: jan-vcapgemini <59438728+jan-vcapgemini@users.noreply.github.com>

3613 of 5721 branches covered (63.15%)

Branch coverage included in aggregate %.

9387 of 13077 relevant lines covered (71.78%)

3.15 hits per line

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

4.88
cli/src/main/java/com/devonfw/tools/ide/tool/docker/Docker.java
1
package com.devonfw.tools.ide.tool.docker;
2

3
import java.util.ArrayList;
4
import java.util.Arrays;
5
import java.util.List;
6
import java.util.Set;
7

8
import com.devonfw.tools.ide.common.Tag;
9
import com.devonfw.tools.ide.context.IdeContext;
10
import com.devonfw.tools.ide.os.SystemArchitecture;
11
import com.devonfw.tools.ide.tool.GlobalToolCommandlet;
12
import com.devonfw.tools.ide.tool.PackageManager;
13
import com.devonfw.tools.ide.tool.PackageManagerCommand;
14
import com.devonfw.tools.ide.tool.repository.ToolRepository;
15
import com.devonfw.tools.ide.version.VersionIdentifier;
16

17
/**
18
 * {@link GlobalToolCommandlet} for <a href="https://www.docker.com/">docker</a> either as
19
 * <a href="https://rancherdesktop.io/">Rancher Desktop</a> or as
20
 * <a href="https://www.docker.com/products/docker-desktop/">Docker Desktop</a>.
21
 */
22
public class Docker extends GlobalToolCommandlet {
23

24
  private static final String PODMAN = "podman";
25

26
  /**
27
   * The constructor.
28
   *
29
   * @param context the {@link IdeContext}.
30
   */
31
  public Docker(IdeContext context) {
32

33
    super(context, "docker", Set.of(Tag.DOCKER));
6✔
34
  }
1✔
35

36
  @Override
37
  public String getBinaryName() {
38
    return detectContainerRuntime();
×
39
  }
40

41
  private String detectContainerRuntime() {
42
    if (isCommandAvailable(this.tool)) {
×
43
      return this.tool;
×
44
    } else if (isCommandAvailable(PODMAN)) {
×
45
      return PODMAN;
×
46
    } else {
47
      return this.tool;
×
48
    }
49
  }
50

51
  private boolean isCommandAvailable(String command) {
52
    return this.context.getPath().hasBinaryOnPath(command);
×
53
  }
54

55
  @Override
56
  public boolean isExtract() {
57

58
    return switch (this.context.getSystemInfo().getOs()) {
×
59
      case WINDOWS -> false;
×
60
      case MAC -> this.context.getSystemInfo().getArchitecture().equals(SystemArchitecture.ARM64);
×
61
      case LINUX -> true;
×
62
    };
63
  }
64

65
  @Override
66
  protected List<PackageManagerCommand> getInstallPackageManagerCommands() {
67

68
    String edition = getConfiguredEdition();
×
69
    ToolRepository toolRepository = getToolRepository();
×
70
    VersionIdentifier configuredVersion = getConfiguredVersion();
×
71
    String resolvedVersion = toolRepository.resolveVersion(this.tool, edition, configuredVersion, this).toString();
×
72

73
    return List.of(new PackageManagerCommand(PackageManager.ZYPPER, List.of(
×
74
            "sudo zypper addrepo https://download.opensuse.org/repositories/isv:/Rancher:/stable/rpm/isv:Rancher:stable.repo",
75
            String.format("sudo zypper --no-gpg-checks install rancher-desktop=%s*", resolvedVersion))),
×
76
        new PackageManagerCommand(PackageManager.APT, List.of(
×
77
            "curl -s https://download.opensuse.org/repositories/isv:/Rancher:/stable/deb/Release.key | gpg --dearmor |"
78
                + " sudo dd status=none of=/usr/share/keyrings/isv-rancher-stable-archive-keyring.gpg",
79
            "echo 'deb [signed-by=/usr/share/keyrings/isv-rancher-stable-archive-keyring.gpg]"
80
                + " https://download.opensuse.org/repositories/isv:/Rancher:/stable/deb/ ./' |"
81
                + " sudo dd status=none of=/etc/apt/sources.list.d/isv-rancher-stable.list", "sudo apt update",
82
            String.format("sudo apt install -y --allow-downgrades rancher-desktop=%s*", resolvedVersion))));
×
83
  }
84

85
  @Override
86
  public void uninstall() {
87

88
    if (this.context.getSystemInfo().isLinux()) {
×
89
      runWithPackageManager(false, getPackageManagerCommandsUninstall());
×
90
    } else {
91
      super.uninstall();
×
92
    }
93

94
  }
×
95

96
  private List<PackageManagerCommand> getPackageManagerCommandsUninstall() {
97

98
    List<PackageManagerCommand> pmCommands = new ArrayList<>();
×
99
    pmCommands.add(
×
100
        new PackageManagerCommand(PackageManager.ZYPPER, Arrays.asList("sudo zypper remove rancher-desktop")));
×
101
    pmCommands.add(
×
102
        new PackageManagerCommand(PackageManager.APT, Arrays.asList("sudo apt -y autoremove rancher-desktop")));
×
103

104
    return pmCommands;
×
105
  }
106

107
  @Override
108
  public String getToolHelpArguments() {
109

110
    return "help";
×
111
  }
112
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc