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

devonfw / IDEasy / 11061200804

26 Sep 2024 10:27PM UTC coverage: 66.053% (-0.05%) from 66.107%
11061200804

push

github

web-flow
#593: #651: #564: #439: fixed bugs, refactored tool dependencies (#652)

2312 of 3848 branches covered (60.08%)

Branch coverage included in aggregate %.

6078 of 8854 relevant lines covered (68.65%)

3.03 hits per line

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

4.76
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.process.EnvironmentContext;
12
import com.devonfw.tools.ide.repo.ToolRepository;
13
import com.devonfw.tools.ide.tool.GlobalToolCommandlet;
14
import com.devonfw.tools.ide.tool.PackageManager;
15
import com.devonfw.tools.ide.tool.PackageManagerCommand;
16
import com.devonfw.tools.ide.version.VersionIdentifier;
17

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

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

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

35
  @Override
36
  public boolean isExtract() {
37

38
    return switch (this.context.getSystemInfo().getOs()) {
×
39
      case WINDOWS -> false;
×
40
      case MAC -> this.context.getSystemInfo().getArchitecture().equals(SystemArchitecture.ARM64);
×
41
      case LINUX -> true;
×
42
    };
43
  }
44

45
  @Override
46
  public boolean install(boolean silent, EnvironmentContext environmentContext) {
47

48
    if (this.context.getSystemInfo().isLinux()) {
×
49
      return runWithPackageManager(silent, getPackageManagerCommandsInstall());
×
50
    } else {
51
      return super.install(silent, environmentContext);
×
52
    }
53
  }
54

55
  private List<PackageManagerCommand> getPackageManagerCommandsInstall() {
56

57
    String edition = getConfiguredEdition();
×
58
    ToolRepository toolRepository = this.context.getDefaultToolRepository();
×
59
    VersionIdentifier configuredVersion = getConfiguredVersion();
×
60
    String resolvedVersion = toolRepository.resolveVersion(this.tool, edition, configuredVersion).toString();
×
61

62
    List<PackageManagerCommand> pmCommands = new ArrayList<>();
×
63
    pmCommands.add(new PackageManagerCommand(PackageManager.ZYPPER, Arrays.asList(
×
64
        "sudo zypper addrepo https://download.opensuse.org/repositories/isv:/Rancher:/stable/rpm/isv:Rancher:stable.repo",
65
        String.format("sudo zypper --no-gpg-checks install rancher-desktop=%s*", resolvedVersion))));
×
66
    pmCommands.add(new PackageManagerCommand(PackageManager.APT, Arrays.asList(
×
67
        "curl -s https://download.opensuse.org/repositories/isv:/Rancher:/stable/deb/Release.key | gpg --dearmor |"
68
            + " sudo dd status=none of=/usr/share/keyrings/isv-rancher-stable-archive-keyring.gpg",
69
        "echo 'deb [signed-by=/usr/share/keyrings/isv-rancher-stable-archive-keyring.gpg]"
70
            + " https://download.opensuse.org/repositories/isv:/Rancher:/stable/deb/ ./' |"
71
            + " sudo dd status=none of=/etc/apt/sources.list.d/isv-rancher-stable.list", "sudo apt update",
72
        String.format("sudo apt install -y --allow-downgrades rancher-desktop=%s*", resolvedVersion))));
×
73

74
    return pmCommands;
×
75
  }
76

77
  @Override
78
  public void uninstall() {
79

80
    if (this.context.getSystemInfo().isLinux()) {
×
81
      runWithPackageManager(false, getPackageManagerCommandsUninstall());
×
82
    } else {
83
      super.uninstall();
×
84
    }
85

86
  }
×
87

88
  private List<PackageManagerCommand> getPackageManagerCommandsUninstall() {
89

90
    List<PackageManagerCommand> pmCommands = new ArrayList<>();
×
91
    pmCommands.add(
×
92
        new PackageManagerCommand(PackageManager.ZYPPER, Arrays.asList("sudo zypper remove rancher-desktop")));
×
93
    pmCommands.add(
×
94
        new PackageManagerCommand(PackageManager.APT, Arrays.asList("sudo apt -y autoremove rancher-desktop")));
×
95

96
    return pmCommands;
×
97
  }
98

99
  @Override
100
  protected String getBinaryName() {
101

102
    if (this.context.getSystemInfo().isLinux()) {
×
103
      // TODO this is wrong. The install method may need to run this on linux but the binary name is always docker (read the JavaDoc)
104
      return "rancher-desktop";
×
105
    } else {
106
      return super.getBinaryName();
×
107
    }
108
  }
109

110
  @Override
111
  public String getToolHelpArguments() {
112

113
    return "help";
×
114
  }
115
}
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