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

devonfw / IDEasy / 9808947434

05 Jul 2024 01:16PM UTC coverage: 61.755% (-0.04%) from 61.798%
9808947434

push

github

web-flow
#396: Display the tools help output on 'ide help <tool>'  (#434)

1987 of 3535 branches covered (56.21%)

Branch coverage included in aggregate %.

5276 of 8226 relevant lines covered (64.14%)

2.81 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 com.devonfw.tools.ide.common.Tag;
4
import com.devonfw.tools.ide.context.IdeContext;
5
import com.devonfw.tools.ide.os.SystemArchitecture;
6
import com.devonfw.tools.ide.repo.ToolRepository;
7
import com.devonfw.tools.ide.tool.GlobalToolCommandlet;
8
import com.devonfw.tools.ide.tool.PackageManager;
9
import com.devonfw.tools.ide.tool.PackageManagerCommand;
10
import com.devonfw.tools.ide.version.VersionIdentifier;
11

12
import java.util.ArrayList;
13
import java.util.Arrays;
14
import java.util.List;
15
import java.util.Set;
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
   * The constructor.
25
   *
26
   * @param context the {@link IdeContext}.
27
   */
28
  public Docker(IdeContext context) {
29

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

33
  @Override
34
  public boolean isExtract() {
35

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

43
  @Override
44
  protected boolean doInstall(boolean silent) {
45

46
    if (this.context.getSystemInfo().isLinux()) {
×
47
      return runWithPackageManager(silent, getPackageManagerCommandsInstall());
×
48
    } else {
49
      return super.doInstall(silent);
×
50
    }
51
  }
52

53
  private List<PackageManagerCommand> getPackageManagerCommandsInstall() {
54

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

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

72
    return pmCommands;
×
73
  }
74

75
  @Override
76
  public void uninstall() {
77

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

84
  }
×
85

86
  private List<PackageManagerCommand> getPackageManagerCommandsUninstall() {
87

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

94
    return pmCommands;
×
95
  }
96

97
  @Override
98
  protected String getBinaryName() {
99

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

108
  @Override
109
  public String getToolHelpArguments() {
110

111
    return "help";
×
112
  }
113
}
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

© 2025 Coveralls, Inc